+++ /dev/null
-These documentation pages include resources by third parties. This copyright
-file applies only to those resources. The following third party resources are
-included, and carry their own copyright notices and license terms:
-
-* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2,
- FiraSans-Regular.woff, FiraSans-Medium.woff):
-
- Copyright (c) 2014, Mozilla Foundation https://mozilla.org/
- with Reserved Font Name Fira Sans.
-
- Copyright (c) 2014, Telefonica S.A.
-
- Licensed under the SIL Open Font License, Version 1.1.
- See FiraSans-LICENSE.txt.
-
-* rustdoc.css, main.js, and playpen.js:
-
- Copyright 2015 The Rust Developers.
- Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or
- the MIT license (LICENSE-MIT.txt) at your option.
-
-* normalize.css:
-
- Copyright (c) Nicolas Gallagher and Jonathan Neal.
- Licensed under the MIT license (see LICENSE-MIT.txt).
-
-* Source Code Pro (SourceCodePro-Regular.ttf.woff2,
- SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2,
- SourceCodePro-Regular.ttf.woff, SourceCodePro-Semibold.ttf.woff,
- SourceCodePro-It.ttf.woff):
-
- Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/),
- with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark
- of Adobe Systems Incorporated in the United States and/or other countries.
-
- Licensed under the SIL Open Font License, Version 1.1.
- See SourceCodePro-LICENSE.txt.
-
-* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2,
- SourceSerif4-It.ttf.woff2, SourceSerif4-Regular.ttf.woff,
- SourceSerif4-Bold.ttf.woff, SourceSerif4-It.ttf.woff):
-
- Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name
- 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United
- States and/or other countries.
-
- Licensed under the SIL Open Font License, Version 1.1.
- See SourceSerif4-LICENSE.md.
-
-This copyright file is intended to be distributed with rustdoc output.
+++ /dev/null
-Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A.
-with Reserved Font Name < Fira >,
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+++ /dev/null
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+++ /dev/null
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+++ /dev/null
-Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/),
-
-with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic,
-NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen,
-Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco,
-NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic,
-Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+++ /dev/null
-Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-
-This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+++ /dev/null
-Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-
-This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+++ /dev/null
- body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#14191f;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 #24292f;}.sidebar{scrollbar-color:#5c6773 #24292f;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#14191f;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ffa0a5;}.content span.union,.content a.union{color:#ffa0a5;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#39AFD7;}.content span.primitive,.content a.primitive{color:#ffa0a5;}.content span.traitalias,.content a.traitalias{color:#39AFD7;}.content span.keyword,.content a.keyword{color:#39AFD7;}.content span.externcrate,.content span.mod,.content a.mod{color:#39AFD7;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#ffa0a5;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#39AFD7;}.content span.type,.content a.type,.block a.current.type{color:#39AFD7;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#39AFD7;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}.sidebar a{color:#53b1db;}.sidebar a.current.type{color:#53b1db;}.sidebar a.current.associatedtype{color:#53b1db;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#39AFD7;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.in-band a{color:#c5c5c5;}.search-results a{color:#0096cf;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search,.search-input{background-color:#141920;border-color:#424c57;color:#c5c5c5;}.search-input{color:#ffffff;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help span.bottom,#help span.top{border-color:#5c6773;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.typedef,.content a.typedef,.block a.current.typedef{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-associatedtype:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}.sidebar a.current.enum{}.sidebar a.current.struct{}.sidebar a.current.foreigntype{}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{}.sidebar a.current.union{}.sidebar a.current.constant .sidebar a.current.static{}.sidebar a.current.primitive{}.sidebar a.current.externcrate .sidebar a.current.mod{}.sidebar a.current.trait{}.sidebar a.current.traitalias{}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{}.sidebar a.current.keyword{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:##898989;}
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><meta name="keywords" content="rust, rustlang, rust-lang"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location">Crate bdk</h2></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><h1 class="fqn"><span class="in-band">List of all items</span></h1><h3 id="Structs">Structs</h3><ul class="structs docblock"><li><a href="struct.Balance.html">Balance</a></li><li><a href="struct.BlockTime.html">BlockTime</a></li><li><a href="struct.FeeRate.html">FeeRate</a></li><li><a href="struct.LocalUtxo.html">LocalUtxo</a></li><li><a href="struct.TransactionDetails.html">TransactionDetails</a></li><li><a href="struct.WeightedUtxo.html">WeightedUtxo</a></li><li><a href="blockchain/struct.EsploraBlockchain.html">blockchain::EsploraBlockchain</a></li><li><a href="blockchain/struct.LogProgress.html">blockchain::LogProgress</a></li><li><a href="blockchain/struct.NoopProgress.html">blockchain::NoopProgress</a></li><li><a href="blockchain/compact_filters/struct.BitcoinPeerConfig.html">blockchain::compact_filters::BitcoinPeerConfig</a></li><li><a href="blockchain/compact_filters/struct.CompactFiltersBlockchain.html">blockchain::compact_filters::CompactFiltersBlockchain</a></li><li><a href="blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html">blockchain::compact_filters::CompactFiltersBlockchainConfig</a></li><li><a href="blockchain/compact_filters/struct.Mempool.html">blockchain::compact_filters::Mempool</a></li><li><a href="blockchain/compact_filters/struct.Peer.html">blockchain::compact_filters::Peer</a></li><li><a href="blockchain/electrum/struct.ElectrumBlockchain.html">blockchain::electrum::ElectrumBlockchain</a></li><li><a href="blockchain/electrum/struct.ElectrumBlockchainConfig.html">blockchain::electrum::ElectrumBlockchainConfig</a></li><li><a href="blockchain/esplora/struct.EsploraBlockchain.html">blockchain::esplora::EsploraBlockchain</a></li><li><a href="blockchain/esplora/struct.EsploraBlockchainConfig.html">blockchain::esplora::EsploraBlockchainConfig</a></li><li><a href="blockchain/rpc/struct.RpcBlockchain.html">blockchain::rpc::RpcBlockchain</a></li><li><a href="blockchain/rpc/struct.RpcBlockchainFactory.html">blockchain::rpc::RpcBlockchainFactory</a></li><li><a href="blockchain/rpc/struct.RpcConfig.html">blockchain::rpc::RpcConfig</a></li><li><a href="blockchain/rpc/struct.RpcSyncParams.html">blockchain::rpc::RpcSyncParams</a></li><li><a href="database/struct.SqliteDatabase.html">database::SqliteDatabase</a></li><li><a href="database/struct.SyncTime.html">database::SyncTime</a></li><li><a href="database/any/struct.SledDbConfiguration.html">database::any::SledDbConfiguration</a></li><li><a href="database/any/struct.SqliteDbConfiguration.html">database::any::SqliteDbConfiguration</a></li><li><a href="database/memory/struct.MemoryDatabase.html">database::memory::MemoryDatabase</a></li><li><a href="descriptor/struct.DescriptorXKey.html">descriptor::DescriptorXKey</a></li><li><a href="descriptor/struct.Miniscript.html">descriptor::Miniscript</a></li><li><a href="descriptor/policy/struct.Condition.html">descriptor::policy::Condition</a></li><li><a href="descriptor/policy/struct.Policy.html">descriptor::policy::Policy</a></li><li><a href="descriptor/template/struct.Bip44.html">descriptor::template::Bip44</a></li><li><a href="descriptor/template/struct.Bip44Public.html">descriptor::template::Bip44Public</a></li><li><a href="descriptor/template/struct.Bip49.html">descriptor::template::Bip49</a></li><li><a href="descriptor/template/struct.Bip49Public.html">descriptor::template::Bip49Public</a></li><li><a href="descriptor/template/struct.Bip84.html">descriptor::template::Bip84</a></li><li><a href="descriptor/template/struct.Bip84Public.html">descriptor::template::Bip84Public</a></li><li><a href="descriptor/template/struct.P2Pkh.html">descriptor::template::P2Pkh</a></li><li><a href="descriptor/template/struct.P2Wpkh.html">descriptor::template::P2Wpkh</a></li><li><a href="descriptor/template/struct.P2Wpkh_P2Sh.html">descriptor::template::P2Wpkh_P2Sh</a></li><li><a href="keys/struct.GeneratedKey.html">keys::GeneratedKey</a></li><li><a href="keys/struct.PrivateKeyGenerateOptions.html">keys::PrivateKeyGenerateOptions</a></li><li><a href="keys/struct.SinglePriv.html">keys::SinglePriv</a></li><li><a href="keys/struct.SinglePub.html">keys::SinglePub</a></li><li><a href="keys/struct.SortedMultiVec.html">keys::SortedMultiVec</a></li><li><a href="keys/bip39/struct.Mnemonic.html">keys::bip39::Mnemonic</a></li><li><a href="wallet/struct.AddressInfo.html">wallet::AddressInfo</a></li><li><a href="wallet/struct.SyncOptions.html">wallet::SyncOptions</a></li><li><a href="wallet/struct.Wallet.html">wallet::Wallet</a></li><li><a href="wallet/coin_selection/struct.BranchAndBoundCoinSelection.html">wallet::coin_selection::BranchAndBoundCoinSelection</a></li><li><a href="wallet/coin_selection/struct.CoinSelectionResult.html">wallet::coin_selection::CoinSelectionResult</a></li><li><a href="wallet/coin_selection/struct.LargestFirstCoinSelection.html">wallet::coin_selection::LargestFirstCoinSelection</a></li><li><a href="wallet/coin_selection/struct.OldestFirstCoinSelection.html">wallet::coin_selection::OldestFirstCoinSelection</a></li><li><a href="wallet/export/struct.FullyNodedExport.html">wallet::export::FullyNodedExport</a></li><li><a href="wallet/hardwaresigner/struct.HWISigner.html">wallet::hardwaresigner::HWISigner</a></li><li><a href="wallet/signer/struct.SignOptions.html">wallet::signer::SignOptions</a></li><li><a href="wallet/signer/struct.SignerOrdering.html">wallet::signer::SignerOrdering</a></li><li><a href="wallet/signer/struct.SignerWrapper.html">wallet::signer::SignerWrapper</a></li><li><a href="wallet/signer/struct.SignersContainer.html">wallet::signer::SignersContainer</a></li><li><a href="wallet/tx_builder/struct.BumpFee.html">wallet::tx_builder::BumpFee</a></li><li><a href="wallet/tx_builder/struct.CreateTx.html">wallet::tx_builder::CreateTx</a></li><li><a href="wallet/tx_builder/struct.TxBuilder.html">wallet::tx_builder::TxBuilder</a></li></ul><h3 id="Enums">Enums</h3><ul class="enums docblock"><li><a href="enum.Error.html">Error</a></li><li><a href="enum.KeychainKind.html">KeychainKind</a></li><li><a href="enum.Utxo.html">Utxo</a></li><li><a href="blockchain/enum.Capability.html">blockchain::Capability</a></li><li><a href="blockchain/any/enum.AnyBlockchain.html">blockchain::any::AnyBlockchain</a></li><li><a href="blockchain/any/enum.AnyBlockchainConfig.html">blockchain::any::AnyBlockchainConfig</a></li><li><a href="blockchain/compact_filters/enum.CompactFiltersError.html">blockchain::compact_filters::CompactFiltersError</a></li><li><a href="blockchain/esplora/enum.EsploraError.html">blockchain::esplora::EsploraError</a></li><li><a href="blockchain/rpc/enum.Auth.html">blockchain::rpc::Auth</a></li><li><a href="database/any/enum.AnyBatch.html">database::any::AnyBatch</a></li><li><a href="database/any/enum.AnyDatabase.html">database::any::AnyDatabase</a></li><li><a href="database/any/enum.AnyDatabaseConfig.html">database::any::AnyDatabaseConfig</a></li><li><a href="descriptor/enum.Descriptor.html">descriptor::Descriptor</a></li><li><a href="descriptor/enum.DescriptorPublicKey.html">descriptor::DescriptorPublicKey</a></li><li><a href="descriptor/enum.Legacy.html">descriptor::Legacy</a></li><li><a href="descriptor/enum.Segwitv0.html">descriptor::Segwitv0</a></li><li><a href="descriptor/enum.Wildcard.html">descriptor::Wildcard</a></li><li><a href="descriptor/error/enum.Error.html">descriptor::error::Error</a></li><li><a href="descriptor/policy/enum.BuildSatisfaction.html">descriptor::policy::BuildSatisfaction</a></li><li><a href="descriptor/policy/enum.PkOrF.html">descriptor::policy::PkOrF</a></li><li><a href="descriptor/policy/enum.PolicyError.html">descriptor::policy::PolicyError</a></li><li><a href="descriptor/policy/enum.Satisfaction.html">descriptor::policy::Satisfaction</a></li><li><a href="descriptor/policy/enum.SatisfiableItem.html">descriptor::policy::SatisfiableItem</a></li><li><a href="keys/enum.DescriptorKey.html">keys::DescriptorKey</a></li><li><a href="keys/enum.DescriptorPublicKey.html">keys::DescriptorPublicKey</a></li><li><a href="keys/enum.DescriptorSecretKey.html">keys::DescriptorSecretKey</a></li><li><a href="keys/enum.ExtendedKey.html">keys::ExtendedKey</a></li><li><a href="keys/enum.KeyError.html">keys::KeyError</a></li><li><a href="keys/enum.ScriptContextEnum.html">keys::ScriptContextEnum</a></li><li><a href="keys/enum.SinglePubKey.html">keys::SinglePubKey</a></li><li><a href="keys/bip39/enum.Error.html">keys::bip39::Error</a></li><li><a href="keys/bip39/enum.Language.html">keys::bip39::Language</a></li><li><a href="keys/bip39/enum.WordCount.html">keys::bip39::WordCount</a></li><li><a href="wallet/enum.AddressIndex.html">wallet::AddressIndex</a></li><li><a href="wallet/coin_selection/enum.Excess.html">wallet::coin_selection::Excess</a></li><li><a href="wallet/signer/enum.SignerContext.html">wallet::signer::SignerContext</a></li><li><a href="wallet/signer/enum.SignerError.html">wallet::signer::SignerError</a></li><li><a href="wallet/signer/enum.SignerId.html">wallet::signer::SignerId</a></li><li><a href="wallet/signer/enum.TapLeavesOptions.html">wallet::signer::TapLeavesOptions</a></li><li><a href="wallet/tx_builder/enum.ChangeSpendPolicy.html">wallet::tx_builder::ChangeSpendPolicy</a></li><li><a href="wallet/tx_builder/enum.TxOrdering.html">wallet::tx_builder::TxOrdering</a></li><li><a href="wallet/verify/enum.VerifyError.html">wallet::verify::VerifyError</a></li></ul><h3 id="Traits">Traits</h3><ul class="traits docblock"><li><a href="trait.Vbytes.html">Vbytes</a></li><li><a href="blockchain/trait.Blockchain.html">blockchain::Blockchain</a></li><li><a href="blockchain/trait.BlockchainFactory.html">blockchain::BlockchainFactory</a></li><li><a href="blockchain/trait.ConfigurableBlockchain.html">blockchain::ConfigurableBlockchain</a></li><li><a href="blockchain/trait.GetBlockHash.html">blockchain::GetBlockHash</a></li><li><a href="blockchain/trait.GetHeight.html">blockchain::GetHeight</a></li><li><a href="blockchain/trait.GetTx.html">blockchain::GetTx</a></li><li><a href="blockchain/trait.Progress.html">blockchain::Progress</a></li><li><a href="blockchain/trait.StatelessBlockchain.html">blockchain::StatelessBlockchain</a></li><li><a href="blockchain/trait.WalletSync.html">blockchain::WalletSync</a></li><li><a href="database/trait.BatchDatabase.html">database::BatchDatabase</a></li><li><a href="database/trait.BatchOperations.html">database::BatchOperations</a></li><li><a href="database/trait.ConfigurableDatabase.html">database::ConfigurableDatabase</a></li><li><a href="database/trait.Database.html">database::Database</a></li><li><a href="descriptor/trait.ExtractPolicy.html">descriptor::ExtractPolicy</a></li><li><a href="descriptor/trait.IntoWalletDescriptor.html">descriptor::IntoWalletDescriptor</a></li><li><a href="descriptor/trait.ScriptContext.html">descriptor::ScriptContext</a></li><li><a href="descriptor/template/trait.DescriptorTemplate.html">descriptor::template::DescriptorTemplate</a></li><li><a href="keys/trait.DerivableKey.html">keys::DerivableKey</a></li><li><a href="keys/trait.ExtScriptContext.html">keys::ExtScriptContext</a></li><li><a href="keys/trait.GeneratableDefaultOptions.html">keys::GeneratableDefaultOptions</a></li><li><a href="keys/trait.GeneratableKey.html">keys::GeneratableKey</a></li><li><a href="keys/trait.IntoDescriptorKey.html">keys::IntoDescriptorKey</a></li><li><a href="keys/trait.ScriptContext.html">keys::ScriptContext</a></li><li><a href="psbt/trait.PsbtUtils.html">psbt::PsbtUtils</a></li><li><a href="wallet/trait.IsDust.html">wallet::IsDust</a></li><li><a href="wallet/coin_selection/trait.CoinSelectionAlgorithm.html">wallet::coin_selection::CoinSelectionAlgorithm</a></li><li><a href="wallet/signer/trait.InputSigner.html">wallet::signer::InputSigner</a></li><li><a href="wallet/signer/trait.SignerCommon.html">wallet::signer::SignerCommon</a></li><li><a href="wallet/signer/trait.TransactionSigner.html">wallet::signer::TransactionSigner</a></li><li><a href="wallet/tx_builder/trait.TxBuilderContext.html">wallet::tx_builder::TxBuilderContext</a></li></ul><h3 id="Macros">Macros</h3><ul class="macros docblock"><li><a href="macro.descriptor.html">descriptor</a></li><li><a href="macro.fragment.html">fragment</a></li></ul><h3 id="Functions">Functions</h3><ul class="functions docblock"><li><a href="blockchain/fn.log_progress.html">blockchain::log_progress</a></li><li><a href="blockchain/fn.noop_progress.html">blockchain::noop_progress</a></li><li><a href="blockchain/fn.progress.html">blockchain::progress</a></li><li><a href="descriptor/checksum/fn.calc_checksum.html">descriptor::checksum::calc_checksum</a></li><li><a href="descriptor/checksum/fn.calc_checksum_bytes.html">descriptor::checksum::calc_checksum_bytes</a></li><li><a href="descriptor/checksum/fn.get_checksum.html">descriptor::checksum::get_checksum</a></li><li><a href="descriptor/checksum/fn.get_checksum_bytes.html">descriptor::checksum::get_checksum_bytes</a></li><li><a href="keys/fn.any_network.html">keys::any_network</a></li><li><a href="keys/fn.mainnet_network.html">keys::mainnet_network</a></li><li><a href="keys/fn.merge_networks.html">keys::merge_networks</a></li><li><a href="keys/fn.test_networks.html">keys::test_networks</a></li><li><a href="fn.version.html">version</a></li><li><a href="wallet/coin_selection/fn.decide_change.html">wallet::coin_selection::decide_change</a></li><li><a href="wallet/fn.get_funded_wallet.html">wallet::get_funded_wallet</a></li><li><a href="wallet/time/fn.get_timestamp.html">wallet::time::get_timestamp</a></li><li><a href="wallet/verify/fn.verify_tx.html">wallet::verify::verify_tx</a></li><li><a href="wallet/fn.wallet_name_from_descriptor.html">wallet::wallet_name_from_descriptor</a></li></ul><h3 id="Typedefs">Typedefs</h3><ul class="typedefs docblock"><li><a href="type.ConfirmationTime.html">ConfirmationTime</a></li><li><a href="blockchain/type.ProgressData.html">blockchain::ProgressData</a></li><li><a href="descriptor/type.DerivedDescriptor.html">descriptor::DerivedDescriptor</a></li><li><a href="descriptor/type.ExtendedDescriptor.html">descriptor::ExtendedDescriptor</a></li><li><a href="descriptor/type.HdKeyPaths.html">descriptor::HdKeyPaths</a></li><li><a href="descriptor/type.KeyMap.html">descriptor::KeyMap</a></li><li><a href="descriptor/type.TapKeyOrigins.html">descriptor::TapKeyOrigins</a></li><li><a href="descriptor/policy/type.ConditionMap.html">descriptor::policy::ConditionMap</a></li><li><a href="descriptor/policy/type.FoldedConditionMap.html">descriptor::policy::FoldedConditionMap</a></li><li><a href="descriptor/template/type.DescriptorTemplateOut.html">descriptor::template::DescriptorTemplateOut</a></li><li><a href="keys/type.KeyMap.html">keys::KeyMap</a></li><li><a href="keys/type.ValidNetworks.html">keys::ValidNetworks</a></li><li><a href="keys/bip39/type.MnemonicWithPassphrase.html">keys::bip39::MnemonicWithPassphrase</a></li><li><a href="wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html">wallet::coin_selection::DefaultCoinSelectionAlgorithm</a></li><li><a href="wallet/export/type.WalletExport.html">wallet::export::WalletExport</a></li></ul></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><meta name="keywords" content="rust, rustlang, rust-lang"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location">Crate bdk</h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><h1 class="fqn">List of all items</h1><h3 id="structs">Structs</h3><ul class="all-items"><li><a href="struct.Balance.html">Balance</a></li><li><a href="struct.BlockTime.html">BlockTime</a></li><li><a href="struct.FeeRate.html">FeeRate</a></li><li><a href="struct.LocalUtxo.html">LocalUtxo</a></li><li><a href="struct.TransactionDetails.html">TransactionDetails</a></li><li><a href="struct.WeightedUtxo.html">WeightedUtxo</a></li><li><a href="blockchain/struct.EsploraBlockchain.html">blockchain::EsploraBlockchain</a></li><li><a href="blockchain/struct.LogProgress.html">blockchain::LogProgress</a></li><li><a href="blockchain/struct.NoopProgress.html">blockchain::NoopProgress</a></li><li><a href="blockchain/compact_filters/struct.BitcoinPeerConfig.html">blockchain::compact_filters::BitcoinPeerConfig</a></li><li><a href="blockchain/compact_filters/struct.CompactFiltersBlockchain.html">blockchain::compact_filters::CompactFiltersBlockchain</a></li><li><a href="blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html">blockchain::compact_filters::CompactFiltersBlockchainConfig</a></li><li><a href="blockchain/compact_filters/struct.Mempool.html">blockchain::compact_filters::Mempool</a></li><li><a href="blockchain/compact_filters/struct.Peer.html">blockchain::compact_filters::Peer</a></li><li><a href="blockchain/electrum/struct.ElectrumBlockchain.html">blockchain::electrum::ElectrumBlockchain</a></li><li><a href="blockchain/electrum/struct.ElectrumBlockchainConfig.html">blockchain::electrum::ElectrumBlockchainConfig</a></li><li><a href="blockchain/esplora/struct.EsploraBlockchain.html">blockchain::esplora::EsploraBlockchain</a></li><li><a href="blockchain/esplora/struct.EsploraBlockchainConfig.html">blockchain::esplora::EsploraBlockchainConfig</a></li><li><a href="blockchain/rpc/struct.RpcBlockchain.html">blockchain::rpc::RpcBlockchain</a></li><li><a href="blockchain/rpc/struct.RpcBlockchainFactory.html">blockchain::rpc::RpcBlockchainFactory</a></li><li><a href="blockchain/rpc/struct.RpcConfig.html">blockchain::rpc::RpcConfig</a></li><li><a href="blockchain/rpc/struct.RpcSyncParams.html">blockchain::rpc::RpcSyncParams</a></li><li><a href="database/struct.SqliteDatabase.html">database::SqliteDatabase</a></li><li><a href="database/struct.SyncTime.html">database::SyncTime</a></li><li><a href="database/any/struct.SledDbConfiguration.html">database::any::SledDbConfiguration</a></li><li><a href="database/any/struct.SqliteDbConfiguration.html">database::any::SqliteDbConfiguration</a></li><li><a href="database/memory/struct.MemoryDatabase.html">database::memory::MemoryDatabase</a></li><li><a href="descriptor/struct.DescriptorXKey.html">descriptor::DescriptorXKey</a></li><li><a href="descriptor/struct.Miniscript.html">descriptor::Miniscript</a></li><li><a href="descriptor/policy/struct.Condition.html">descriptor::policy::Condition</a></li><li><a href="descriptor/policy/struct.Policy.html">descriptor::policy::Policy</a></li><li><a href="descriptor/template/struct.Bip44.html">descriptor::template::Bip44</a></li><li><a href="descriptor/template/struct.Bip44Public.html">descriptor::template::Bip44Public</a></li><li><a href="descriptor/template/struct.Bip49.html">descriptor::template::Bip49</a></li><li><a href="descriptor/template/struct.Bip49Public.html">descriptor::template::Bip49Public</a></li><li><a href="descriptor/template/struct.Bip84.html">descriptor::template::Bip84</a></li><li><a href="descriptor/template/struct.Bip84Public.html">descriptor::template::Bip84Public</a></li><li><a href="descriptor/template/struct.P2Pkh.html">descriptor::template::P2Pkh</a></li><li><a href="descriptor/template/struct.P2Wpkh.html">descriptor::template::P2Wpkh</a></li><li><a href="descriptor/template/struct.P2Wpkh_P2Sh.html">descriptor::template::P2Wpkh_P2Sh</a></li><li><a href="keys/struct.GeneratedKey.html">keys::GeneratedKey</a></li><li><a href="keys/struct.PrivateKeyGenerateOptions.html">keys::PrivateKeyGenerateOptions</a></li><li><a href="keys/struct.SinglePriv.html">keys::SinglePriv</a></li><li><a href="keys/struct.SinglePub.html">keys::SinglePub</a></li><li><a href="keys/struct.SortedMultiVec.html">keys::SortedMultiVec</a></li><li><a href="keys/bip39/struct.Mnemonic.html">keys::bip39::Mnemonic</a></li><li><a href="wallet/struct.AddressInfo.html">wallet::AddressInfo</a></li><li><a href="wallet/struct.SyncOptions.html">wallet::SyncOptions</a></li><li><a href="wallet/struct.Wallet.html">wallet::Wallet</a></li><li><a href="wallet/coin_selection/struct.BranchAndBoundCoinSelection.html">wallet::coin_selection::BranchAndBoundCoinSelection</a></li><li><a href="wallet/coin_selection/struct.CoinSelectionResult.html">wallet::coin_selection::CoinSelectionResult</a></li><li><a href="wallet/coin_selection/struct.LargestFirstCoinSelection.html">wallet::coin_selection::LargestFirstCoinSelection</a></li><li><a href="wallet/coin_selection/struct.OldestFirstCoinSelection.html">wallet::coin_selection::OldestFirstCoinSelection</a></li><li><a href="wallet/export/struct.FullyNodedExport.html">wallet::export::FullyNodedExport</a></li><li><a href="wallet/hardwaresigner/struct.HWISigner.html">wallet::hardwaresigner::HWISigner</a></li><li><a href="wallet/signer/struct.SignOptions.html">wallet::signer::SignOptions</a></li><li><a href="wallet/signer/struct.SignerOrdering.html">wallet::signer::SignerOrdering</a></li><li><a href="wallet/signer/struct.SignerWrapper.html">wallet::signer::SignerWrapper</a></li><li><a href="wallet/signer/struct.SignersContainer.html">wallet::signer::SignersContainer</a></li><li><a href="wallet/tx_builder/struct.BumpFee.html">wallet::tx_builder::BumpFee</a></li><li><a href="wallet/tx_builder/struct.CreateTx.html">wallet::tx_builder::CreateTx</a></li><li><a href="wallet/tx_builder/struct.TxBuilder.html">wallet::tx_builder::TxBuilder</a></li></ul><h3 id="enums">Enums</h3><ul class="all-items"><li><a href="enum.Error.html">Error</a></li><li><a href="enum.KeychainKind.html">KeychainKind</a></li><li><a href="enum.Utxo.html">Utxo</a></li><li><a href="blockchain/enum.Capability.html">blockchain::Capability</a></li><li><a href="blockchain/any/enum.AnyBlockchain.html">blockchain::any::AnyBlockchain</a></li><li><a href="blockchain/any/enum.AnyBlockchainConfig.html">blockchain::any::AnyBlockchainConfig</a></li><li><a href="blockchain/compact_filters/enum.CompactFiltersError.html">blockchain::compact_filters::CompactFiltersError</a></li><li><a href="blockchain/esplora/enum.EsploraError.html">blockchain::esplora::EsploraError</a></li><li><a href="blockchain/rpc/enum.Auth.html">blockchain::rpc::Auth</a></li><li><a href="database/any/enum.AnyBatch.html">database::any::AnyBatch</a></li><li><a href="database/any/enum.AnyDatabase.html">database::any::AnyDatabase</a></li><li><a href="database/any/enum.AnyDatabaseConfig.html">database::any::AnyDatabaseConfig</a></li><li><a href="descriptor/enum.Descriptor.html">descriptor::Descriptor</a></li><li><a href="descriptor/enum.DescriptorPublicKey.html">descriptor::DescriptorPublicKey</a></li><li><a href="descriptor/enum.Legacy.html">descriptor::Legacy</a></li><li><a href="descriptor/enum.Segwitv0.html">descriptor::Segwitv0</a></li><li><a href="descriptor/enum.Wildcard.html">descriptor::Wildcard</a></li><li><a href="descriptor/error/enum.Error.html">descriptor::error::Error</a></li><li><a href="descriptor/policy/enum.BuildSatisfaction.html">descriptor::policy::BuildSatisfaction</a></li><li><a href="descriptor/policy/enum.PkOrF.html">descriptor::policy::PkOrF</a></li><li><a href="descriptor/policy/enum.PolicyError.html">descriptor::policy::PolicyError</a></li><li><a href="descriptor/policy/enum.Satisfaction.html">descriptor::policy::Satisfaction</a></li><li><a href="descriptor/policy/enum.SatisfiableItem.html">descriptor::policy::SatisfiableItem</a></li><li><a href="keys/enum.DescriptorKey.html">keys::DescriptorKey</a></li><li><a href="keys/enum.DescriptorPublicKey.html">keys::DescriptorPublicKey</a></li><li><a href="keys/enum.DescriptorSecretKey.html">keys::DescriptorSecretKey</a></li><li><a href="keys/enum.ExtendedKey.html">keys::ExtendedKey</a></li><li><a href="keys/enum.KeyError.html">keys::KeyError</a></li><li><a href="keys/enum.ScriptContextEnum.html">keys::ScriptContextEnum</a></li><li><a href="keys/enum.SinglePubKey.html">keys::SinglePubKey</a></li><li><a href="keys/bip39/enum.Error.html">keys::bip39::Error</a></li><li><a href="keys/bip39/enum.Language.html">keys::bip39::Language</a></li><li><a href="keys/bip39/enum.WordCount.html">keys::bip39::WordCount</a></li><li><a href="wallet/enum.AddressIndex.html">wallet::AddressIndex</a></li><li><a href="wallet/coin_selection/enum.Excess.html">wallet::coin_selection::Excess</a></li><li><a href="wallet/signer/enum.SignerContext.html">wallet::signer::SignerContext</a></li><li><a href="wallet/signer/enum.SignerError.html">wallet::signer::SignerError</a></li><li><a href="wallet/signer/enum.SignerId.html">wallet::signer::SignerId</a></li><li><a href="wallet/signer/enum.TapLeavesOptions.html">wallet::signer::TapLeavesOptions</a></li><li><a href="wallet/tx_builder/enum.ChangeSpendPolicy.html">wallet::tx_builder::ChangeSpendPolicy</a></li><li><a href="wallet/tx_builder/enum.TxOrdering.html">wallet::tx_builder::TxOrdering</a></li><li><a href="wallet/verify/enum.VerifyError.html">wallet::verify::VerifyError</a></li></ul><h3 id="traits">Traits</h3><ul class="all-items"><li><a href="trait.Vbytes.html">Vbytes</a></li><li><a href="blockchain/trait.Blockchain.html">blockchain::Blockchain</a></li><li><a href="blockchain/trait.BlockchainFactory.html">blockchain::BlockchainFactory</a></li><li><a href="blockchain/trait.ConfigurableBlockchain.html">blockchain::ConfigurableBlockchain</a></li><li><a href="blockchain/trait.GetBlockHash.html">blockchain::GetBlockHash</a></li><li><a href="blockchain/trait.GetHeight.html">blockchain::GetHeight</a></li><li><a href="blockchain/trait.GetTx.html">blockchain::GetTx</a></li><li><a href="blockchain/trait.Progress.html">blockchain::Progress</a></li><li><a href="blockchain/trait.StatelessBlockchain.html">blockchain::StatelessBlockchain</a></li><li><a href="blockchain/trait.WalletSync.html">blockchain::WalletSync</a></li><li><a href="database/trait.BatchDatabase.html">database::BatchDatabase</a></li><li><a href="database/trait.BatchOperations.html">database::BatchOperations</a></li><li><a href="database/trait.ConfigurableDatabase.html">database::ConfigurableDatabase</a></li><li><a href="database/trait.Database.html">database::Database</a></li><li><a href="descriptor/trait.ExtractPolicy.html">descriptor::ExtractPolicy</a></li><li><a href="descriptor/trait.IntoWalletDescriptor.html">descriptor::IntoWalletDescriptor</a></li><li><a href="descriptor/trait.ScriptContext.html">descriptor::ScriptContext</a></li><li><a href="descriptor/template/trait.DescriptorTemplate.html">descriptor::template::DescriptorTemplate</a></li><li><a href="keys/trait.DerivableKey.html">keys::DerivableKey</a></li><li><a href="keys/trait.ExtScriptContext.html">keys::ExtScriptContext</a></li><li><a href="keys/trait.GeneratableDefaultOptions.html">keys::GeneratableDefaultOptions</a></li><li><a href="keys/trait.GeneratableKey.html">keys::GeneratableKey</a></li><li><a href="keys/trait.IntoDescriptorKey.html">keys::IntoDescriptorKey</a></li><li><a href="keys/trait.ScriptContext.html">keys::ScriptContext</a></li><li><a href="psbt/trait.PsbtUtils.html">psbt::PsbtUtils</a></li><li><a href="wallet/trait.IsDust.html">wallet::IsDust</a></li><li><a href="wallet/coin_selection/trait.CoinSelectionAlgorithm.html">wallet::coin_selection::CoinSelectionAlgorithm</a></li><li><a href="wallet/signer/trait.InputSigner.html">wallet::signer::InputSigner</a></li><li><a href="wallet/signer/trait.SignerCommon.html">wallet::signer::SignerCommon</a></li><li><a href="wallet/signer/trait.TransactionSigner.html">wallet::signer::TransactionSigner</a></li><li><a href="wallet/tx_builder/trait.TxBuilderContext.html">wallet::tx_builder::TxBuilderContext</a></li></ul><h3 id="macros">Macros</h3><ul class="all-items"><li><a href="macro.descriptor.html">descriptor</a></li><li><a href="macro.fragment.html">fragment</a></li></ul><h3 id="functions">Functions</h3><ul class="all-items"><li><a href="blockchain/fn.log_progress.html">blockchain::log_progress</a></li><li><a href="blockchain/fn.noop_progress.html">blockchain::noop_progress</a></li><li><a href="blockchain/fn.progress.html">blockchain::progress</a></li><li><a href="descriptor/checksum/fn.calc_checksum.html">descriptor::checksum::calc_checksum</a></li><li><a href="descriptor/checksum/fn.calc_checksum_bytes.html">descriptor::checksum::calc_checksum_bytes</a></li><li><a href="descriptor/checksum/fn.get_checksum.html">descriptor::checksum::get_checksum</a></li><li><a href="descriptor/checksum/fn.get_checksum_bytes.html">descriptor::checksum::get_checksum_bytes</a></li><li><a href="keys/fn.any_network.html">keys::any_network</a></li><li><a href="keys/fn.mainnet_network.html">keys::mainnet_network</a></li><li><a href="keys/fn.merge_networks.html">keys::merge_networks</a></li><li><a href="keys/fn.test_networks.html">keys::test_networks</a></li><li><a href="fn.version.html">version</a></li><li><a href="wallet/coin_selection/fn.decide_change.html">wallet::coin_selection::decide_change</a></li><li><a href="wallet/fn.get_funded_wallet.html">wallet::get_funded_wallet</a></li><li><a href="wallet/time/fn.get_timestamp.html">wallet::time::get_timestamp</a></li><li><a href="wallet/verify/fn.verify_tx.html">wallet::verify::verify_tx</a></li><li><a href="wallet/fn.wallet_name_from_descriptor.html">wallet::wallet_name_from_descriptor</a></li></ul><h3 id="types">Type Definitions</h3><ul class="all-items"><li><a href="type.ConfirmationTime.html">ConfirmationTime</a></li><li><a href="blockchain/type.ProgressData.html">blockchain::ProgressData</a></li><li><a href="descriptor/type.DerivedDescriptor.html">descriptor::DerivedDescriptor</a></li><li><a href="descriptor/type.ExtendedDescriptor.html">descriptor::ExtendedDescriptor</a></li><li><a href="descriptor/type.HdKeyPaths.html">descriptor::HdKeyPaths</a></li><li><a href="descriptor/type.KeyMap.html">descriptor::KeyMap</a></li><li><a href="descriptor/type.TapKeyOrigins.html">descriptor::TapKeyOrigins</a></li><li><a href="descriptor/policy/type.ConditionMap.html">descriptor::policy::ConditionMap</a></li><li><a href="descriptor/policy/type.FoldedConditionMap.html">descriptor::policy::FoldedConditionMap</a></li><li><a href="descriptor/template/type.DescriptorTemplateOut.html">descriptor::template::DescriptorTemplateOut</a></li><li><a href="keys/type.KeyMap.html">keys::KeyMap</a></li><li><a href="keys/type.ValidNetworks.html">keys::ValidNetworks</a></li><li><a href="keys/bip39/type.MnemonicWithPassphrase.html">keys::bip39::MnemonicWithPassphrase</a></li><li><a href="wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html">wallet::coin_selection::DefaultCoinSelectionAlgorithm</a></li><li><a href="wallet/export/type.WalletExport.html">wallet::export::WalletExport</a></li></ul></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the [`Blockchain`] types defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyBlockchain"><title>AnyBlockchain in bdk::blockchain::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AnyBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.CompactFilters">CompactFilters</a><a href="#variant.Electrum">Electrum</a><a href="#variant.Esplora">Esplora</a><a href="#variant.Rpc">Rpc</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Blockchain">Blockchain</a><a href="#impl-ConfigurableBlockchain">ConfigurableBlockchain</a><a href="#impl-From%3CCompactFiltersBlockchain%3E">From<CompactFiltersBlockchain></a><a href="#impl-From%3CElectrumBlockchain%3E">From<ElectrumBlockchain></a><a href="#impl-From%3CEsploraBlockchain%3E">From<EsploraBlockchain></a><a href="#impl-From%3CRpcBlockchain%3E">From<RpcBlockchain></a><a href="#impl-GetBlockHash">GetBlockHash</a><a href="#impl-GetHeight">GetHeight</a><a href="#impl-GetTx">GetTx</a><a href="#impl-WalletSync">WalletSync</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="AnyBlockchain" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#75-92" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum AnyBlockchain {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the [`Blockchain`] types defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyBlockchain"><title>AnyBlockchain in bdk::blockchain::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AnyBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.CompactFilters">CompactFilters</a></li><li><a href="#variant.Electrum">Electrum</a></li><li><a href="#variant.Esplora">Esplora</a></li><li><a href="#variant.Rpc">Rpc</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-AnyBlockchain">Blockchain</a></li><li><a href="#impl-ConfigurableBlockchain-for-AnyBlockchain">ConfigurableBlockchain</a></li><li><a href="#impl-From%3CCompactFiltersBlockchain%3E-for-AnyBlockchain">From<CompactFiltersBlockchain></a></li><li><a href="#impl-From%3CElectrumBlockchain%3E-for-AnyBlockchain">From<ElectrumBlockchain></a></li><li><a href="#impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain">From<EsploraBlockchain></a></li><li><a href="#impl-From%3CRpcBlockchain%3E-for-AnyBlockchain">From<RpcBlockchain></a></li><li><a href="#impl-GetBlockHash-for-AnyBlockchain">GetBlockHash</a></li><li><a href="#impl-GetHeight-for-AnyBlockchain">GetHeight</a></li><li><a href="#impl-GetTx-for-AnyBlockchain">GetTx</a></li><li><a href="#impl-WalletSync-for-AnyBlockchain">WalletSync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AnyBlockchain">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-AnyBlockchain">Send</a></li><li><a href="#impl-Sync-for-AnyBlockchain">Sync</a></li><li><a href="#impl-Unpin-for-AnyBlockchain">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AnyBlockchain">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AnyBlockchain">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AnyBlockchain">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AnyBlockchain">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-AnyBlockchain">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AnyBlockchain">Into<U></a></li><li><a href="#impl-Pointable-for-AnyBlockchain">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AnyBlockchain">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AnyBlockchain">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AnyBlockchain">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#75-92">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum AnyBlockchain {
Electrum(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>>),
Esplora(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>>),
CompactFilters(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that can contain any of the <a href="../trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> types defined by the library</p>
<p>It allows switching backend at runtime</p>
<p>See <a href="index.html">this module</a>’s documentation for a usage example.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Electrum" class="variant small-section-header"><a href="#variant.Electrum" class="anchor field"></a><code>Electrum(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div><div class="docblock"><p>Electrum client</p>
-</div><h3 id="variant.Esplora" class="variant small-section-header"><a href="#variant.Esplora" class="anchor field"></a><code>Esplora(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div><div class="docblock"><p>Esplora client</p>
-</div><h3 id="variant.CompactFilters" class="variant small-section-header"><a href="#variant.CompactFilters" class="anchor field"></a><code>CompactFilters(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><div class="docblock"><p>Compact filters client</p>
-</div><h3 id="variant.Rpc" class="variant small-section-header"><a href="#variant.Rpc" class="anchor field"></a><code>Rpc(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><div class="docblock"><p>RPC client</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#95-107" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#96-98" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class='docblock'><p>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#100-102" title="goto source code">source</a></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#104-106" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#218-241" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#221-240" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CCompactFiltersBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#161" title="goto source code">source</a></div><a href="#impl-From%3CCompactFiltersBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#161" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CElectrumBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#159" title="goto source code">source</a></div><a href="#impl-From%3CElectrumBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#159" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CEsploraBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#160" title="goto source code">source</a></div><a href="#impl-From%3CEsploraBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#160" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CRpcBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#162" title="goto source code">source</a></div><a href="#impl-From%3CRpcBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#162" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#124-128" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#125-127" title="goto source code">source</a></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>fetch block hash given its height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#110-114" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#111-113" title="goto source code">source</a></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the current height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#117-121" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#118-120" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a transaction given its txid</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#131-157" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_sync" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#132-143" title="goto source code">source</a></div><a href="#method.wallet_sync" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#145-156" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Electrum" class="variant"><a href="#variant.Electrum" class="anchor">§</a><h3 class="code-header">Electrum(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span><div class="docblock"><p>Electrum client</p>
+</div><section id="variant.Esplora" class="variant"><a href="#variant.Esplora" class="anchor">§</a><h3 class="code-header">Esplora(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><div class="docblock"><p>Esplora client</p>
+</div><section id="variant.CompactFilters" class="variant"><a href="#variant.CompactFilters" class="anchor">§</a><h3 class="code-header">CompactFilters(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><div class="docblock"><p>Compact filters client</p>
+</div><section id="variant.Rpc" class="variant"><a href="#variant.Rpc" class="anchor">§</a><h3 class="code-header">Rpc(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="struct" href="../rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><div class="docblock"><p>RPC client</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Blockchain-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#95-107">source</a><a href="#impl-Blockchain-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#96-98">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class='docblock'>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#100-102">source</a><a href="#method.broadcast" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Broadcast a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#104-106">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableBlockchain-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#218-241">source</a><a href="#impl-ConfigurableBlockchain-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#221-240">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CCompactFiltersBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#161">source</a><a href="#impl-From%3CCompactFiltersBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#161">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CElectrumBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#159">source</a><a href="#impl-From%3CElectrumBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#159">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#160">source</a><a href="#impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#160">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CRpcBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#162">source</a><a href="#impl-From%3CRpcBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#162">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetBlockHash-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#124-128">source</a><a href="#impl-GetBlockHash-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#125-127">source</a><a href="#method.get_block_hash" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>fetch block hash given its height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetHeight-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#110-114">source</a><a href="#impl-GetHeight-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#111-113">source</a><a href="#method.get_height" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the current height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetTx-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#117-121">source</a><a href="#impl-GetTx-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#118-120">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a transaction given its txid</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-WalletSync-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#131-157">source</a><a href="#impl-WalletSync-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#132-143">source</a><a href="#method.wallet_sync" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#145-156">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-Send-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-Send-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-Sync-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-Sync-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-Unpin-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-Unpin-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-UnwindSafe-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-Pointable-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AnyBlockchain" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the blockchain configurations defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyBlockchainConfig"><title>AnyBlockchainConfig in bdk::blockchain::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AnyBlockchainConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.CompactFilters">CompactFilters</a><a href="#variant.Electrum">Electrum</a><a href="#variant.Esplora">Esplora</a><a href="#variant.Rpc">Rpc</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E">From<CompactFiltersBlockchainConfig></a><a href="#impl-From%3CElectrumBlockchainConfig%3E">From<ElectrumBlockchainConfig></a><a href="#impl-From%3CEsploraBlockchainConfig%3E">From<EsploraBlockchainConfig></a><a href="#impl-From%3CRpcConfig%3E">From<RpcConfig></a><a href="#impl-PartialEq%3CAnyBlockchainConfig%3E">PartialEq<AnyBlockchainConfig></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="AnyBlockchainConfig" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#199-216" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum AnyBlockchainConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the blockchain configurations defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyBlockchainConfig"><title>AnyBlockchainConfig in bdk::blockchain::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AnyBlockchainConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.CompactFilters">CompactFilters</a></li><li><a href="#variant.Electrum">Electrum</a></li><li><a href="#variant.Esplora">Esplora</a></li><li><a href="#variant.Rpc">Rpc</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-AnyBlockchainConfig">Clone</a></li><li><a href="#impl-Debug-for-AnyBlockchainConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-AnyBlockchainConfig">Deserialize<'de></a></li><li><a href="#impl-Eq-for-AnyBlockchainConfig">Eq</a></li><li><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E-for-AnyBlockchainConfig">From<CompactFiltersBlockchainConfig></a></li><li><a href="#impl-From%3CElectrumBlockchainConfig%3E-for-AnyBlockchainConfig">From<ElectrumBlockchainConfig></a></li><li><a href="#impl-From%3CEsploraBlockchainConfig%3E-for-AnyBlockchainConfig">From<EsploraBlockchainConfig></a></li><li><a href="#impl-From%3CRpcConfig%3E-for-AnyBlockchainConfig">From<RpcConfig></a></li><li><a href="#impl-PartialEq%3CAnyBlockchainConfig%3E-for-AnyBlockchainConfig">PartialEq<AnyBlockchainConfig></a></li><li><a href="#impl-Serialize-for-AnyBlockchainConfig">Serialize</a></li><li><a href="#impl-StructuralEq-for-AnyBlockchainConfig">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-AnyBlockchainConfig">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AnyBlockchainConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-AnyBlockchainConfig">Send</a></li><li><a href="#impl-Sync-for-AnyBlockchainConfig">Sync</a></li><li><a href="#impl-Unpin-for-AnyBlockchainConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AnyBlockchainConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AnyBlockchainConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AnyBlockchainConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AnyBlockchainConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-AnyBlockchainConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-AnyBlockchainConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AnyBlockchainConfig">Into<U></a></li><li><a href="#impl-Pointable-for-AnyBlockchainConfig">Pointable</a></li><li><a href="#impl-ToOwned-for-AnyBlockchainConfig">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AnyBlockchainConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AnyBlockchainConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AnyBlockchainConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#199-216">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum AnyBlockchainConfig {
Electrum(<a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>),
Esplora(<a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>),
CompactFilters(<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>),
will find this particularly useful.</p>
<p>This type can be serialized from a JSON object like:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::blockchain</span>::{<span class="ident">electrum::ElectrumBlockchainConfig</span>, <span class="ident">AnyBlockchainConfig</span>};
-<span class="kw">let</span> <span class="ident">config</span>: <span class="ident">AnyBlockchainConfig</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::blockchain::{electrum::ElectrumBlockchainConfig, AnyBlockchainConfig};
+<span class="kw">let </span>config: AnyBlockchainConfig = serde_json::from_str(
<span class="string">r#"{
"type" : "electrum",
"url" : "ssl://electrum.blockstream.info:50002",
"stop_gap": 20
}"#</span>,
)
-.<span class="ident">unwrap</span>();
+.unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">config</span>,
- <span class="ident">AnyBlockchainConfig::Electrum</span>(<span class="ident">ElectrumBlockchainConfig</span> {
- <span class="ident">url</span>: <span class="string">"ssl://electrum.blockstream.info:50002"</span>.<span class="ident">into</span>(),
- <span class="ident">retry</span>: <span class="number">2</span>,
- <span class="ident">socks5</span>: <span class="prelude-val">None</span>,
- <span class="ident">timeout</span>: <span class="prelude-val">None</span>,
- <span class="ident">stop_gap</span>: <span class="number">20</span>,
+ config,
+ AnyBlockchainConfig::Electrum(ElectrumBlockchainConfig {
+ url: <span class="string">"ssl://electrum.blockstream.info:50002"</span>.into(),
+ retry: <span class="number">2</span>,
+ socks5: <span class="prelude-val">None</span>,
+ timeout: <span class="prelude-val">None</span>,
+ stop_gap: <span class="number">20</span>,
})
);</code></pre></div>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Electrum" class="variant small-section-header"><a href="#variant.Electrum" class="anchor field"></a><code>Electrum(<a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div><div class="docblock"><p>Electrum client</p>
-</div><h3 id="variant.Esplora" class="variant small-section-header"><a href="#variant.Esplora" class="anchor field"></a><code>Esplora(<a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div><div class="docblock"><p>Esplora client</p>
-</div><h3 id="variant.CompactFilters" class="variant small-section-header"><a href="#variant.CompactFilters" class="anchor field"></a><code>CompactFilters(<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><div class="docblock"><p>Compact filters client</p>
-</div><h3 id="variant.Rpc" class="variant small-section-header"><a href="#variant.Rpc" class="anchor field"></a><code>Rpc(<a class="struct" href="../rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><div class="docblock"><p>RPC client configuration</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CCompactFiltersBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#245" title="goto source code">source</a></div><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#245" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CElectrumBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#243" title="goto source code">source</a></div><a href="#impl-From%3CElectrumBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#243" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CEsploraBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#244" title="goto source code">source</a></div><a href="#impl-From%3CEsploraBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#244" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CRpcConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#246" title="goto source code">source</a></div><a href="#impl-From%3CRpcConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#246" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CAnyBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-PartialEq%3CAnyBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#197" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Electrum" class="variant"><a href="#variant.Electrum" class="anchor">§</a><h3 class="code-header">Electrum(<a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span><div class="docblock"><p>Electrum client</p>
+</div><section id="variant.Esplora" class="variant"><a href="#variant.Esplora" class="anchor">§</a><h3 class="code-header">Esplora(<a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><div class="docblock"><p>Esplora client</p>
+</div><section id="variant.CompactFilters" class="variant"><a href="#variant.CompactFilters" class="anchor">§</a><h3 class="code-header">CompactFilters(<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><div class="docblock"><p>Compact filters client</p>
+</div><section id="variant.Rpc" class="variant"><a href="#variant.Rpc" class="anchor">§</a><h3 class="code-header">Rpc(<a class="struct" href="../rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><div class="docblock"><p>RPC client configuration</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-Clone-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-Debug-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-Deserialize%3C%27de%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CCompactFiltersBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#245">source</a><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#245">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CElectrumBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#243">source</a><a href="#impl-From%3CElectrumBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#243">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CEsploraBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#244">source</a><a href="#impl-From%3CEsploraBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#244">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CRpcConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#246">source</a><a href="#impl-From%3CRpcConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#246">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CAnyBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-PartialEq%3CAnyBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-Serialize-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-Eq-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section><section id="impl-StructuralEq-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-StructuralEq-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section><section id="impl-StructuralPartialEq-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#197">source</a><a href="#impl-StructuralPartialEq-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section><section id="impl-Send-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-Send-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section><section id="impl-Sync-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-Sync-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section><section id="impl-Unpin-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-Unpin-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section><section id="impl-UnwindSafe-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-Pointable-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Runtime-checked blockchain types"><meta name="keywords" content="rust, rustlang, rust-lang, any"><title>bdk::blockchain::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module any</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#enums">Enums</a></li></ul></div><div id="sidebar-vars" data-name="any" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">any</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#12-246" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Runtime-checked blockchain types</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Runtime-checked blockchain types"><meta name="keywords" content="rust, rustlang, rust-lang, any"><title>bdk::blockchain::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module any</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">any</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#12-246">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Runtime-checked blockchain types</p>
<p>This module provides the implementation of <a href="enum.AnyBlockchain.html" title="AnyBlockchain"><code>AnyBlockchain</code></a> which allows switching the
inner <a href="../trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> type at runtime.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>When paired with the use of <a href="../trait.ConfigurableBlockchain.html" title="ConfigurableBlockchain"><code>ConfigurableBlockchain</code></a>, it allows creating any
blockchain type supported using a single line of code:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(<span class="string">"..."</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">AnyBlockchain::from_config</span>(<span class="kw-2">&</span><span class="ident">config</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">height</span> <span class="op">=</span> <span class="ident">blockchain</span>.<span class="ident">get_height</span>();</code></pre></div>
-</div></details><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyBlockchain.html" title="bdk::blockchain::any::AnyBlockchain enum">AnyBlockchain</a></div><div class="item-right docblock-short"><p>Type that can contain any of the <a href="../trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> types defined by the library</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyBlockchainConfig.html" title="bdk::blockchain::any::AnyBlockchainConfig enum">AnyBlockchainConfig</a></div><div class="item-right docblock-short"><p>Type that can contain any of the blockchain configurations defined by the library</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>config = serde_json::from_str(<span class="string">"..."</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>blockchain = AnyBlockchain::from_config(<span class="kw-2">&</span>config)<span class="question-mark">?</span>;
+<span class="kw">let </span>height = blockchain.get_height();</code></pre></div>
+</div></details><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyBlockchain.html" title="bdk::blockchain::any::AnyBlockchain enum">AnyBlockchain</a></div><div class="item-right docblock-short">Type that can contain any of the <a href="../trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> types defined by the library</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyBlockchainConfig.html" title="bdk::blockchain::any::AnyBlockchainConfig enum">AnyBlockchainConfig</a></div><div class="item-right docblock-short">Type that can contain any of the blockchain configurations defined by the library</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["AnyBlockchain","Type that can contain any of the [`Blockchain`] types defined by the library"],["AnyBlockchainConfig","Type that can contain any of the blockchain configurations defined by the library"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["AnyBlockchain","Type that can contain any of the [`Blockchain`] types defined by the library"],["AnyBlockchainConfig","Type that can contain any of the blockchain configurations defined by the library"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An error that can occur during sync with a [`CompactFiltersBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, CompactFiltersError"><title>CompactFiltersError in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">CompactFiltersError</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Bip158">Bip158</a><a href="#variant.BlockHashNotFound">BlockHashNotFound</a><a href="#variant.DataCorruption">DataCorruption</a><a href="#variant.Db">Db</a><a href="#variant.Global">Global</a><a href="#variant.InvalidFilter">InvalidFilter</a><a href="#variant.InvalidFilterHeader">InvalidFilterHeader</a><a href="#variant.InvalidHeaders">InvalidHeaders</a><a href="#variant.InvalidResponse">InvalidResponse</a><a href="#variant.Io">Io</a><a href="#variant.MissingBlock">MissingBlock</a><a href="#variant.NoPeers">NoPeers</a><a href="#variant.NotConnected">NotConnected</a><a href="#variant.PeerBloomDisabled">PeerBloomDisabled</a><a href="#variant.Time">Time</a><a href="#variant.Timeout">Timeout</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Error">Error</a><a href="#impl-From%3CCompactFiltersError%3E">From<CompactFiltersError></a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CSystemTimeError%3E">From<SystemTimeError></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a></h2><div id="sidebar-vars" data-name="CompactFiltersError" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="enum" href="#">CompactFiltersError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#538-575" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum CompactFiltersError {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An error that can occur during sync with a [`CompactFiltersBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, CompactFiltersError"><title>CompactFiltersError in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">CompactFiltersError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Bip158">Bip158</a></li><li><a href="#variant.BlockHashNotFound">BlockHashNotFound</a></li><li><a href="#variant.DataCorruption">DataCorruption</a></li><li><a href="#variant.Db">Db</a></li><li><a href="#variant.Global">Global</a></li><li><a href="#variant.InvalidFilter">InvalidFilter</a></li><li><a href="#variant.InvalidFilterHeader">InvalidFilterHeader</a></li><li><a href="#variant.InvalidHeaders">InvalidHeaders</a></li><li><a href="#variant.InvalidResponse">InvalidResponse</a></li><li><a href="#variant.Io">Io</a></li><li><a href="#variant.MissingBlock">MissingBlock</a></li><li><a href="#variant.NoPeers">NoPeers</a></li><li><a href="#variant.NotConnected">NotConnected</a></li><li><a href="#variant.PeerBloomDisabled">PeerBloomDisabled</a></li><li><a href="#variant.Time">Time</a></li><li><a href="#variant.Timeout">Timeout</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-CompactFiltersError">Debug</a></li><li><a href="#impl-Display-for-CompactFiltersError">Display</a></li><li><a href="#impl-Error-for-CompactFiltersError">Error</a></li><li><a href="#impl-From%3CCompactFiltersError%3E-for-Error">From<CompactFiltersError></a></li><li><a href="#impl-From%3CError%3E-for-CompactFiltersError">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-CompactFiltersError-1">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-CompactFiltersError-2">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-CompactFiltersError-3">From<Error></a></li><li><a href="#impl-From%3CSystemTimeError%3E-for-CompactFiltersError">From<SystemTimeError></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CompactFiltersError">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-CompactFiltersError">Send</a></li><li><a href="#impl-Sync-for-CompactFiltersError">Sync</a></li><li><a href="#impl-Unpin-for-CompactFiltersError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CompactFiltersError">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-CompactFiltersError">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-CompactFiltersError">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-CompactFiltersError">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-CompactFiltersError">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-CompactFiltersError">Into<U></a></li><li><a href="#impl-Pointable-for-CompactFiltersError">Pointable</a></li><li><a href="#impl-Provider-for-CompactFiltersError">Provider</a></li><li><a href="#impl-ToString-for-CompactFiltersError">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-CompactFiltersError">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-CompactFiltersError">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-CompactFiltersError">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::compact_filters</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="enum" href="#">CompactFiltersError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#538-575">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum CompactFiltersError {
<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 16 variants</span></summary> InvalidResponse,
InvalidHeaders,
InvalidFilterHeader,
Bip158(Error),
Time(<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>),
Global(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>),
-</details>}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An error that can occur during sync with a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.InvalidResponse" class="variant small-section-header"><a href="#variant.InvalidResponse" class="anchor field"></a><code>InvalidResponse</code></h3><div class="docblock"><p>A peer sent an invalid or unexpected response</p>
-</div><h3 id="variant.InvalidHeaders" class="variant small-section-header"><a href="#variant.InvalidHeaders" class="anchor field"></a><code>InvalidHeaders</code></h3><div class="docblock"><p>The headers returned are invalid</p>
-</div><h3 id="variant.InvalidFilterHeader" class="variant small-section-header"><a href="#variant.InvalidFilterHeader" class="anchor field"></a><code>InvalidFilterHeader</code></h3><div class="docblock"><p>The compact filter headers returned are invalid</p>
-</div><h3 id="variant.InvalidFilter" class="variant small-section-header"><a href="#variant.InvalidFilter" class="anchor field"></a><code>InvalidFilter</code></h3><div class="docblock"><p>The compact filter returned is invalid</p>
-</div><h3 id="variant.MissingBlock" class="variant small-section-header"><a href="#variant.MissingBlock" class="anchor field"></a><code>MissingBlock</code></h3><div class="docblock"><p>The peer is missing a block in the valid chain</p>
-</div><h3 id="variant.BlockHashNotFound" class="variant small-section-header"><a href="#variant.BlockHashNotFound" class="anchor field"></a><code>BlockHashNotFound</code></h3><div class="docblock"><p>Block hash at specified height not found</p>
-</div><h3 id="variant.DataCorruption" class="variant small-section-header"><a href="#variant.DataCorruption" class="anchor field"></a><code>DataCorruption</code></h3><div class="docblock"><p>The data stored in the block filters storage are corrupted</p>
-</div><h3 id="variant.NotConnected" class="variant small-section-header"><a href="#variant.NotConnected" class="anchor field"></a><code>NotConnected</code></h3><div class="docblock"><p>A peer is not connected</p>
-</div><h3 id="variant.Timeout" class="variant small-section-header"><a href="#variant.Timeout" class="anchor field"></a><code>Timeout</code></h3><div class="docblock"><p>A peer took too long to reply to one of our messages</p>
-</div><h3 id="variant.PeerBloomDisabled" class="variant small-section-header"><a href="#variant.PeerBloomDisabled" class="anchor field"></a><code>PeerBloomDisabled</code></h3><div class="docblock"><p>The peer doesn’t advertise the <a href="bitcoin::network::constants::ServiceFlags::BLOOM"><code>BLOOM</code></a> service flag</p>
-</div><h3 id="variant.NoPeers" class="variant small-section-header"><a href="#variant.NoPeers" class="anchor field"></a><code>NoPeers</code></h3><div class="docblock"><p>No peers have been specified</p>
-</div><h3 id="variant.Db" class="variant small-section-header"><a href="#variant.Db" class="anchor field"></a><code>Db(Error)</code></h3><div class="docblock"><p>Internal database error</p>
-</div><h3 id="variant.Io" class="variant small-section-header"><a href="#variant.Io" class="anchor field"></a><code>Io(<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>)</code></h3><div class="docblock"><p>Internal I/O error</p>
-</div><h3 id="variant.Bip158" class="variant small-section-header"><a href="#variant.Bip158" class="anchor field"></a><code>Bip158(Error)</code></h3><div class="docblock"><p>Invalid BIP158 filter</p>
-</div><h3 id="variant.Time" class="variant small-section-header"><a href="#variant.Time" class="anchor field"></a><code>Time(<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>)</code></h3><div class="docblock"><p>Internal system time error</p>
-</div><h3 id="variant.Global" class="variant small-section-header"><a href="#variant.Global" class="anchor field"></a><code>Global(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>)</code></h3><div class="docblock"><p>Wrapper for <a href="../../enum.Error.html" title="crate::error::Error"><code>crate::error::Error</code></a></p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#537" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#537" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#577-581" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#578-580" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#583" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CCompactFiltersError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#226-233" title="goto source code">source</a></div><a href="#impl-From%3CCompactFiltersError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#227-232" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#585" title="goto source code">source</a></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#585" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#586" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#586" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#587" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#587" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#590-594" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-5" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#591-593" title="goto source code">source</a></div><a href="#method.from-5" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSystemTimeError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#588" title="goto source code">source</a></div><a href="#impl-From%3CSystemTimeError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#588" title="goto source code">source</a></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-6" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-6" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</details>}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An error that can occur during sync with a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.InvalidResponse" class="variant"><a href="#variant.InvalidResponse" class="anchor">§</a><h3 class="code-header">InvalidResponse</h3></section><div class="docblock"><p>A peer sent an invalid or unexpected response</p>
+</div><section id="variant.InvalidHeaders" class="variant"><a href="#variant.InvalidHeaders" class="anchor">§</a><h3 class="code-header">InvalidHeaders</h3></section><div class="docblock"><p>The headers returned are invalid</p>
+</div><section id="variant.InvalidFilterHeader" class="variant"><a href="#variant.InvalidFilterHeader" class="anchor">§</a><h3 class="code-header">InvalidFilterHeader</h3></section><div class="docblock"><p>The compact filter headers returned are invalid</p>
+</div><section id="variant.InvalidFilter" class="variant"><a href="#variant.InvalidFilter" class="anchor">§</a><h3 class="code-header">InvalidFilter</h3></section><div class="docblock"><p>The compact filter returned is invalid</p>
+</div><section id="variant.MissingBlock" class="variant"><a href="#variant.MissingBlock" class="anchor">§</a><h3 class="code-header">MissingBlock</h3></section><div class="docblock"><p>The peer is missing a block in the valid chain</p>
+</div><section id="variant.BlockHashNotFound" class="variant"><a href="#variant.BlockHashNotFound" class="anchor">§</a><h3 class="code-header">BlockHashNotFound</h3></section><div class="docblock"><p>Block hash at specified height not found</p>
+</div><section id="variant.DataCorruption" class="variant"><a href="#variant.DataCorruption" class="anchor">§</a><h3 class="code-header">DataCorruption</h3></section><div class="docblock"><p>The data stored in the block filters storage are corrupted</p>
+</div><section id="variant.NotConnected" class="variant"><a href="#variant.NotConnected" class="anchor">§</a><h3 class="code-header">NotConnected</h3></section><div class="docblock"><p>A peer is not connected</p>
+</div><section id="variant.Timeout" class="variant"><a href="#variant.Timeout" class="anchor">§</a><h3 class="code-header">Timeout</h3></section><div class="docblock"><p>A peer took too long to reply to one of our messages</p>
+</div><section id="variant.PeerBloomDisabled" class="variant"><a href="#variant.PeerBloomDisabled" class="anchor">§</a><h3 class="code-header">PeerBloomDisabled</h3></section><div class="docblock"><p>The peer doesn’t advertise the <a href="bitcoin::network::constants::ServiceFlags::BLOOM"><code>BLOOM</code></a> service flag</p>
+</div><section id="variant.NoPeers" class="variant"><a href="#variant.NoPeers" class="anchor">§</a><h3 class="code-header">NoPeers</h3></section><div class="docblock"><p>No peers have been specified</p>
+</div><section id="variant.Db" class="variant"><a href="#variant.Db" class="anchor">§</a><h3 class="code-header">Db(Error)</h3></section><div class="docblock"><p>Internal database error</p>
+</div><section id="variant.Io" class="variant"><a href="#variant.Io" class="anchor">§</a><h3 class="code-header">Io(<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>)</h3></section><div class="docblock"><p>Internal I/O error</p>
+</div><section id="variant.Bip158" class="variant"><a href="#variant.Bip158" class="anchor">§</a><h3 class="code-header">Bip158(Error)</h3></section><div class="docblock"><p>Invalid BIP158 filter</p>
+</div><section id="variant.Time" class="variant"><a href="#variant.Time" class="anchor">§</a><h3 class="code-header">Time(<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>)</h3></section><div class="docblock"><p>Internal system time error</p>
+</div><section id="variant.Global" class="variant"><a href="#variant.Global" class="anchor">§</a><h3 class="code-header">Global(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>)</h3></section><div class="docblock"><p>Wrapper for <a href="../../enum.Error.html" title="crate::error::Error"><code>crate::error::Error</code></a></p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#537">source</a><a href="#impl-Debug-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#537">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#577-581">source</a><a href="#impl-Display-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#578-580">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#583">source</a><a href="#impl-Error-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CCompactFiltersError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#226-233">source</a><a href="#impl-From%3CCompactFiltersError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#227-232">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#585">source</a><a href="#impl-From%3CError%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#585">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-CompactFiltersError-1" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#586">source</a><a href="#impl-From%3CError%3E-for-CompactFiltersError-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#586">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-CompactFiltersError-2" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#587">source</a><a href="#impl-From%3CError%3E-for-CompactFiltersError-2" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#587">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-CompactFiltersError-3" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#590-594">source</a><a href="#impl-From%3CError%3E-for-CompactFiltersError-3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-5" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#591-593">source</a><a href="#method.from-5" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSystemTimeError%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#588">source</a><a href="#impl-From%3CSystemTimeError%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#588">source</a><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html" title="struct std::time::SystemTimeError">SystemTimeError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section><section id="impl-Send-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-Send-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section><section id="impl-Sync-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-Sync-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section><section id="impl-Unpin-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-Unpin-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section><section id="impl-UnwindSafe-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-UnwindSafe-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-6" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-6" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-Pointable-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-CompactFiltersError" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compact Filters"><meta name="keywords" content="rust, rustlang, rust-lang, compact_filters"><title>bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module compact_filters</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><div id="sidebar-vars" data-name="compact_filters" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">compact_filters</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#12-594" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compact Filters</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compact Filters"><meta name="keywords" content="rust, rustlang, rust-lang, compact_filters"><title>bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module compact_filters</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">compact_filters</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#12-594">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compact Filters</p>
<p>This module contains a multithreaded implementation of an <a href="../trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> backend that
uses BIP157 (aka “Neutrino”) to populate the wallet’s <a href="../../database/trait.Database.html">database</a>
by downloading compact filters from the P2P network.</p>
connecting to a single peer at a time, optionally by opening multiple connections if it’s
desirable to use multiple threads at once to sync in parallel.</p>
<p>This is an <strong>EXPERIMENTAL</strong> feature, API and other major changes are expected.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">num_threads</span> <span class="op">=</span> <span class="number">4</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>num_threads = <span class="number">4</span>;
-<span class="kw">let</span> <span class="ident">mempool</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">Mempool::default</span>());
-<span class="kw">let</span> <span class="ident">peers</span> <span class="op">=</span> (<span class="number">0</span>..<span class="ident">num_threads</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> {
- <span class="ident">Peer::connect</span>(
+<span class="kw">let </span>mempool = Arc::new(Mempool::default());
+<span class="kw">let </span>peers = (<span class="number">0</span>..num_threads)
+ .map(|<span class="kw">_</span>| {
+ Peer::connect(
<span class="string">"btcd-mainnet.lightning.computer:8333"</span>,
- <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">mempool</span>),
- <span class="ident">Network::Bitcoin</span>,
+ Arc::clone(<span class="kw-2">&</span>mempool),
+ Network::Bitcoin,
)
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">CompactFiltersBlockchain::new</span>(<span class="ident">peers</span>, <span class="string">"./wallet-filters"</span>, <span class="prelude-val">Some</span>(<span class="number">500_000</span>))<span class="question-mark">?</span>;</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BitcoinPeerConfig.html" title="bdk::blockchain::compact_filters::BitcoinPeerConfig struct">BitcoinPeerConfig</a></div><div class="item-right docblock-short"><p>Data to connect to a Bitcoin P2P peer</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CompactFiltersBlockchain.html" title="bdk::blockchain::compact_filters::CompactFiltersBlockchain struct">CompactFiltersBlockchain</a></div><div class="item-right docblock-short"><p>Structure implementing the required blockchain traits</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig struct">CompactFiltersBlockchainConfig</a></div><div class="item-right docblock-short"><p>Configuration for a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Mempool.html" title="bdk::blockchain::compact_filters::Mempool struct">Mempool</a></div><div class="item-right docblock-short"><p>Container for unconfirmed, but valid Bitcoin transactions</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Peer.html" title="bdk::blockchain::compact_filters::Peer struct">Peer</a></div><div class="item-right docblock-short"><p>A Bitcoin peer</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.CompactFiltersError.html" title="bdk::blockchain::compact_filters::CompactFiltersError enum">CompactFiltersError</a></div><div class="item-right docblock-short"><p>An error that can occur during sync with a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+<span class="kw">let </span>blockchain = CompactFiltersBlockchain::new(peers, <span class="string">"./wallet-filters"</span>, <span class="prelude-val">Some</span>(<span class="number">500_000</span>))<span class="question-mark">?</span>;</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BitcoinPeerConfig.html" title="bdk::blockchain::compact_filters::BitcoinPeerConfig struct">BitcoinPeerConfig</a></div><div class="item-right docblock-short">Data to connect to a Bitcoin P2P peer</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CompactFiltersBlockchain.html" title="bdk::blockchain::compact_filters::CompactFiltersBlockchain struct">CompactFiltersBlockchain</a></div><div class="item-right docblock-short">Structure implementing the required blockchain traits</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig struct">CompactFiltersBlockchainConfig</a></div><div class="item-right docblock-short">Configuration for a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Mempool.html" title="bdk::blockchain::compact_filters::Mempool struct">Mempool</a></div><div class="item-right docblock-short">Container for unconfirmed, but valid Bitcoin transactions</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Peer.html" title="bdk::blockchain::compact_filters::Peer struct">Peer</a></div><div class="item-right docblock-short">A Bitcoin peer</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.CompactFiltersError.html" title="bdk::blockchain::compact_filters::CompactFiltersError enum">CompactFiltersError</a></div><div class="item-right docblock-short">An error that can occur during sync with a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["CompactFiltersError","An error that can occur during sync with a [`CompactFiltersBlockchain`]"]],"struct":[["BitcoinPeerConfig","Data to connect to a Bitcoin P2P peer"],["CompactFiltersBlockchain","Structure implementing the required blockchain traits"],["CompactFiltersBlockchainConfig","Configuration for a [`CompactFiltersBlockchain`]"],["Mempool","Container for unconfirmed, but valid Bitcoin transactions"],["Peer","A Bitcoin peer"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["CompactFiltersError","An error that can occur during sync with a [`CompactFiltersBlockchain`]"]],"struct":[["BitcoinPeerConfig","Data to connect to a Bitcoin P2P peer"],["CompactFiltersBlockchain","Structure implementing the required blockchain traits"],["CompactFiltersBlockchainConfig","Configuration for a [`CompactFiltersBlockchain`]"],["Mempool","Container for unconfirmed, but valid Bitcoin transactions"],["Peer","A Bitcoin peer"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Data to connect to a Bitcoin P2P peer"><meta name="keywords" content="rust, rustlang, rust-lang, BitcoinPeerConfig"><title>BitcoinPeerConfig in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BitcoinPeerConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.address">address</a><a href="#structfield.socks5">socks5</a><a href="#structfield.socks5_credentials">socks5_credentials</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CBitcoinPeerConfig%3E">PartialEq<BitcoinPeerConfig></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a></h2><div id="sidebar-vars" data-name="BitcoinPeerConfig" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">BitcoinPeerConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#483-490" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct BitcoinPeerConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Data to connect to a Bitcoin P2P peer"><meta name="keywords" content="rust, rustlang, rust-lang, BitcoinPeerConfig"><title>BitcoinPeerConfig in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BitcoinPeerConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.address">address</a></li><li><a href="#structfield.socks5">socks5</a></li><li><a href="#structfield.socks5_credentials">socks5_credentials</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-BitcoinPeerConfig">Clone</a></li><li><a href="#impl-Debug-for-BitcoinPeerConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-BitcoinPeerConfig">Deserialize<'de></a></li><li><a href="#impl-Eq-for-BitcoinPeerConfig">Eq</a></li><li><a href="#impl-PartialEq%3CBitcoinPeerConfig%3E-for-BitcoinPeerConfig">PartialEq<BitcoinPeerConfig></a></li><li><a href="#impl-Serialize-for-BitcoinPeerConfig">Serialize</a></li><li><a href="#impl-StructuralEq-for-BitcoinPeerConfig">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-BitcoinPeerConfig">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-BitcoinPeerConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-BitcoinPeerConfig">Send</a></li><li><a href="#impl-Sync-for-BitcoinPeerConfig">Sync</a></li><li><a href="#impl-Unpin-for-BitcoinPeerConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-BitcoinPeerConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-BitcoinPeerConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-BitcoinPeerConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-BitcoinPeerConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-BitcoinPeerConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-BitcoinPeerConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-BitcoinPeerConfig">Into<U></a></li><li><a href="#impl-Pointable-for-BitcoinPeerConfig">Pointable</a></li><li><a href="#impl-ToOwned-for-BitcoinPeerConfig">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-BitcoinPeerConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-BitcoinPeerConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-BitcoinPeerConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::compact_filters</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">BitcoinPeerConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#483-490">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct BitcoinPeerConfig {
pub address: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub socks5: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>,
- pub socks5_credentials: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Data to connect to a Bitcoin P2P peer</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.address" class="structfield small-section-header"><a href="#structfield.address" class="anchor field"></a><code>address: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Peer address such as 127.0.0.1:18333</p>
-</div><span id="structfield.socks5" class="structfield small-section-header"><a href="#structfield.socks5" class="anchor field"></a><code>socks5: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>Optional socks5 proxy</p>
-</div><span id="structfield.socks5_credentials" class="structfield small-section-header"><a href="#structfield.socks5_credentials" class="anchor field"></a><code>socks5_credentials: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>></code></span><div class="docblock"><p>Optional socks5 proxy credentials</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CBitcoinPeerConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-PartialEq%3CBitcoinPeerConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+ pub socks5_credentials: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)>,
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Data to connect to a Bitcoin P2P peer</p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.address" class="structfield small-section-header"><a href="#structfield.address" class="anchor field">§</a><code>address: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Peer address such as 127.0.0.1:18333</p>
+</div><span id="structfield.socks5" class="structfield small-section-header"><a href="#structfield.socks5" class="anchor field">§</a><code>socks5: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>Optional socks5 proxy</p>
+</div><span id="structfield.socks5_credentials" class="structfield small-section-header"><a href="#structfield.socks5_credentials" class="anchor field">§</a><code>socks5_credentials: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)></code></span><div class="docblock"><p>Optional socks5 proxy credentials</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-Clone-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-Debug-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-Deserialize%3C%27de%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CBitcoinPeerConfig%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-PartialEq%3CBitcoinPeerConfig%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-Serialize-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-Eq-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section><section id="impl-StructuralEq-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-StructuralEq-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section><section id="impl-StructuralPartialEq-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#482">source</a><a href="#impl-StructuralPartialEq-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section><section id="impl-Send-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-Send-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section><section id="impl-Sync-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-Sync-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section><section id="impl-Unpin-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-Unpin-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section><section id="impl-UnwindSafe-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-Pointable-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-BitcoinPeerConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-BitcoinPeerConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-BitcoinPeerConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure implementing the required blockchain traits"><meta name="keywords" content="rust, rustlang, rust-lang, CompactFiltersBlockchain"><title>CompactFiltersBlockchain in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">CompactFiltersBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Blockchain">Blockchain</a><a href="#impl-ConfigurableBlockchain">ConfigurableBlockchain</a><a href="#impl-Debug">Debug</a><a href="#impl-From%3CCompactFiltersBlockchain%3E">From<CompactFiltersBlockchain></a><a href="#impl-GetBlockHash">GetBlockHash</a><a href="#impl-GetHeight">GetHeight</a><a href="#impl-GetTx">GetTx</a><a href="#impl-WalletSync">WalletSync</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a></h2><div id="sidebar-vars" data-name="CompactFiltersBlockchain" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">CompactFiltersBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#91-95" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct CompactFiltersBlockchain { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure implementing the required blockchain traits</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure implementing the required blockchain traits"><meta name="keywords" content="rust, rustlang, rust-lang, CompactFiltersBlockchain"><title>CompactFiltersBlockchain in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">CompactFiltersBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-CompactFiltersBlockchain">Blockchain</a></li><li><a href="#impl-ConfigurableBlockchain-for-CompactFiltersBlockchain">ConfigurableBlockchain</a></li><li><a href="#impl-Debug-for-CompactFiltersBlockchain">Debug</a></li><li><a href="#impl-From%3CCompactFiltersBlockchain%3E-for-AnyBlockchain">From<CompactFiltersBlockchain></a></li><li><a href="#impl-GetBlockHash-for-CompactFiltersBlockchain">GetBlockHash</a></li><li><a href="#impl-GetHeight-for-CompactFiltersBlockchain">GetHeight</a></li><li><a href="#impl-GetTx-for-CompactFiltersBlockchain">GetTx</a></li><li><a href="#impl-WalletSync-for-CompactFiltersBlockchain">WalletSync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CompactFiltersBlockchain">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-CompactFiltersBlockchain">Send</a></li><li><a href="#impl-Sync-for-CompactFiltersBlockchain">Sync</a></li><li><a href="#impl-Unpin-for-CompactFiltersBlockchain">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CompactFiltersBlockchain">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-CompactFiltersBlockchain">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-CompactFiltersBlockchain">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-CompactFiltersBlockchain">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-CompactFiltersBlockchain">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-CompactFiltersBlockchain">Into<U></a></li><li><a href="#impl-Pointable-for-CompactFiltersBlockchain">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-CompactFiltersBlockchain">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-CompactFiltersBlockchain">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-CompactFiltersBlockchain">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::compact_filters</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">CompactFiltersBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#91-95">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct CompactFiltersBlockchain { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure implementing the required blockchain traits</p>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>See the <a href="index.html"><code>blockchain::compact_filters</code></a> module for a usage example.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#97-230" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#106-140" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a><P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>>>(<br> peers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a>>, <br> storage_dir: P, <br> skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></div></summary><div class="docblock"><p>Construct a new instance given a list of peers, a path to store headers and block
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#97-230">source</a><a href="#impl-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#106-140">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a><P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>>>(<br> peers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a>>,<br> storage_dir: P,<br> skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></section></summary><div class="docblock"><p>Construct a new instance given a list of peers, a path to store headers and block
filters downloaded during the sync and optionally a number of blocks to ignore starting
from the genesis while scanning for the wallet’s outputs.</p>
<p>For each <a href="struct.Peer.html" title="Peer"><code>Peer</code></a> specified a new thread will be spawned to download and verify the filters
in parallel. It’s currently recommended to only connect to a single peer to avoid
inconsistencies in the data returned, optionally with multiple connections in parallel to
speed-up the sync process.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#232-247" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#233-235" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class='docblock'><p>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#237-241" title="goto source code">source</a></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#243-246" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, _target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#505-534" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#508-533" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#90" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#90" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CCompactFiltersBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#161" title="goto source code">source</a></div><a href="#impl-From%3CCompactFiltersBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#161" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#263-271" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#264-270" title="goto source code">source</a></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>fetch block hash given its height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#249-253" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#250-252" title="goto source code">source</a></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the current height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#255-261" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#256-260" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a transaction given its txid</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#273-479" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#275-478" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_sync" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/mod.rs.html#157-163" title="goto source code">source</a></div><a href="#method.wallet_sync" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Blockchain-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#232-247">source</a><a href="#impl-Blockchain-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#233-235">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class='docblock'>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#237-241">source</a><a href="#method.broadcast" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Broadcast a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#243-246">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, _target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableBlockchain-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#505-534">source</a><a href="#impl-ConfigurableBlockchain-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#508-533">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#90">source</a><a href="#impl-Debug-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#90">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CCompactFiltersBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#161">source</a><a href="#impl-From%3CCompactFiltersBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#161">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetBlockHash-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#263-271">source</a><a href="#impl-GetBlockHash-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#264-270">source</a><a href="#method.get_block_hash" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>fetch block hash given its height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetHeight-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#249-253">source</a><a href="#impl-GetHeight-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#250-252">source</a><a href="#method.get_height" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the current height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetTx-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#255-261">source</a><a href="#impl-GetTx-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#256-260">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a transaction given its txid</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-WalletSync-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#273-479">source</a><a href="#impl-WalletSync-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#275-478">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/mod.rs.html#157-163">source</a><a href="#method.wallet_sync" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section><section id="impl-Send-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-Send-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section><section id="impl-Sync-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-Sync-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section><section id="impl-Unpin-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-Unpin-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section><section id="impl-UnwindSafe-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-UnwindSafe-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-Pointable-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-CompactFiltersBlockchain" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration for a [`CompactFiltersBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, CompactFiltersBlockchainConfig"><title>CompactFiltersBlockchainConfig in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">CompactFiltersBlockchainConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.network">network</a><a href="#structfield.peers">peers</a><a href="#structfield.skip_blocks">skip_blocks</a><a href="#structfield.storage_dir">storage_dir</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E">From<CompactFiltersBlockchainConfig></a><a href="#impl-PartialEq%3CCompactFiltersBlockchainConfig%3E">PartialEq<CompactFiltersBlockchainConfig></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a></h2><div id="sidebar-vars" data-name="CompactFiltersBlockchainConfig" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">CompactFiltersBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#494-503" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct CompactFiltersBlockchainConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration for a [`CompactFiltersBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, CompactFiltersBlockchainConfig"><title>CompactFiltersBlockchainConfig in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">CompactFiltersBlockchainConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.network">network</a></li><li><a href="#structfield.peers">peers</a></li><li><a href="#structfield.skip_blocks">skip_blocks</a></li><li><a href="#structfield.storage_dir">storage_dir</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-CompactFiltersBlockchainConfig">Clone</a></li><li><a href="#impl-Debug-for-CompactFiltersBlockchainConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-CompactFiltersBlockchainConfig">Deserialize<'de></a></li><li><a href="#impl-Eq-for-CompactFiltersBlockchainConfig">Eq</a></li><li><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E-for-AnyBlockchainConfig">From<CompactFiltersBlockchainConfig></a></li><li><a href="#impl-PartialEq%3CCompactFiltersBlockchainConfig%3E-for-CompactFiltersBlockchainConfig">PartialEq<CompactFiltersBlockchainConfig></a></li><li><a href="#impl-Serialize-for-CompactFiltersBlockchainConfig">Serialize</a></li><li><a href="#impl-StructuralEq-for-CompactFiltersBlockchainConfig">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-CompactFiltersBlockchainConfig">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CompactFiltersBlockchainConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CompactFiltersBlockchainConfig">Send</a></li><li><a href="#impl-Sync-for-CompactFiltersBlockchainConfig">Sync</a></li><li><a href="#impl-Unpin-for-CompactFiltersBlockchainConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CompactFiltersBlockchainConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-CompactFiltersBlockchainConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-CompactFiltersBlockchainConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-CompactFiltersBlockchainConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-CompactFiltersBlockchainConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-CompactFiltersBlockchainConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-CompactFiltersBlockchainConfig">Into<U></a></li><li><a href="#impl-Pointable-for-CompactFiltersBlockchainConfig">Pointable</a></li><li><a href="#impl-ToOwned-for-CompactFiltersBlockchainConfig">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-CompactFiltersBlockchainConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-CompactFiltersBlockchainConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-CompactFiltersBlockchainConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::compact_filters</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">CompactFiltersBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#494-503">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct CompactFiltersBlockchainConfig {
pub peers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>>,
pub network: Network,
pub storage_dir: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration for a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.peers" class="structfield small-section-header"><a href="#structfield.peers" class="anchor field"></a><code>peers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>></code></span><div class="docblock"><p>List of peers to try to connect to for asking headers and filters</p>
-</div><span id="structfield.network" class="structfield small-section-header"><a href="#structfield.network" class="anchor field"></a><code>network: Network</code></span><div class="docblock"><p>Network used</p>
-</div><span id="structfield.storage_dir" class="structfield small-section-header"><a href="#structfield.storage_dir" class="anchor field"></a><code>storage_dir: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Storage dir to save partially downloaded headers and full blocks. Should be a separate directory per descriptor. Consider using <a href="../../wallet/fn.wallet_name_from_descriptor.html" title="crate::wallet::wallet_name_from_descriptor">crate::wallet::wallet_name_from_descriptor</a> for this.</p>
-</div><span id="structfield.skip_blocks" class="structfield small-section-header"><a href="#structfield.skip_blocks" class="anchor field"></a><code>skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></code></span><div class="docblock"><p>Optionally skip initial <code>skip_blocks</code> blocks (default: 0)</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CCompactFiltersBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#245" title="goto source code">source</a></div><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#245" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CCompactFiltersBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-PartialEq%3CCompactFiltersBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration for a <a href="struct.CompactFiltersBlockchain.html" title="CompactFiltersBlockchain"><code>CompactFiltersBlockchain</code></a></p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.peers" class="structfield small-section-header"><a href="#structfield.peers" class="anchor field">§</a><code>peers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.BitcoinPeerConfig.html" title="struct bdk::blockchain::compact_filters::BitcoinPeerConfig">BitcoinPeerConfig</a>></code></span><div class="docblock"><p>List of peers to try to connect to for asking headers and filters</p>
+</div><span id="structfield.network" class="structfield small-section-header"><a href="#structfield.network" class="anchor field">§</a><code>network: Network</code></span><div class="docblock"><p>Network used</p>
+</div><span id="structfield.storage_dir" class="structfield small-section-header"><a href="#structfield.storage_dir" class="anchor field">§</a><code>storage_dir: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Storage dir to save partially downloaded headers and full blocks. Should be a separate directory per descriptor. Consider using <a href="../../wallet/fn.wallet_name_from_descriptor.html" title="crate::wallet::wallet_name_from_descriptor">crate::wallet::wallet_name_from_descriptor</a> for this.</p>
+</div><span id="structfield.skip_blocks" class="structfield small-section-header"><a href="#structfield.skip_blocks" class="anchor field">§</a><code>skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></code></span><div class="docblock"><p>Optionally skip initial <code>skip_blocks</code> blocks (default: 0)</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-Clone-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-Debug-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-Deserialize%3C%27de%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CCompactFiltersBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#245">source</a><a href="#impl-From%3CCompactFiltersBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#245">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CCompactFiltersBlockchainConfig%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-PartialEq%3CCompactFiltersBlockchainConfig%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-Serialize-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-Eq-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section><section id="impl-StructuralEq-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-StructuralEq-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section><section id="impl-StructuralPartialEq-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/mod.rs.html#493">source</a><a href="#impl-StructuralPartialEq-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section><section id="impl-Send-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-Send-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section><section id="impl-Sync-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-Sync-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section><section id="impl-Unpin-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-Unpin-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section><section id="impl-UnwindSafe-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-Pointable-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-CompactFiltersBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-CompactFiltersBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Container for unconfirmed, but valid Bitcoin transactions"><meta name="keywords" content="rust, rustlang, rust-lang, Mempool"><title>Mempool in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Mempool</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.add_tx">add_tx</a><a href="#method.get_tx">get_tx</a><a href="#method.has_tx">has_tx</a><a href="#method.iter_txs">iter_txs</a><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a></h2><div id="sidebar-vars" data-name="Mempool" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">Mempool</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#44" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Mempool(_);</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Container for unconfirmed, but valid Bitcoin transactions</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Container for unconfirmed, but valid Bitcoin transactions"><meta name="keywords" content="rust, rustlang, rust-lang, Mempool"><title>Mempool in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Mempool</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_tx">add_tx</a></li><li><a href="#method.get_tx">get_tx</a></li><li><a href="#method.has_tx">has_tx</a></li><li><a href="#method.iter_txs">iter_txs</a></li><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Mempool">Debug</a></li><li><a href="#impl-Default-for-Mempool">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Mempool">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Mempool">Send</a></li><li><a href="#impl-Sync-for-Mempool">Sync</a></li><li><a href="#impl-Unpin-for-Mempool">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Mempool">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Mempool">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Mempool">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Mempool">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Mempool">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Mempool">Into<U></a></li><li><a href="#impl-Pointable-for-Mempool">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Mempool">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Mempool">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Mempool">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::compact_filters</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">Mempool</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#44">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Mempool(_);</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Container for unconfirmed, but valid Bitcoin transactions</p>
<p>It is normally shared between <a href="struct.Peer.html" title="Peer"><code>Peer</code></a>s with the use of <a href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="Arc"><code>Arc</code></a>, so that transactions are not
duplicated in memory.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#58-112" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#60-62" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>() -> Self</h4></div></summary><div class="docblock"><p>Create a new empty mempool</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#68-73" title="goto source code">source</a></div><a href="#method.add_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_tx" class="fnname">add_tx</a>(&self, tx: Transaction)</h4></div></summary><div class="docblock"><p>Add a transaction to the mempool</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Mempool" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#58-112">source</a><a href="#impl-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#60-62">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>() -> Self</h4></section></summary><div class="docblock"><p>Create a new empty mempool</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_tx" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#68-73">source</a><h4 class="code-header">pub fn <a href="#method.add_tx" class="fn">add_tx</a>(&self, tx: Transaction)</h4></section></summary><div class="docblock"><p>Add a transaction to the mempool</p>
<p>Note that this doesn’t propagate the transaction to other
peers. To do that, <a href="../trait.Blockchain.html#tymethod.broadcast"><code>broadcast</code></a> should be used.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#76-101" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx" class="fnname">get_tx</a>(&self, inventory: &Inventory) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction></h4></div></summary><div class="docblock"><p>Look-up a transaction in the mempool given an [<code>Inventory</code>] request</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#104-106" title="goto source code">source</a></div><a href="#method.has_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_tx" class="fnname">has_tx</a>(&self, txid: &Txid) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Return whether or not the mempool contains a transaction with a given txid</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_txs" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#109-111" title="goto source code">source</a></div><a href="#method.iter_txs" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.iter_txs" class="fnname">iter_txs</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A></div><code class="content"><span class="where fmt-newline">impl<A> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A> <span class="where fmt-newline">where<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>, </span></span></code></span></div></span></span></h4></div></summary><div class="docblock"><p>Return the list of transactions contained in the mempool</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#76-101">source</a><h4 class="code-header">pub fn <a href="#method.get_tx" class="fn">get_tx</a>(&self, inventory: &Inventory) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction></h4></section></summary><div class="docblock"><p>Look-up a transaction in the mempool given an [<code>Inventory</code>] request</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_tx" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#104-106">source</a><h4 class="code-header">pub fn <a href="#method.has_tx" class="fn">has_tx</a>(&self, txid: &Txid) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return whether or not the mempool contains a transaction with a given txid</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_txs" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#109-111">source</a><h4 class="code-header">pub fn <a href="#method.iter_txs" class="fn">iter_txs</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction> <a href="#" class="notable-traits" data-ty="Vec<Transaction>">ⓘ</a></h4></section></summary><div class="docblock"><p>Return the list of transactions contained in the mempool</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43">source</a><a href="#impl-Debug-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43">source</a><a href="#impl-Default-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#43">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Mempool" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section><section id="impl-Send-for-Mempool" class="impl has-srclink"><a href="#impl-Send-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section><section id="impl-Sync-for-Mempool" class="impl has-srclink"><a href="#impl-Sync-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section><section id="impl-Unpin-for-Mempool" class="impl has-srclink"><a href="#impl-Unpin-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section><section id="impl-UnwindSafe-for-Mempool" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Mempool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Mempool" class="impl has-srclink"><a href="#impl-Pointable-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Mempool" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Mempool" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Mempool" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div><script type="text/json" id="notable-traits-data">{"Vec<Transaction>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A></code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl<A> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A><span class=\"where fmt-newline\">where<br> A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</span></span>"}</script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A Bitcoin peer"><meta name="keywords" content="rust, rustlang, rust-lang, Peer"><title>Peer in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Peer</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.connect">connect</a><a href="#method.connect_proxy">connect_proxy</a><a href="#method.get_mempool">get_mempool</a><a href="#method.get_network">get_network</a><a href="#method.get_version">get_version</a><a href="#method.is_connected">is_connected</a><a href="#method.recv">recv</a><a href="#method.send">send</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a></h2><div id="sidebar-vars" data-name="Peer" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">Peer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#117-128" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Peer { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A Bitcoin peer</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#130-410" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.connect" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#135-143" title="goto source code">source</a></div><a href="#method.connect" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.connect" class="fnname">connect</a><A: <a class="trait" href="https://doc.rust-lang.org/nightly/std/net/addr/trait.ToSocketAddrs.html" title="trait std::net::addr::ToSocketAddrs">ToSocketAddrs</a>>(<br> address: A, <br> mempool: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a>>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></div></summary><div class="docblock"><p>Connect to a peer over a plaintext TCP connection</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A Bitcoin peer"><meta name="keywords" content="rust, rustlang, rust-lang, Peer"><title>Peer in bdk::blockchain::compact_filters - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Peer</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.connect">connect</a></li><li><a href="#method.connect_proxy">connect_proxy</a></li><li><a href="#method.get_mempool">get_mempool</a></li><li><a href="#method.get_network">get_network</a></li><li><a href="#method.get_version">get_version</a></li><li><a href="#method.is_connected">is_connected</a></li><li><a href="#method.recv">recv</a></li><li><a href="#method.send">send</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Peer">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Peer">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Peer">Send</a></li><li><a href="#impl-Sync-for-Peer">Sync</a></li><li><a href="#impl-Unpin-for-Peer">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Peer">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Peer">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Peer">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Peer">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Peer">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Peer">Into<U></a></li><li><a href="#impl-Pointable-for-Peer">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Peer">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Peer">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Peer">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::compact_filters</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">compact_filters</a>::<wbr><a class="struct" href="#">Peer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#117-128">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Peer { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A Bitcoin peer</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Peer" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#130-410">source</a><a href="#impl-Peer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.connect" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#135-143">source</a><h4 class="code-header">pub fn <a href="#method.connect" class="fn">connect</a><A: <a class="trait" href="https://doc.rust-lang.org/nightly/std/net/socket_addr/trait.ToSocketAddrs.html" title="trait std::net::socket_addr::ToSocketAddrs">ToSocketAddrs</a>>(<br> address: A,<br> mempool: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a>>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></section></summary><div class="docblock"><p>Connect to a peer over a plaintext TCP connection</p>
<p>This function internally spawns a new thread that will monitor incoming messages from the
peer, and optionally reply to some of them transparently, like <a href="bitcoin::network::message::NetworkMessage::Ping">pings</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.connect_proxy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#150-164" title="goto source code">source</a></div><a href="#method.connect_proxy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.connect_proxy" class="fnname">connect_proxy</a><T: <a class="trait" href="https://docs.rs/socks/0.3.0/socks/trait.ToTargetAddr.html" title="trait socks::ToTargetAddr">ToTargetAddr</a>, P: <a class="trait" href="https://doc.rust-lang.org/nightly/std/net/addr/trait.ToSocketAddrs.html" title="trait std::net::addr::ToSocketAddrs">ToSocketAddrs</a>>(<br> target: T, <br> proxy: P, <br> credentials: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>&<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <br> mempool: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a>>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></div></summary><div class="docblock"><p>Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.connect_proxy" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#150-164">source</a><h4 class="code-header">pub fn <a href="#method.connect_proxy" class="fn">connect_proxy</a><T: <a class="trait" href="https://docs.rs/socks/0.3.0/socks/trait.ToTargetAddr.html" title="trait socks::ToTargetAddr">ToTargetAddr</a>, P: <a class="trait" href="https://doc.rust-lang.org/nightly/std/net/socket_addr/trait.ToSocketAddrs.html" title="trait std::net::socket_addr::ToSocketAddrs">ToSocketAddrs</a>>(<br> target: T,<br> proxy: P,<br> credentials: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(&<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>)>,<br> mempool: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a>>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></section></summary><div class="docblock"><p>Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified
as a tuple of <code>(username, password)</code></p>
<p>This function internally spawns a new thread that will monitor incoming messages from the
peer, and optionally reply to some of them transparently, like <a href="NetworkMessage::Ping">pings</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_version" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#291-293" title="goto source code">source</a></div><a href="#method.get_version" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_version" class="fnname">get_version</a>(&self) -> &VersionMessage</h4></div></summary><div class="docblock"><p>Return the [<code>VersionMessage</code>] sent by the peer</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_network" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#296-298" title="goto source code">source</a></div><a href="#method.get_network" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_network" class="fnname">get_network</a>(&self) -> Network</h4></div></summary><div class="docblock"><p>Return the Bitcoin [<code>Network</code>] in use</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_mempool" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#301-303" title="goto source code">source</a></div><a href="#method.get_mempool" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_mempool" class="fnname">get_mempool</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a>></h4></div></summary><div class="docblock"><p>Return the mempool used by this peer</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_connected" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#306-308" title="goto source code">source</a></div><a href="#method.is_connected" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_connected" class="fnname">is_connected</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Return whether or not the peer is still connected</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.send" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#397-400" title="goto source code">source</a></div><a href="#method.send" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.send" class="fnname">send</a>(&self, payload: NetworkMessage) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></div></summary><div class="docblock"><p>Send a raw Bitcoin message to the peer</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.recv" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#403-409" title="goto source code">source</a></div><a href="#method.recv" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.recv" class="fnname">recv</a>(<br> &self, <br> wait_for: &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><NetworkMessage>, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></div></summary><div class="docblock"><p>Waits for a specific incoming Bitcoin message, optionally with a timeout</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#115" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#115" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_version" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#291-293">source</a><h4 class="code-header">pub fn <a href="#method.get_version" class="fn">get_version</a>(&self) -> &VersionMessage</h4></section></summary><div class="docblock"><p>Return the [<code>VersionMessage</code>] sent by the peer</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_network" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#296-298">source</a><h4 class="code-header">pub fn <a href="#method.get_network" class="fn">get_network</a>(&self) -> Network</h4></section></summary><div class="docblock"><p>Return the Bitcoin [<code>Network</code>] in use</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_mempool" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#301-303">source</a><h4 class="code-header">pub fn <a href="#method.get_mempool" class="fn">get_mempool</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="struct.Mempool.html" title="struct bdk::blockchain::compact_filters::Mempool">Mempool</a>></h4></section></summary><div class="docblock"><p>Return the mempool used by this peer</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_connected" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#306-308">source</a><h4 class="code-header">pub fn <a href="#method.is_connected" class="fn">is_connected</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return whether or not the peer is still connected</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.send" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#397-400">source</a><h4 class="code-header">pub fn <a href="#method.send" class="fn">send</a>(&self, payload: NetworkMessage) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></section></summary><div class="docblock"><p>Send a raw Bitcoin message to the peer</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.recv" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#403-409">source</a><h4 class="code-header">pub fn <a href="#method.recv" class="fn">recv</a>(<br> &self,<br> wait_for: &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><NetworkMessage>, <a class="enum" href="enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>></h4></section></summary><div class="docblock"><p>Waits for a specific incoming Bitcoin message, optionally with a timeout</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#115">source</a><a href="#impl-Debug-for-Peer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/compact_filters/peer.rs.html#115">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Peer" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Peer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section><section id="impl-Send-for-Peer" class="impl has-srclink"><a href="#impl-Send-for-Peer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section><section id="impl-Sync-for-Peer" class="impl has-srclink"><a href="#impl-Sync-for-Peer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section><section id="impl-Unpin-for-Peer" class="impl has-srclink"><a href="#impl-Unpin-for-Peer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section><section id="impl-UnwindSafe-for-Peer" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Peer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Peer.html" title="struct bdk::blockchain::compact_filters::Peer">Peer</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Peer" class="impl has-srclink"><a href="#impl-Pointable-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Peer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Peer" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Peer" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Electrum"><meta name="keywords" content="rust, rustlang, rust-lang, electrum"><title>bdk::blockchain::electrum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module electrum</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li></ul></div><div id="sidebar-vars" data-name="electrum" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">electrum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#12-424" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Electrum</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Electrum"><meta name="keywords" content="rust, rustlang, rust-lang, electrum"><title>bdk::blockchain::electrum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module electrum</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">electrum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#12-424">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Electrum</p>
<p>This module defines a <a href="../trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> struct that wraps an [<code>electrum_client::Client</code>]
and implements the logic required to populate the wallet’s <a href="../../database/trait.Database.html">database</a> by
querying the inner client.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">electrum_client::Client::new</span>(<span class="string">"ssl://electrum.blockstream.info:50002"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">ElectrumBlockchain::from</span>(<span class="ident">client</span>);</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.ElectrumBlockchain.html" title="bdk::blockchain::electrum::ElectrumBlockchain struct">ElectrumBlockchain</a></div><div class="item-right docblock-short"><p>Wrapper over an Electrum Client that implements the required blockchain traits</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.ElectrumBlockchainConfig.html" title="bdk::blockchain::electrum::ElectrumBlockchainConfig struct">ElectrumBlockchainConfig</a></div><div class="item-right docblock-short"><p>Configuration for an <a href="struct.ElectrumBlockchain.html" title="ElectrumBlockchain"><code>ElectrumBlockchain</code></a></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>client = electrum_client::Client::new(<span class="string">"ssl://electrum.blockstream.info:50002"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>blockchain = ElectrumBlockchain::from(client);</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.ElectrumBlockchain.html" title="bdk::blockchain::electrum::ElectrumBlockchain struct">ElectrumBlockchain</a></div><div class="item-right docblock-short">Wrapper over an Electrum Client that implements the required blockchain traits</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.ElectrumBlockchainConfig.html" title="bdk::blockchain::electrum::ElectrumBlockchainConfig struct">ElectrumBlockchainConfig</a></div><div class="item-right docblock-short">Configuration for an <a href="struct.ElectrumBlockchain.html" title="ElectrumBlockchain"><code>ElectrumBlockchain</code></a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"struct":[["ElectrumBlockchain","Wrapper over an Electrum Client that implements the required blockchain traits"],["ElectrumBlockchainConfig","Configuration for an [`ElectrumBlockchain`]"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":[["ElectrumBlockchain","Wrapper over an Electrum Client that implements the required blockchain traits"],["ElectrumBlockchainConfig","Configuration for an [`ElectrumBlockchain`]"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wrapper over an Electrum Client that implements the required blockchain traits"><meta name="keywords" content="rust, rustlang, rust-lang, ElectrumBlockchain"><title>ElectrumBlockchain in bdk::blockchain::electrum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ElectrumBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Blockchain">Blockchain</a><a href="#impl-ConfigurableBlockchain">ConfigurableBlockchain</a><a href="#impl-Deref">Deref</a><a href="#impl-From%3CClient%3E">From<Client></a><a href="#impl-From%3CElectrumBlockchain%3E">From<ElectrumBlockchain></a><a href="#impl-GetBlockHash">GetBlockHash</a><a href="#impl-GetHeight">GetHeight</a><a href="#impl-GetTx">GetTx</a><a href="#impl-StatelessBlockchain">StatelessBlockchain</a><a href="#impl-WalletSync">WalletSync</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">electrum</a></h2><div id="sidebar-vars" data-name="ElectrumBlockchain" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">electrum</a>::<wbr><a class="struct" href="#">ElectrumBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#47-50" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct ElectrumBlockchain { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wrapper over an Electrum Client that implements the required blockchain traits</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wrapper over an Electrum Client that implements the required blockchain traits"><meta name="keywords" content="rust, rustlang, rust-lang, ElectrumBlockchain"><title>ElectrumBlockchain in bdk::blockchain::electrum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ElectrumBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-ElectrumBlockchain">Blockchain</a></li><li><a href="#impl-ConfigurableBlockchain-for-ElectrumBlockchain">ConfigurableBlockchain</a></li><li><a href="#impl-Deref-for-ElectrumBlockchain">Deref</a></li><li><a href="#impl-From%3CClient%3E-for-ElectrumBlockchain">From<Client></a></li><li><a href="#impl-From%3CElectrumBlockchain%3E-for-AnyBlockchain">From<ElectrumBlockchain></a></li><li><a href="#impl-GetBlockHash-for-ElectrumBlockchain">GetBlockHash</a></li><li><a href="#impl-GetHeight-for-ElectrumBlockchain">GetHeight</a></li><li><a href="#impl-GetTx-for-ElectrumBlockchain">GetTx</a></li><li><a href="#impl-StatelessBlockchain-for-ElectrumBlockchain">StatelessBlockchain</a></li><li><a href="#impl-WalletSync-for-ElectrumBlockchain">WalletSync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ElectrumBlockchain">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ElectrumBlockchain">Send</a></li><li><a href="#impl-Sync-for-ElectrumBlockchain">Sync</a></li><li><a href="#impl-Unpin-for-ElectrumBlockchain">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ElectrumBlockchain">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ElectrumBlockchain">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ElectrumBlockchain">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ElectrumBlockchain">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-ElectrumBlockchain">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-ElectrumBlockchain">Into<U></a></li><li><a href="#impl-Pointable-for-ElectrumBlockchain">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ElectrumBlockchain">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-ElectrumBlockchain">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-ElectrumBlockchain">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::electrum</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">electrum</a>::<wbr><a class="struct" href="#">ElectrumBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#47-50">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct ElectrumBlockchain { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wrapper over an Electrum Client that implements the required blockchain traits</p>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>See the <a href="index.html"><code>blockchain::electrum</code></a> module for a usage example.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#61-81" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#62-70" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class='docblock'><p>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#72-74" title="goto source code">source</a></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#76-80" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#315-331" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#318-330" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#83-89" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = Client</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#86-88" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CClient%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#52-59" title="goto source code">source</a></div><a href="#impl-From%3CClient%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Client> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#53-58" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(client: Client) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CElectrumBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#159" title="goto source code">source</a></div><a href="#impl-From%3CElectrumBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#159" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#110-115" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#111-114" title="goto source code">source</a></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>fetch block hash given its height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#93-102" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#94-101" title="goto source code">source</a></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the current height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#104-108" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#105-107" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a transaction given its txid</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#117-251" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#118-250" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> _progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_sync" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/mod.rs.html#157-163" title="goto source code">source</a></div><a href="#method.wallet_sync" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></p>
-</div></details></div></details><div id="impl-StatelessBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#91" title="goto source code">source</a></div><a href="#impl-StatelessBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Blockchain-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#61-81">source</a><a href="#impl-Blockchain-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#62-70">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class='docblock'>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#72-74">source</a><a href="#method.broadcast" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Broadcast a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#76-80">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableBlockchain-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#315-331">source</a><a href="#impl-ConfigurableBlockchain-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#318-330">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#83-89">source</a><a href="#impl-Deref-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = Client</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#86-88">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CClient%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#52-59">source</a><a href="#impl-From%3CClient%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Client> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#53-58">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(client: Client) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CElectrumBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#159">source</a><a href="#impl-From%3CElectrumBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#159">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetBlockHash-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#110-115">source</a><a href="#impl-GetBlockHash-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#111-114">source</a><a href="#method.get_block_hash" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>fetch block hash given its height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetHeight-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#93-102">source</a><a href="#impl-GetHeight-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#94-101">source</a><a href="#method.get_height" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the current height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetTx-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#104-108">source</a><a href="#impl-GetTx-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#105-107">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a transaction given its txid</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-WalletSync-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#117-251">source</a><a href="#impl-WalletSync-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#118-250">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> _progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/mod.rs.html#157-163">source</a><a href="#method.wallet_sync" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></div></details></div></details><section id="impl-StatelessBlockchain-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#91">source</a><a href="#impl-StatelessBlockchain-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section><section id="impl-Send-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-Send-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section><section id="impl-Sync-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-Sync-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section><section id="impl-Unpin-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-Unpin-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section><section id="impl-UnwindSafe-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-UnwindSafe-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-Pointable-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-ElectrumBlockchain" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration for an [`ElectrumBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, ElectrumBlockchainConfig"><title>ElectrumBlockchainConfig in bdk::blockchain::electrum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ElectrumBlockchainConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.retry">retry</a><a href="#structfield.socks5">socks5</a><a href="#structfield.stop_gap">stop_gap</a><a href="#structfield.timeout">timeout</a><a href="#structfield.url">url</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CElectrumBlockchainConfig%3E">From<ElectrumBlockchainConfig></a><a href="#impl-PartialEq%3CElectrumBlockchainConfig%3E">PartialEq<ElectrumBlockchainConfig></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">electrum</a></h2><div id="sidebar-vars" data-name="ElectrumBlockchainConfig" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">electrum</a>::<wbr><a class="struct" href="#">ElectrumBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#300-313" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct ElectrumBlockchainConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration for an [`ElectrumBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, ElectrumBlockchainConfig"><title>ElectrumBlockchainConfig in bdk::blockchain::electrum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ElectrumBlockchainConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.retry">retry</a></li><li><a href="#structfield.socks5">socks5</a></li><li><a href="#structfield.stop_gap">stop_gap</a></li><li><a href="#structfield.timeout">timeout</a></li><li><a href="#structfield.url">url</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-ElectrumBlockchainConfig">Clone</a></li><li><a href="#impl-Debug-for-ElectrumBlockchainConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-ElectrumBlockchainConfig">Deserialize<'de></a></li><li><a href="#impl-Eq-for-ElectrumBlockchainConfig">Eq</a></li><li><a href="#impl-From%3CElectrumBlockchainConfig%3E-for-AnyBlockchainConfig">From<ElectrumBlockchainConfig></a></li><li><a href="#impl-PartialEq%3CElectrumBlockchainConfig%3E-for-ElectrumBlockchainConfig">PartialEq<ElectrumBlockchainConfig></a></li><li><a href="#impl-Serialize-for-ElectrumBlockchainConfig">Serialize</a></li><li><a href="#impl-StructuralEq-for-ElectrumBlockchainConfig">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-ElectrumBlockchainConfig">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ElectrumBlockchainConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ElectrumBlockchainConfig">Send</a></li><li><a href="#impl-Sync-for-ElectrumBlockchainConfig">Sync</a></li><li><a href="#impl-Unpin-for-ElectrumBlockchainConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ElectrumBlockchainConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ElectrumBlockchainConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ElectrumBlockchainConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ElectrumBlockchainConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-ElectrumBlockchainConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-ElectrumBlockchainConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-ElectrumBlockchainConfig">Into<U></a></li><li><a href="#impl-Pointable-for-ElectrumBlockchainConfig">Pointable</a></li><li><a href="#impl-ToOwned-for-ElectrumBlockchainConfig">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ElectrumBlockchainConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-ElectrumBlockchainConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-ElectrumBlockchainConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::electrum</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">electrum</a>::<wbr><a class="struct" href="#">ElectrumBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#300-313">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct ElectrumBlockchainConfig {
pub url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub socks5: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>,
pub retry: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>,
pub timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>,
pub stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration for an <a href="struct.ElectrumBlockchain.html" title="ElectrumBlockchain"><code>ElectrumBlockchain</code></a></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.url" class="structfield small-section-header"><a href="#structfield.url" class="anchor field"></a><code>url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>URL of the Electrum server (such as ElectrumX, Esplora, BWT) may start with <code>ssl://</code> or <code>tcp://</code> and include a port</p>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration for an <a href="struct.ElectrumBlockchain.html" title="ElectrumBlockchain"><code>ElectrumBlockchain</code></a></p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.url" class="structfield small-section-header"><a href="#structfield.url" class="anchor field">§</a><code>url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>URL of the Electrum server (such as ElectrumX, Esplora, BWT) may start with <code>ssl://</code> or <code>tcp://</code> and include a port</p>
<p>eg. <code>ssl://electrum.blockstream.info:60002</code></p>
-</div><span id="structfield.socks5" class="structfield small-section-header"><a href="#structfield.socks5" class="anchor field"></a><code>socks5: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>URL of the socks5 proxy server or a Tor service</p>
-</div><span id="structfield.retry" class="structfield small-section-header"><a href="#structfield.retry" class="anchor field"></a><code>retry: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a></code></span><div class="docblock"><p>Request retry count</p>
-</div><span id="structfield.timeout" class="structfield small-section-header"><a href="#structfield.timeout" class="anchor field"></a><code>timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>></code></span><div class="docblock"><p>Request timeout (seconds)</p>
-</div><span id="structfield.stop_gap" class="structfield small-section-header"><a href="#structfield.stop_gap" class="anchor field"></a><code>stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Stop searching addresses for transactions after finding an unused gap of this length</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CElectrumBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#243" title="goto source code">source</a></div><a href="#impl-From%3CElectrumBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#243" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CElectrumBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-PartialEq%3CElectrumBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/electrum.rs.html#299" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><span id="structfield.socks5" class="structfield small-section-header"><a href="#structfield.socks5" class="anchor field">§</a><code>socks5: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>URL of the socks5 proxy server or a Tor service</p>
+</div><span id="structfield.retry" class="structfield small-section-header"><a href="#structfield.retry" class="anchor field">§</a><code>retry: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a></code></span><div class="docblock"><p>Request retry count</p>
+</div><span id="structfield.timeout" class="structfield small-section-header"><a href="#structfield.timeout" class="anchor field">§</a><code>timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>></code></span><div class="docblock"><p>Request timeout (seconds)</p>
+</div><span id="structfield.stop_gap" class="structfield small-section-header"><a href="#structfield.stop_gap" class="anchor field">§</a><code>stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Stop searching addresses for transactions after finding an unused gap of this length</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-Clone-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-Debug-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-Deserialize%3C%27de%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CElectrumBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#243">source</a><a href="#impl-From%3CElectrumBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#243">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CElectrumBlockchainConfig%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-PartialEq%3CElectrumBlockchainConfig%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-Serialize-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-Eq-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section><section id="impl-StructuralEq-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-StructuralEq-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section><section id="impl-StructuralPartialEq-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/electrum.rs.html#299">source</a><a href="#impl-StructuralPartialEq-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section><section id="impl-Send-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-Send-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section><section id="impl-Sync-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-Sync-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section><section id="impl-Unpin-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-Unpin-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section><section id="impl-UnwindSafe-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-Pointable-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-ElectrumBlockchainConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-ElectrumBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-ElectrumBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Capabilities that can be supported by a [`Blockchain`] backend"><meta name="keywords" content="rust, rustlang, rust-lang, Capability"><title>Capability in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Capability</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.AccurateFees">AccurateFees</a><a href="#variant.FullHistory">FullHistory</a><a href="#variant.GetAnyTx">GetAnyTx</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-PartialEq%3CCapability%3E">PartialEq<Capability></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="Capability" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="enum" href="#">Capability</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#79-86" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Capability {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Capabilities that can be supported by a [`Blockchain`] backend"><meta name="keywords" content="rust, rustlang, rust-lang, Capability"><title>Capability in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Capability</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.AccurateFees">AccurateFees</a></li><li><a href="#variant.FullHistory">FullHistory</a></li><li><a href="#variant.GetAnyTx">GetAnyTx</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Capability">Clone</a></li><li><a href="#impl-Copy-for-Capability">Copy</a></li><li><a href="#impl-Debug-for-Capability">Debug</a></li><li><a href="#impl-Eq-for-Capability">Eq</a></li><li><a href="#impl-Hash-for-Capability">Hash</a></li><li><a href="#impl-PartialEq%3CCapability%3E-for-Capability">PartialEq<Capability></a></li><li><a href="#impl-StructuralEq-for-Capability">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Capability">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Capability">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Capability">Send</a></li><li><a href="#impl-Sync-for-Capability">Sync</a></li><li><a href="#impl-Unpin-for-Capability">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Capability">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Capability">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Capability">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Capability">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Capability">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-Capability">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Capability">Into<U></a></li><li><a href="#impl-Pointable-for-Capability">Pointable</a></li><li><a href="#impl-ToOwned-for-Capability">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Capability">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Capability">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Capability">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="enum" href="#">Capability</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#79-86">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Capability {
FullHistory,
GetAnyTx,
AccurateFees,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Capabilities that can be supported by a <a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> backend</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.FullHistory" class="variant small-section-header"><a href="#variant.FullHistory" class="anchor field"></a><code>FullHistory</code></h3><div class="docblock"><p>Can recover the full history of a wallet and not only the set of currently spendable UTXOs</p>
-</div><h3 id="variant.GetAnyTx" class="variant small-section-header"><a href="#variant.GetAnyTx" class="anchor field"></a><code>GetAnyTx</code></h3><div class="docblock"><p>Can fetch any historical transaction given its txid</p>
-</div><h3 id="variant.AccurateFees" class="variant small-section-header"><a href="#variant.AccurateFees" class="anchor field"></a><code>AccurateFees</code></h3><div class="docblock"><p>Can compute accurate fees for the transactions found during sync</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CCapability%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-PartialEq%3CCapability%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#78" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.FullHistory" class="variant"><a href="#variant.FullHistory" class="anchor">§</a><h3 class="code-header">FullHistory</h3></section><div class="docblock"><p>Can recover the full history of a wallet and not only the set of currently spendable UTXOs</p>
+</div><section id="variant.GetAnyTx" class="variant"><a href="#variant.GetAnyTx" class="anchor">§</a><h3 class="code-header">GetAnyTx</h3></section><div class="docblock"><p>Can fetch any historical transaction given its txid</p>
+</div><section id="variant.AccurateFees" class="variant"><a href="#variant.AccurateFees" class="anchor">§</a><h3 class="code-header">AccurateFees</h3></section><div class="docblock"><p>Can compute accurate fees for the transactions found during sync</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-Clone-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-Debug-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-Hash-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CCapability%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-PartialEq%3CCapability%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Copy-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-Copy-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-Eq-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-Eq-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-StructuralEq-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-StructuralEq-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-StructuralPartialEq-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#78">source</a><a href="#impl-StructuralPartialEq-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Capability" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-Send-for-Capability" class="impl has-srclink"><a href="#impl-Send-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-Sync-for-Capability" class="impl has-srclink"><a href="#impl-Sync-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-Unpin-for-Capability" class="impl has-srclink"><a href="#impl-Unpin-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section><section id="impl-UnwindSafe-for-Capability" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Capability" class="impl has-srclink"><a href="#impl-CallHasher-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Capability" class="impl has-srclink"><a href="#impl-Pointable-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Capability" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Capability" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Capability" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors that can happen during a sync with `Esplora`"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraError"><title>EsploraError in bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">EsploraError</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.BitcoinEncoding">BitcoinEncoding</a><a href="#variant.HeaderHashNotFound">HeaderHashNotFound</a><a href="#variant.HeaderHeightNotFound">HeaderHeightNotFound</a><a href="#variant.Hex">Hex</a><a href="#variant.HttpResponse">HttpResponse</a><a href="#variant.Io">Io</a><a href="#variant.NoHeader">NoHeader</a><a href="#variant.Parsing">Parsing</a><a href="#variant.TransactionNotFound">TransactionNotFound</a><a href="#variant.Ureq">Ureq</a><a href="#variant.UreqTransport">UreqTransport</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Error">Error</a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CParseIntError%3E">From<ParseIntError></a><a href="#impl-From%3CTransport%3E">From<Transport></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a></h2><div id="sidebar-vars" data-name="EsploraError" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a>::<wbr><a class="enum" href="#">EsploraError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum EsploraError {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors that can happen during a sync with `Esplora`"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraError"><title>EsploraError in bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">EsploraError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.BitcoinEncoding">BitcoinEncoding</a></li><li><a href="#variant.HeaderHashNotFound">HeaderHashNotFound</a></li><li><a href="#variant.HeaderHeightNotFound">HeaderHeightNotFound</a></li><li><a href="#variant.Hex">Hex</a></li><li><a href="#variant.HttpResponse">HttpResponse</a></li><li><a href="#variant.Io">Io</a></li><li><a href="#variant.NoHeader">NoHeader</a></li><li><a href="#variant.Parsing">Parsing</a></li><li><a href="#variant.TransactionNotFound">TransactionNotFound</a></li><li><a href="#variant.Ureq">Ureq</a></li><li><a href="#variant.UreqTransport">UreqTransport</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CError%3E-for-Error">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-1">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-2">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-3">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-4">From<Error></a></li><li><a href="#impl-From%3CParseIntError%3E-for-Error">From<ParseIntError></a></li><li><a href="#impl-From%3CTransport%3E-for-Error">From<Transport></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Error">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Error">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Error">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Error">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Error">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Error">Into<U></a></li><li><a href="#impl-Pointable-for-Error">Pointable</a></li><li><a href="#impl-Provider-for-Error">Provider</a></li><li><a href="#impl-ToString-for-Error">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Error">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Error">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Error">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::esplora</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a>::<wbr><a class="enum" href="#">EsploraError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum EsploraError {
Ureq(Error),
UreqTransport(Transport),
HttpResponse(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>),
TransactionNotFound(Txid),
HeaderHeightNotFound(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>),
HeaderHashNotFound(BlockHash),
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Errors that can happen during a sync with <code>Esplora</code></p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Ureq" class="variant small-section-header"><a href="#variant.Ureq" class="anchor field"></a><code>Ureq(Error)</code></h3><div class="docblock"><p>Error during ureq HTTP request</p>
-</div><h3 id="variant.UreqTransport" class="variant small-section-header"><a href="#variant.UreqTransport" class="anchor field"></a><code>UreqTransport(Transport)</code></h3><div class="docblock"><p>Transport error during the ureq HTTP call</p>
-</div><h3 id="variant.HttpResponse" class="variant small-section-header"><a href="#variant.HttpResponse" class="anchor field"></a><code>HttpResponse(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>)</code></h3><div class="docblock"><p>HTTP response error</p>
-</div><h3 id="variant.Io" class="variant small-section-header"><a href="#variant.Io" class="anchor field"></a><code>Io(<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>)</code></h3><div class="docblock"><p>IO error during ureq response read</p>
-</div><h3 id="variant.NoHeader" class="variant small-section-header"><a href="#variant.NoHeader" class="anchor field"></a><code>NoHeader</code></h3><div class="docblock"><p>No header found in ureq response</p>
-</div><h3 id="variant.Parsing" class="variant small-section-header"><a href="#variant.Parsing" class="anchor field"></a><code>Parsing(<a class="struct" href="https://doc.rust-lang.org/nightly/core/num/error/struct.ParseIntError.html" title="struct core::num::error::ParseIntError">ParseIntError</a>)</code></h3><div class="docblock"><p>Invalid number returned</p>
-</div><h3 id="variant.BitcoinEncoding" class="variant small-section-header"><a href="#variant.BitcoinEncoding" class="anchor field"></a><code>BitcoinEncoding(Error)</code></h3><div class="docblock"><p>Invalid Bitcoin data returned</p>
-</div><h3 id="variant.Hex" class="variant small-section-header"><a href="#variant.Hex" class="anchor field"></a><code>Hex(Error)</code></h3><div class="docblock"><p>Invalid Hex data returned</p>
-</div><h3 id="variant.TransactionNotFound" class="variant small-section-header"><a href="#variant.TransactionNotFound" class="anchor field"></a><code>TransactionNotFound(Txid)</code></h3><div class="docblock"><p>Transaction not found</p>
-</div><h3 id="variant.HeaderHeightNotFound" class="variant small-section-header"><a href="#variant.HeaderHeightNotFound" class="anchor field"></a><code>HeaderHeightNotFound(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</code></h3><div class="docblock"><p>Header height not found</p>
-</div><h3 id="variant.HeaderHashNotFound" class="variant small-section-header"><a href="#variant.HeaderHashNotFound" class="anchor field"></a><code>HeaderHashNotFound(BlockHash)</code></h3><div class="docblock"><p>Header hash not found</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-2" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CError%3E-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(e: Error) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-3" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CError%3E-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-5" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-5" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#246-250" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-6" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#247-249" title="goto source code">source</a></div><a href="#method.from-6" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">EsploraError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CParseIntError%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CParseIntError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/core/num/error/struct.ParseIntError.html" title="struct core::num::error::ParseIntError">ParseIntError</a>> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/core/num/error/struct.ParseIntError.html" title="struct core::num::error::ParseIntError">ParseIntError</a>) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CTransport%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CTransport%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Transport> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Transport) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-7" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-7" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Errors that can happen during a sync with <code>Esplora</code></p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Ureq" class="variant"><a href="#variant.Ureq" class="anchor">§</a><h3 class="code-header">Ureq(Error)</h3></section><div class="docblock"><p>Error during ureq HTTP request</p>
+</div><section id="variant.UreqTransport" class="variant"><a href="#variant.UreqTransport" class="anchor">§</a><h3 class="code-header">UreqTransport(Transport)</h3></section><div class="docblock"><p>Transport error during the ureq HTTP call</p>
+</div><section id="variant.HttpResponse" class="variant"><a href="#variant.HttpResponse" class="anchor">§</a><h3 class="code-header">HttpResponse(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>)</h3></section><div class="docblock"><p>HTTP response error</p>
+</div><section id="variant.Io" class="variant"><a href="#variant.Io" class="anchor">§</a><h3 class="code-header">Io(<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>)</h3></section><div class="docblock"><p>IO error during ureq response read</p>
+</div><section id="variant.NoHeader" class="variant"><a href="#variant.NoHeader" class="anchor">§</a><h3 class="code-header">NoHeader</h3></section><div class="docblock"><p>No header found in ureq response</p>
+</div><section id="variant.Parsing" class="variant"><a href="#variant.Parsing" class="anchor">§</a><h3 class="code-header">Parsing(<a class="struct" href="https://doc.rust-lang.org/nightly/core/num/error/struct.ParseIntError.html" title="struct core::num::error::ParseIntError">ParseIntError</a>)</h3></section><div class="docblock"><p>Invalid number returned</p>
+</div><section id="variant.BitcoinEncoding" class="variant"><a href="#variant.BitcoinEncoding" class="anchor">§</a><h3 class="code-header">BitcoinEncoding(Error)</h3></section><div class="docblock"><p>Invalid Bitcoin data returned</p>
+</div><section id="variant.Hex" class="variant"><a href="#variant.Hex" class="anchor">§</a><h3 class="code-header">Hex(Error)</h3></section><div class="docblock"><p>Invalid Hex data returned</p>
+</div><section id="variant.TransactionNotFound" class="variant"><a href="#variant.TransactionNotFound" class="anchor">§</a><h3 class="code-header">TransactionNotFound(Txid)</h3></section><div class="docblock"><p>Transaction not found</p>
+</div><section id="variant.HeaderHeightNotFound" class="variant"><a href="#variant.HeaderHeightNotFound" class="anchor">§</a><h3 class="code-header">HeaderHeightNotFound(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</h3></section><div class="docblock"><p>Header height not found</p>
+</div><section id="variant.HeaderHashNotFound" class="variant"><a href="#variant.HeaderHashNotFound" class="anchor">§</a><h3 class="code-header">HeaderHashNotFound(BlockHash)</h3></section><div class="docblock"><p>Header hash not found</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl has-srclink"><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl has-srclink"><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl has-srclink"><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error" class="impl has-srclink"><a href="#impl-From%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-1" class="impl has-srclink"><a href="#impl-From%3CError%3E-for-Error-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(e: Error) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-2" class="impl has-srclink"><a href="#impl-From%3CError%3E-for-Error-2" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-3" class="impl has-srclink"><a href="#impl-From%3CError%3E-for-Error-3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-4" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#246-250">source</a><a href="#impl-From%3CError%3E-for-Error-4" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-6" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#247-249">source</a><a href="#method.from-6" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">EsploraError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CParseIntError%3E-for-Error" class="impl has-srclink"><a href="#impl-From%3CParseIntError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/core/num/error/struct.ParseIntError.html" title="struct core::num::error::ParseIntError">ParseIntError</a>> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/core/num/error/struct.ParseIntError.html" title="struct core::num::error::ParseIntError">ParseIntError</a>) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CTransport%3E-for-Error" class="impl has-srclink"><a href="#impl-From%3CTransport%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Transport> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-5" class="method trait-impl has-srclink"><a href="#method.from-5" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Transport) -> <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section><section id="impl-Send-for-Error" class="impl has-srclink"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl has-srclink"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl has-srclink"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-7" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-7" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Error" class="impl has-srclink"><a href="#impl-Pointable-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-Error" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Error" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Esplora"><meta name="keywords" content="rust, rustlang, rust-lang, esplora"><title>bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module esplora</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><div id="sidebar-vars" data-name="esplora" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">esplora</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#1-130" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Esplora</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Esplora"><meta name="keywords" content="rust, rustlang, rust-lang, esplora"><title>bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module esplora</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">esplora</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#1-130">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Esplora</p>
<p>This module defines a <a href="struct.EsploraBlockchain.html" title="EsploraBlockchain"><code>EsploraBlockchain</code></a> struct that can query an Esplora
backend populate the wallet’s <a href="../../database/trait.Database.html">database</a> by:</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">EsploraBlockchain::new</span>(<span class="string">"https://blockstream.info/testnet/api"</span>, <span class="number">20</span>);</code></pre></div>
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>blockchain = EsploraBlockchain::new(<span class="string">"https://blockstream.info/testnet/api"</span>, <span class="number">20</span>);</code></pre></div>
<p>Esplora blockchain can use either <code>ureq</code> or <code>reqwest</code> for the HTTP client
depending on your needs (blocking or async respectively).</p>
<p>Please note, to configure the Esplora HTTP client correctly use one of:
Blocking: –features=‘use-esplora-blocking’
Async: –features=‘async-interface,use-esplora-async’ –no-default-features</p>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EsploraBlockchain.html" title="bdk::blockchain::esplora::EsploraBlockchain struct">EsploraBlockchain</a></div><div class="item-right docblock-short"><p>Structure that implements the logic to sync with Esplora</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EsploraBlockchainConfig.html" title="bdk::blockchain::esplora::EsploraBlockchainConfig struct">EsploraBlockchainConfig</a></div><div class="item-right docblock-short"><p>Configuration for an <a href="struct.EsploraBlockchain.html" title="EsploraBlockchain"><code>EsploraBlockchain</code></a></p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.EsploraError.html" title="bdk::blockchain::esplora::EsploraError enum">EsploraError</a></div><div class="item-right docblock-short"><p>Errors that can happen during a sync with <code>Esplora</code></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EsploraBlockchain.html" title="bdk::blockchain::esplora::EsploraBlockchain struct">EsploraBlockchain</a></div><div class="item-right docblock-short">Structure that implements the logic to sync with Esplora</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EsploraBlockchainConfig.html" title="bdk::blockchain::esplora::EsploraBlockchainConfig struct">EsploraBlockchainConfig</a></div><div class="item-right docblock-short">Configuration for an <a href="struct.EsploraBlockchain.html" title="EsploraBlockchain"><code>EsploraBlockchain</code></a></div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.EsploraError.html" title="bdk::blockchain::esplora::EsploraError enum">EsploraError</a></div><div class="item-right docblock-short">Errors that can happen during a sync with <code>Esplora</code></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["EsploraError","Errors that can happen during a sync with `Esplora`"]],"struct":[["EsploraBlockchain","Structure that implements the logic to sync with Esplora"],["EsploraBlockchainConfig","Configuration for an [`EsploraBlockchain`]"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["EsploraError","Errors that can happen during a sync with `Esplora`"]],"struct":[["EsploraBlockchain","Structure that implements the logic to sync with Esplora"],["EsploraBlockchainConfig","Configuration for an [`EsploraBlockchain`]"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure that implements the logic to sync with Esplora"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraBlockchain"><title>EsploraBlockchain in bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">EsploraBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.from_client">from_client</a><a href="#method.new">new</a><a href="#method.with_concurrency">with_concurrency</a></div><h3 class="sidebar-title"><a href="#deref-methods-BlockingClient">Methods from Deref<Target=BlockingClient></a></h3><div class="sidebar-links"><a href="#method.broadcast">broadcast</a><a href="#method.get_block_hash">get_block_hash</a><a href="#method.get_block_status">get_block_status</a><a href="#method.get_fee_estimates">get_fee_estimates</a><a href="#method.get_header">get_header</a><a href="#method.get_header_by_hash">get_header_by_hash</a><a href="#method.get_height">get_height</a><a href="#method.get_merkle_proof">get_merkle_proof</a><a href="#method.get_output_status">get_output_status</a><a href="#method.get_tip_hash">get_tip_hash</a><a href="#method.get_tx">get_tx</a><a href="#method.get_tx_no_opt">get_tx_no_opt</a><a href="#method.get_tx_status">get_tx_status</a><a href="#method.get_txid_at_block_index">get_txid_at_block_index</a><a href="#method.scripthash_txs">scripthash_txs</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Blockchain">Blockchain</a><a href="#impl-ConfigurableBlockchain">ConfigurableBlockchain</a><a href="#impl-Debug">Debug</a><a href="#impl-Deref">Deref</a><a href="#impl-From%3CEsploraBlockchain%3E">From<EsploraBlockchain></a><a href="#impl-GetBlockHash">GetBlockHash</a><a href="#impl-GetHeight">GetHeight</a><a href="#impl-GetTx">GetTx</a><a href="#impl-StatelessBlockchain">StatelessBlockchain</a><a href="#impl-WalletSync">WalletSync</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a></h2><div id="sidebar-vars" data-name="EsploraBlockchain" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a>::<wbr><a class="struct" href="#">EsploraBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#33-37" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct EsploraBlockchain { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure that implements the logic to sync with Esplora</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure that implements the logic to sync with Esplora"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraBlockchain"><title>EsploraBlockchain in bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">EsploraBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.from_client">from_client</a></li><li><a href="#method.new">new</a></li><li><a href="#method.with_concurrency">with_concurrency</a></li></ul><h3><a href="#deref-methods-BlockingClient">Methods from Deref<Target=BlockingClient></a></h3><ul class="block"><li><a href="#method.broadcast">broadcast</a></li><li><a href="#method.get_block_hash">get_block_hash</a></li><li><a href="#method.get_block_status">get_block_status</a></li><li><a href="#method.get_fee_estimates">get_fee_estimates</a></li><li><a href="#method.get_header">get_header</a></li><li><a href="#method.get_header_by_hash">get_header_by_hash</a></li><li><a href="#method.get_height">get_height</a></li><li><a href="#method.get_merkle_proof">get_merkle_proof</a></li><li><a href="#method.get_output_status">get_output_status</a></li><li><a href="#method.get_tip_hash">get_tip_hash</a></li><li><a href="#method.get_tx">get_tx</a></li><li><a href="#method.get_tx_no_opt">get_tx_no_opt</a></li><li><a href="#method.get_tx_status">get_tx_status</a></li><li><a href="#method.get_txid_at_block_index">get_txid_at_block_index</a></li><li><a href="#method.scripthash_txs">scripthash_txs</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-EsploraBlockchain">Blockchain</a></li><li><a href="#impl-ConfigurableBlockchain-for-EsploraBlockchain">ConfigurableBlockchain</a></li><li><a href="#impl-Debug-for-EsploraBlockchain">Debug</a></li><li><a href="#impl-Deref-for-EsploraBlockchain">Deref</a></li><li><a href="#impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain">From<EsploraBlockchain></a></li><li><a href="#impl-GetBlockHash-for-EsploraBlockchain">GetBlockHash</a></li><li><a href="#impl-GetHeight-for-EsploraBlockchain">GetHeight</a></li><li><a href="#impl-GetTx-for-EsploraBlockchain">GetTx</a></li><li><a href="#impl-StatelessBlockchain-for-EsploraBlockchain">StatelessBlockchain</a></li><li><a href="#impl-WalletSync-for-EsploraBlockchain">WalletSync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-EsploraBlockchain">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-EsploraBlockchain">Send</a></li><li><a href="#impl-Sync-for-EsploraBlockchain">Sync</a></li><li><a href="#impl-Unpin-for-EsploraBlockchain">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EsploraBlockchain">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-EsploraBlockchain">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-EsploraBlockchain">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-EsploraBlockchain">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-EsploraBlockchain">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-EsploraBlockchain">Into<U></a></li><li><a href="#impl-Pointable-for-EsploraBlockchain">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-EsploraBlockchain">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-EsploraBlockchain">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-EsploraBlockchain">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::esplora</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a>::<wbr><a class="struct" href="#">EsploraBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#33-37">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct EsploraBlockchain { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure that implements the logic to sync with Esplora</p>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>See the <a href="index.html"><code>blockchain::esplora</code></a> module for a usage example.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#39-63" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#41-47" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(base_url: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></div></summary><div class="docblock"><p>Create a new instance of the client from a base URL and the <code>stop_gap</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_client" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#50-56" title="goto source code">source</a></div><a href="#method.from_client" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_client" class="fnname">from_client</a>(url_client: BlockingClient, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></div></summary><div class="docblock"><p>Build a new instance given a client</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.with_concurrency" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#59-62" title="goto source code">source</a></div><a href="#method.with_concurrency" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.with_concurrency" class="fnname">with_concurrency</a>(self, concurrency: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -> Self</h4></div></summary><div class="docblock"><p>Set the number of parallel requests the client can make.</p>
-</div></details></div></details><h2 id="deref-methods-BlockingClient" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = BlockingClient></span><a href="#deref-methods-BlockingClient" class="anchor"></a></h2><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>Transaction</code>] option given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx_no_opt" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tx_no_opt" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx_no_opt" class="fnname">get_tx_no_opt</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Transaction, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_txid_at_block_index" class="method has-srclink"><div class="rightside"></div><a href="#method.get_txid_at_block_index" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_txid_at_block_index" class="fnname">get_txid_at_block_index</a>(<br> &self, <br> block_hash: &BlockHash, <br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>Txid</code>] of a transaction given its index in a block with a given hash.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx_status" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tx_status" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx_status" class="fnname">get_tx_status</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxStatus>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the status of a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_header" class="method has-srclink"><div class="rightside"></div><a href="#method.get_header" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_header" class="fnname">get_header</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.1.2: <p>Deprecated to improve alignment with Esplora API. Users should use <code>get_block_hash</code> and <code>get_header_by_hash</code> methods directly.</p>
-</div></div></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block height.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_header_by_hash" class="method has-srclink"><div class="rightside"></div><a href="#method.get_header_by_hash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_header_by_hash" class="fnname">get_header_by_hash</a>(<br> &self, <br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block hash.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_status" class="method has-srclink"><div class="rightside"></div><a href="#method.get_block_status" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_block_status" class="fnname">get_block_status</a>(<br> &self, <br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockStatus, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the [<code>BlockStatus</code>] given a particular [<code>BlockHash</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_merkle_proof" class="method has-srclink"><div class="rightside"></div><a href="#method.get_merkle_proof" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_merkle_proof" class="fnname">get_merkle_proof</a>(<br> &self, <br> txid: &Txid<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><MerkleProof>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a merkle inclusion proof for a [<code>Transaction</code>] with the given [<code>Txid</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_output_status" class="method has-srclink"><div class="rightside"></div><a href="#method.get_output_status" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_output_status" class="fnname">get_output_status</a>(<br> &self, <br> txid: &Txid, <br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><OutputStatus>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the spending status of an output given a [<code>Txid</code>] and the output index.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast" class="method has-srclink"><div class="rightside"></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.broadcast" class="fnname">broadcast</a>(&self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Broadcast a [<code>Transaction</code>] to Esplora</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height" class="method has-srclink"><div class="rightside"></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the height of the current blockchain tip.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tip_hash" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tip_hash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tip_hash" class="fnname">get_tip_hash</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of the current blockchain tip.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash" class="method has-srclink"><div class="rightside"></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_block_hash" class="fnname">get_block_hash</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of a specific block height</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_fee_estimates" class="method has-srclink"><div class="rightside"></div><a href="#method.get_fee_estimates" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_fee_estimates" class="fnname">get_fee_estimates</a>(<br> &self<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get an map where the key is the confirmation target (in number of blocks)
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#39-63">source</a><a href="#impl-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#41-47">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(base_url: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a new instance of the client from a base URL and the <code>stop_gap</code>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_client" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#50-56">source</a><h4 class="code-header">pub fn <a href="#method.from_client" class="fn">from_client</a>(url_client: BlockingClient, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></section></summary><div class="docblock"><p>Build a new instance given a client</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.with_concurrency" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#59-62">source</a><h4 class="code-header">pub fn <a href="#method.with_concurrency" class="fn">with_concurrency</a>(self, concurrency: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -> Self</h4></section></summary><div class="docblock"><p>Set the number of parallel requests the client can make.</p>
+</div></details></div></details></div><h2 id="deref-methods-BlockingClient" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = BlockingClient></span><a href="#deref-methods-BlockingClient" class="anchor">§</a></h2><div id="deref-methods-BlockingClient-1"><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>Transaction</code>] option given its [<code>Txid</code>]</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx_no_opt" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tx_no_opt" class="fn">get_tx_no_opt</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Transaction, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_txid_at_block_index" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_txid_at_block_index" class="fn">get_txid_at_block_index</a>(<br> &self,<br> block_hash: &BlockHash,<br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>Txid</code>] of a transaction given its index in a block with a given hash.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx_status" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tx_status" class="fn">get_tx_status</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxStatus>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the status of a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_header" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_header" class="fn">get_header</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.1.2: Deprecated to improve alignment with Esplora API. Users should use <code>get_block_hash</code> and <code>get_header_by_hash</code> methods directly.</span></div></span></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block height.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_header_by_hash" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_header_by_hash" class="fn">get_header_by_hash</a>(<br> &self,<br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block hash.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_status" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_block_status" class="fn">get_block_status</a>(<br> &self,<br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockStatus, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the [<code>BlockStatus</code>] given a particular [<code>BlockHash</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_merkle_proof" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_merkle_proof" class="fn">get_merkle_proof</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><MerkleProof>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a merkle inclusion proof for a [<code>Transaction</code>] with the given [<code>Txid</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_output_status" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_output_status" class="fn">get_output_status</a>(<br> &self,<br> txid: &Txid,<br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><OutputStatus>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the spending status of an output given a [<code>Txid</code>] and the output index.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.broadcast" class="fn">broadcast</a>(&self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Broadcast a [<code>Transaction</code>] to Esplora</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the height of the current blockchain tip.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tip_hash" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tip_hash" class="fn">get_tip_hash</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of the current blockchain tip.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_block_hash" class="fn">get_block_hash</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of a specific block height</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_fee_estimates" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_fee_estimates" class="fn">get_fee_estimates</a>(<br> &self<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get an map where the key is the confirmation target (in number of blocks)
and the value is the estimated feerate (in sat/vB).</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.scripthash_txs" class="method has-srclink"><div class="rightside"></div><a href="#method.scripthash_txs" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.scripthash_txs" class="fnname">scripthash_txs</a>(<br> &self, <br> script: &Script, <br> last_seen: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Tx, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get confirmed transaction history for the specified address/scripthash,
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.scripthash_txs" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.scripthash_txs" class="fn">scripthash_txs</a>(<br> &self,<br> script: &Script,<br> last_seen: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Tx, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="enum" href="enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get confirmed transaction history for the specified address/scripthash,
sorted with newest first. Returns 25 transactions per page.
More can be requested by specifying the last txid seen by the previous query.</p>
-</div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#65-87" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#66-74" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class='docblock'><p>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#76-79" title="goto source code">source</a></div><a href="#method.broadcast-1" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#81-86" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#215-238" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#218-237" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#32" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#32" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#89-95" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = BlockingClient</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#92-94" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CEsploraBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#160" title="goto source code">source</a></div><a href="#impl-From%3CEsploraBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#160" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#111-115" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#112-114" title="goto source code">source</a></div><a href="#method.get_block_hash-1" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>fetch block hash given its height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#99-103" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#100-102" title="goto source code">source</a></div><a href="#method.get_height-1" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the current height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#105-109" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#106-108" title="goto source code">source</a></div><a href="#method.get_tx-1" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a transaction given its txid</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#117-213" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#118-212" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> _progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_sync" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/mod.rs.html#157-163" title="goto source code">source</a></div><a href="#method.wallet_sync" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></p>
-</div></details></div></details><div id="impl-StatelessBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#97" title="goto source code">source</a></div><a href="#impl-StatelessBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Blockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#65-87">source</a><a href="#impl-Blockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#66-74">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class='docblock'>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#76-79">source</a><a href="#method.broadcast-1" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Broadcast a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#81-86">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableBlockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#215-238">source</a><a href="#impl-ConfigurableBlockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#218-237">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#32">source</a><a href="#impl-Debug-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#32">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#89-95">source</a><a href="#impl-Deref-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = BlockingClient</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#92-94">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#160">source</a><a href="#impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#160">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetBlockHash-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#111-115">source</a><a href="#impl-GetBlockHash-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#112-114">source</a><a href="#method.get_block_hash-1" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>fetch block hash given its height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetHeight-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#99-103">source</a><a href="#impl-GetHeight-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#100-102">source</a><a href="#method.get_height-1" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the current height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetTx-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#105-109">source</a><a href="#impl-GetTx-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#106-108">source</a><a href="#method.get_tx-1" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a transaction given its txid</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-WalletSync-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#117-213">source</a><a href="#impl-WalletSync-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#118-212">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> _progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/mod.rs.html#157-163">source</a><a href="#method.wallet_sync" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></div></details></div></details><section id="impl-StatelessBlockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/blocking.rs.html#97">source</a><a href="#impl-StatelessBlockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-Send-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Send-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-Sync-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Sync-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-Unpin-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Unpin-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-UnwindSafe-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-UnwindSafe-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Pointable-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration for an [`EsploraBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraBlockchainConfig"><title>EsploraBlockchainConfig in bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">EsploraBlockchainConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.base_url">base_url</a><a href="#structfield.concurrency">concurrency</a><a href="#structfield.proxy">proxy</a><a href="#structfield.stop_gap">stop_gap</a><a href="#structfield.timeout">timeout</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CEsploraBlockchainConfig%3E">From<EsploraBlockchainConfig></a><a href="#impl-PartialEq%3CEsploraBlockchainConfig%3E">PartialEq<EsploraBlockchainConfig></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a></h2><div id="sidebar-vars" data-name="EsploraBlockchainConfig" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a>::<wbr><a class="struct" href="#">EsploraBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#37-62" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct EsploraBlockchainConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration for an [`EsploraBlockchain`]"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraBlockchainConfig"><title>EsploraBlockchainConfig in bdk::blockchain::esplora - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">EsploraBlockchainConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.base_url">base_url</a></li><li><a href="#structfield.concurrency">concurrency</a></li><li><a href="#structfield.proxy">proxy</a></li><li><a href="#structfield.stop_gap">stop_gap</a></li><li><a href="#structfield.timeout">timeout</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-EsploraBlockchainConfig">Clone</a></li><li><a href="#impl-Debug-for-EsploraBlockchainConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-EsploraBlockchainConfig">Deserialize<'de></a></li><li><a href="#impl-Eq-for-EsploraBlockchainConfig">Eq</a></li><li><a href="#impl-From%3CEsploraBlockchainConfig%3E-for-AnyBlockchainConfig">From<EsploraBlockchainConfig></a></li><li><a href="#impl-PartialEq%3CEsploraBlockchainConfig%3E-for-EsploraBlockchainConfig">PartialEq<EsploraBlockchainConfig></a></li><li><a href="#impl-Serialize-for-EsploraBlockchainConfig">Serialize</a></li><li><a href="#impl-StructuralEq-for-EsploraBlockchainConfig">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-EsploraBlockchainConfig">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-EsploraBlockchainConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-EsploraBlockchainConfig">Send</a></li><li><a href="#impl-Sync-for-EsploraBlockchainConfig">Sync</a></li><li><a href="#impl-Unpin-for-EsploraBlockchainConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EsploraBlockchainConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-EsploraBlockchainConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-EsploraBlockchainConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-EsploraBlockchainConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-EsploraBlockchainConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-EsploraBlockchainConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-EsploraBlockchainConfig">Into<U></a></li><li><a href="#impl-Pointable-for-EsploraBlockchainConfig">Pointable</a></li><li><a href="#impl-ToOwned-for-EsploraBlockchainConfig">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-EsploraBlockchainConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-EsploraBlockchainConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-EsploraBlockchainConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::esplora</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">esplora</a>::<wbr><a class="struct" href="#">EsploraBlockchainConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#37-62">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct EsploraBlockchainConfig {
pub base_url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub proxy: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>,
pub concurrency: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>,
pub stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
pub timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration for an <a href="struct.EsploraBlockchain.html" title="EsploraBlockchain"><code>EsploraBlockchain</code></a></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.base_url" class="structfield small-section-header"><a href="#structfield.base_url" class="anchor field"></a><code>base_url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Base URL of the esplora service</p>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration for an <a href="struct.EsploraBlockchain.html" title="EsploraBlockchain"><code>EsploraBlockchain</code></a></p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.base_url" class="structfield small-section-header"><a href="#structfield.base_url" class="anchor field">§</a><code>base_url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Base URL of the esplora service</p>
<p>eg. <code>https://blockstream.info/api/</code></p>
-</div><span id="structfield.proxy" class="structfield small-section-header"><a href="#structfield.proxy" class="anchor field"></a><code>proxy: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>Optional URL of the proxy to use to make requests to the Esplora server</p>
+</div><span id="structfield.proxy" class="structfield small-section-header"><a href="#structfield.proxy" class="anchor field">§</a><code>proxy: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>Optional URL of the proxy to use to make requests to the Esplora server</p>
<p>The string should be formatted as: <code><protocol>://<user>:<password>@host:<port></code>.</p>
<p>Note that the format of this value and the supported protocols change slightly between the
sync version of esplora (using <code>ureq</code>) and the async version (using <code>reqwest</code>). For more
details check with the documentation of the two crates. Both of them are compiled with
the <code>socks</code> feature enabled.</p>
<p>The proxy is ignored when targeting <code>wasm32</code>.</p>
-</div><span id="structfield.concurrency" class="structfield small-section-header"><a href="#structfield.concurrency" class="anchor field"></a><code>concurrency: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>></code></span><div class="docblock"><p>Number of parallel requests sent to the esplora service (default: 4)</p>
-</div><span id="structfield.stop_gap" class="structfield small-section-header"><a href="#structfield.stop_gap" class="anchor field"></a><code>stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Stop searching addresses for transactions after finding an unused gap of this length.</p>
-</div><span id="structfield.timeout" class="structfield small-section-header"><a href="#structfield.timeout" class="anchor field"></a><code>timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></code></span><div class="docblock"><p>Socket timeout.</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#64-75" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#66-74" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(base_url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></div></summary><div class="docblock"><p>create a config with default values given the base url and stop gap</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CEsploraBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#244" title="goto source code">source</a></div><a href="#impl-From%3CEsploraBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#244" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CEsploraBlockchainConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-PartialEq%3CEsploraBlockchainConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><span id="structfield.concurrency" class="structfield small-section-header"><a href="#structfield.concurrency" class="anchor field">§</a><code>concurrency: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>></code></span><div class="docblock"><p>Number of parallel requests sent to the esplora service (default: 4)</p>
+</div><span id="structfield.stop_gap" class="structfield small-section-header"><a href="#structfield.stop_gap" class="anchor field">§</a><code>stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Stop searching addresses for transactions after finding an unused gap of this length.</p>
+</div><span id="structfield.timeout" class="structfield small-section-header"><a href="#structfield.timeout" class="anchor field">§</a><code>timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></code></span><div class="docblock"><p>Socket timeout.</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#64-75">source</a><a href="#impl-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#66-74">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(base_url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></section></summary><div class="docblock"><p>create a config with default values given the base url and stop gap</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-Clone-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-Debug-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-Deserialize%3C%27de%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CEsploraBlockchainConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#244">source</a><a href="#impl-From%3CEsploraBlockchainConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#244">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CEsploraBlockchainConfig%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-PartialEq%3CEsploraBlockchainConfig%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-Serialize-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-Eq-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section><section id="impl-StructuralEq-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-StructuralEq-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section><section id="impl-StructuralPartialEq-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/esplora/mod.rs.html#36">source</a><a href="#impl-StructuralPartialEq-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section><section id="impl-Send-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-Send-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section><section id="impl-Sync-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-Sync-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section><section id="impl-Unpin-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-Unpin-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section><section id="impl-UnwindSafe-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-Pointable-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-EsploraBlockchainConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-EsploraBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-EsploraBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a new instance of [`LogProgress`]"><meta name="keywords" content="rust, rustlang, rust-lang, log_progress"><title>log_progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="log_progress" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="fn" href="#">log_progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#324-326" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn log_progress() -> <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a new instance of <a href="struct.LogProgress.html" title="LogProgress"><code>LogProgress</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a new instance of [`LogProgress`]"><meta name="keywords" content="rust, rustlang, rust-lang, log_progress"><title>log_progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="fn" href="#">log_progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#324-326">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn log_progress() -> <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a new instance of <a href="struct.LogProgress.html" title="LogProgress"><code>LogProgress</code></a></p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a new instance of [`NoopProgress`]"><meta name="keywords" content="rust, rustlang, rust-lang, noop_progress"><title>noop_progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="noop_progress" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="fn" href="#">noop_progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#309-311" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn noop_progress() -> <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a new instance of <a href="struct.NoopProgress.html" title="NoopProgress"><code>NoopProgress</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a new instance of [`NoopProgress`]"><meta name="keywords" content="rust, rustlang, rust-lang, noop_progress"><title>noop_progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="fn" href="#">noop_progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#309-311">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn noop_progress() -> <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a new instance of <a href="struct.NoopProgress.html" title="NoopProgress"><code>NoopProgress</code></a></p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Shortcut to create a [`channel`] (pair of [`Sender`] and [`Receiver`]) that can transport [`ProgressData`]"><meta name="keywords" content="rust, rustlang, rust-lang, progress"><title>progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="progress" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="fn" href="#">progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#289-291" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn progress() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="struct std::sync::mpsc::Sender">Sender</a><<a class="type" href="type.ProgressData.html" title="type bdk::blockchain::ProgressData">ProgressData</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html" title="struct std::sync::mpsc::Receiver">Receiver</a><<a class="type" href="type.ProgressData.html" title="type bdk::blockchain::ProgressData">ProgressData</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Shortcut to create a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a> (pair of <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="Sender"><code>Sender</code></a> and <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html" title="Receiver"><code>Receiver</code></a>) that can transport <a href="type.ProgressData.html" title="ProgressData"><code>ProgressData</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Shortcut to create a [`channel`] (pair of [`Sender`] and [`Receiver`]) that can transport [`ProgressData`]"><meta name="keywords" content="rust, rustlang, rust-lang, progress"><title>progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="fn" href="#">progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#289-291">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn progress() -> (<a class="struct" href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="struct std::sync::mpsc::Sender">Sender</a><<a class="type" href="type.ProgressData.html" title="type bdk::blockchain::ProgressData">ProgressData</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html" title="struct std::sync::mpsc::Receiver">Receiver</a><<a class="type" href="type.ProgressData.html" title="type bdk::blockchain::ProgressData">ProgressData</a>>)</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Shortcut to create a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a> (pair of <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="Sender"><code>Sender</code></a> and <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html" title="Receiver"><code>Receiver</code></a>) that can transport <a href="type.ProgressData.html" title="ProgressData"><code>ProgressData</code></a></p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Blockchain backends"><meta name="keywords" content="rust, rustlang, rust-lang, blockchain"><title>bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module blockchain</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="blockchain" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">blockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#12-393" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Blockchain backends</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Blockchain backends"><meta name="keywords" content="rust, rustlang, rust-lang, blockchain"><title>bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module blockchain</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">blockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#12-393">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Blockchain backends</p>
<p>This module provides the implementation of a few commonly-used backends like
<a href="electrum/index.html">Electrum</a>, <a href="esplora/index.html">Esplora</a> and
<a href="compact_filters/index.html">Compact Filters/Neutrino</a>, along with a generalized trait
<a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> that can be implemented to build customized backends.</p>
-</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left import-item"><code>pub use any::<a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use any::<a class="enum" href="any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::electrum::<a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::electrum::<a class="struct" href="electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::rpc::<a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::rpc::<a class="struct" href="rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::compact_filters::<a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>;</code></div><div class="item-right docblock-short"></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="any/index.html" title="bdk::blockchain::any mod">any</a></div><div class="item-right docblock-short"><p>Runtime-checked blockchain types</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="compact_filters/index.html" title="bdk::blockchain::compact_filters mod">compact_filters</a><span class="stab portability" title="This is supported on crate feature `compact_filters` only"><code>compact_filters</code></span></div><div class="item-right docblock-short"><p>Compact Filters</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="electrum/index.html" title="bdk::blockchain::electrum mod">electrum</a><span class="stab portability" title="This is supported on crate feature `electrum` only"><code>electrum</code></span></div><div class="item-right docblock-short"><p>Electrum</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="esplora/index.html" title="bdk::blockchain::esplora mod">esplora</a><span class="stab portability" title="This is supported on crate feature `esplora` only"><code>esplora</code></span></div><div class="item-right docblock-short"><p>Esplora</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="rpc/index.html" title="bdk::blockchain::rpc mod">rpc</a><span class="stab portability" title="This is supported on crate feature `rpc` only"><code>rpc</code></span></div><div class="item-right docblock-short"><p>Rpc Blockchain</p>
-</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EsploraBlockchain.html" title="bdk::blockchain::EsploraBlockchain struct">EsploraBlockchain</a></div><div class="item-right docblock-short"><p>Structure that implements the logic to sync with Esplora</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.LogProgress.html" title="bdk::blockchain::LogProgress struct">LogProgress</a></div><div class="item-right docblock-short"><p>Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and logs at level <code>INFO</code> every update received</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.NoopProgress.html" title="bdk::blockchain::NoopProgress struct">NoopProgress</a></div><div class="item-right docblock-short"><p>Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and drops every update received</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Capability.html" title="bdk::blockchain::Capability enum">Capability</a></div><div class="item-right docblock-short"><p>Capabilities that can be supported by a <a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> backend</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Blockchain.html" title="bdk::blockchain::Blockchain trait">Blockchain</a></div><div class="item-right docblock-short"><p>Trait that defines the actions that must be supported by a blockchain backend</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.BlockchainFactory.html" title="bdk::blockchain::BlockchainFactory trait">BlockchainFactory</a></div><div class="item-right docblock-short"><p>Trait for a factory of blockchains that share the underlying connection or configuration</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ConfigurableBlockchain.html" title="bdk::blockchain::ConfigurableBlockchain trait">ConfigurableBlockchain</a></div><div class="item-right docblock-short"><p>Trait for <a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> types that can be created given a configuration</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GetBlockHash.html" title="bdk::blockchain::GetBlockHash trait">GetBlockHash</a></div><div class="item-right docblock-short"><p>Trait for getting block hash by block height</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GetHeight.html" title="bdk::blockchain::GetHeight trait">GetHeight</a></div><div class="item-right docblock-short"><p>Trait for getting the current height of the blockchain.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GetTx.html" title="bdk::blockchain::GetTx trait">GetTx</a></div><div class="item-right docblock-short"><p>Trait for getting a transaction by txid</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Progress.html" title="bdk::blockchain::Progress trait">Progress</a></div><div class="item-right docblock-short"><p>Trait for types that can receive and process progress updates during <a href="trait.WalletSync.html#method.wallet_sync" title="WalletSync::wallet_sync"><code>WalletSync::wallet_sync</code></a> and
-<a href="trait.WalletSync.html#tymethod.wallet_setup" title="WalletSync::wallet_setup"><code>WalletSync::wallet_setup</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.StatelessBlockchain.html" title="bdk::blockchain::StatelessBlockchain trait">StatelessBlockchain</a></div><div class="item-right docblock-short"><p>Trait for blockchains that don’t contain any state</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.WalletSync.html" title="bdk::blockchain::WalletSync trait">WalletSync</a></div><div class="item-right docblock-short"><p>Trait for blockchains that can sync by updating the database directly.</p>
-</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.log_progress.html" title="bdk::blockchain::log_progress fn">log_progress</a></div><div class="item-right docblock-short"><p>Create a new instance of <a href="struct.LogProgress.html" title="LogProgress"><code>LogProgress</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.noop_progress.html" title="bdk::blockchain::noop_progress fn">noop_progress</a></div><div class="item-right docblock-short"><p>Create a new instance of <a href="struct.NoopProgress.html" title="NoopProgress"><code>NoopProgress</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.progress.html" title="bdk::blockchain::progress fn">progress</a></div><div class="item-right docblock-short"><p>Shortcut to create a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a> (pair of <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="Sender"><code>Sender</code></a> and <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html" title="Receiver"><code>Receiver</code></a>) that can transport <a href="type.ProgressData.html" title="ProgressData"><code>ProgressData</code></a></p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ProgressData.html" title="bdk::blockchain::ProgressData type">ProgressData</a></div><div class="item-right docblock-short"><p>Data sent with a progress update over a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2><div class="item-table"><div class="item-row"><div class="item-left import-item" id="reexport.AnyBlockchain"><code>pub use any::<a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.AnyBlockchainConfig"><code>pub use any::<a class="enum" href="any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.ElectrumBlockchain"><code>pub use self::electrum::<a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.ElectrumBlockchainConfig"><code>pub use self::electrum::<a class="struct" href="electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.RpcBlockchain"><code>pub use self::rpc::<a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.RpcConfig"><code>pub use self::rpc::<a class="struct" href="rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.CompactFiltersBlockchain"><code>pub use self::compact_filters::<a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a>;</code></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="any/index.html" title="bdk::blockchain::any mod">any</a></div><div class="item-right docblock-short">Runtime-checked blockchain types</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="compact_filters/index.html" title="bdk::blockchain::compact_filters mod">compact_filters</a><span class="stab portability" title="Available on crate feature `compact_filters` only"><code>compact_filters</code></span></div><div class="item-right docblock-short">Compact Filters</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="electrum/index.html" title="bdk::blockchain::electrum mod">electrum</a><span class="stab portability" title="Available on crate feature `electrum` only"><code>electrum</code></span></div><div class="item-right docblock-short">Electrum</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="esplora/index.html" title="bdk::blockchain::esplora mod">esplora</a><span class="stab portability" title="Available on crate feature `esplora` only"><code>esplora</code></span></div><div class="item-right docblock-short">Esplora</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="rpc/index.html" title="bdk::blockchain::rpc mod">rpc</a><span class="stab portability" title="Available on crate feature `rpc` only"><code>rpc</code></span></div><div class="item-right docblock-short">Rpc Blockchain</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EsploraBlockchain.html" title="bdk::blockchain::EsploraBlockchain struct">EsploraBlockchain</a><span class="stab portability" title="Available on crate feature `esplora` only"><code>esplora</code></span></div><div class="item-right docblock-short">Structure that implements the logic to sync with Esplora</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.LogProgress.html" title="bdk::blockchain::LogProgress struct">LogProgress</a></div><div class="item-right docblock-short">Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and logs at level <code>INFO</code> every update received</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.NoopProgress.html" title="bdk::blockchain::NoopProgress struct">NoopProgress</a></div><div class="item-right docblock-short">Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and drops every update received</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Capability.html" title="bdk::blockchain::Capability enum">Capability</a></div><div class="item-right docblock-short">Capabilities that can be supported by a <a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> backend</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Blockchain.html" title="bdk::blockchain::Blockchain trait">Blockchain</a></div><div class="item-right docblock-short">Trait that defines the actions that must be supported by a blockchain backend</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.BlockchainFactory.html" title="bdk::blockchain::BlockchainFactory trait">BlockchainFactory</a></div><div class="item-right docblock-short">Trait for a factory of blockchains that share the underlying connection or configuration</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ConfigurableBlockchain.html" title="bdk::blockchain::ConfigurableBlockchain trait">ConfigurableBlockchain</a></div><div class="item-right docblock-short">Trait for <a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> types that can be created given a configuration</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GetBlockHash.html" title="bdk::blockchain::GetBlockHash trait">GetBlockHash</a></div><div class="item-right docblock-short">Trait for getting block hash by block height</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GetHeight.html" title="bdk::blockchain::GetHeight trait">GetHeight</a></div><div class="item-right docblock-short">Trait for getting the current height of the blockchain.</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GetTx.html" title="bdk::blockchain::GetTx trait">GetTx</a></div><div class="item-right docblock-short">Trait for getting a transaction by txid</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Progress.html" title="bdk::blockchain::Progress trait">Progress</a></div><div class="item-right docblock-short">Trait for types that can receive and process progress updates during <a href="trait.WalletSync.html#method.wallet_sync" title="WalletSync::wallet_sync"><code>WalletSync::wallet_sync</code></a> and
+<a href="trait.WalletSync.html#tymethod.wallet_setup" title="WalletSync::wallet_setup"><code>WalletSync::wallet_setup</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.StatelessBlockchain.html" title="bdk::blockchain::StatelessBlockchain trait">StatelessBlockchain</a></div><div class="item-right docblock-short">Trait for blockchains that don’t contain any state</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.WalletSync.html" title="bdk::blockchain::WalletSync trait">WalletSync</a></div><div class="item-right docblock-short">Trait for blockchains that can sync by updating the database directly.</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.log_progress.html" title="bdk::blockchain::log_progress fn">log_progress</a></div><div class="item-right docblock-short">Create a new instance of <a href="struct.LogProgress.html" title="LogProgress"><code>LogProgress</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.noop_progress.html" title="bdk::blockchain::noop_progress fn">noop_progress</a></div><div class="item-right docblock-short">Create a new instance of <a href="struct.NoopProgress.html" title="NoopProgress"><code>NoopProgress</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.progress.html" title="bdk::blockchain::progress fn">progress</a></div><div class="item-right docblock-short">Shortcut to create a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a> (pair of <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="Sender"><code>Sender</code></a> and <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html" title="Receiver"><code>Receiver</code></a>) that can transport <a href="type.ProgressData.html" title="ProgressData"><code>ProgressData</code></a></div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ProgressData.html" title="bdk::blockchain::ProgressData type">ProgressData</a></div><div class="item-right docblock-short">Data sent with a progress update over a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="This struct is equivalent to [bitcoincore_rpc::Auth] but it implements [serde::Serialize] To be removed once upstream equivalent is implementing Serialize (json serialization format should be the same), see rust-bitcoincore-rpc/pull/181"><meta name="keywords" content="rust, rustlang, rust-lang, Auth"><title>Auth in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Auth</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Cookie">Cookie</a><a href="#variant.None">None</a><a href="#variant.UserPass">UserPass</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CAuth%3E">From<Auth></a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CAuth%3E">PartialEq<Auth></a><a href="#impl-PartialOrd%3CAuth%3E">PartialOrd<Auth></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a></h2><div id="sidebar-vars" data-name="Auth" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="enum" href="#">Auth</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#128-143" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Auth {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="This struct is equivalent to [bitcoincore_rpc::Auth] but it implements [serde::Serialize] To be removed once upstream equivalent is implementing Serialize (json serialization format should be the same), see rust-bitcoincore-rpc/pull/181"><meta name="keywords" content="rust, rustlang, rust-lang, Auth"><title>Auth in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Auth</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Cookie">Cookie</a></li><li><a href="#variant.None">None</a></li><li><a href="#variant.UserPass">UserPass</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Auth">Clone</a></li><li><a href="#impl-Debug-for-Auth">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-Auth">Deserialize<'de></a></li><li><a href="#impl-Eq-for-Auth">Eq</a></li><li><a href="#impl-From%3CAuth%3E-for-RpcAuth">From<Auth></a></li><li><a href="#impl-Hash-for-Auth">Hash</a></li><li><a href="#impl-Ord-for-Auth">Ord</a></li><li><a href="#impl-PartialEq%3CAuth%3E-for-Auth">PartialEq<Auth></a></li><li><a href="#impl-PartialOrd%3CAuth%3E-for-Auth">PartialOrd<Auth></a></li><li><a href="#impl-Serialize-for-Auth">Serialize</a></li><li><a href="#impl-StructuralEq-for-Auth">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Auth">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Auth">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Auth">Send</a></li><li><a href="#impl-Sync-for-Auth">Sync</a></li><li><a href="#impl-Unpin-for-Auth">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Auth">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Auth">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Auth">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Auth">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Auth">CallHasher</a></li><li><a href="#impl-DeserializeOwned-for-Auth">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-Auth">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Auth">Into<U></a></li><li><a href="#impl-Pointable-for-Auth">Pointable</a></li><li><a href="#impl-ToOwned-for-Auth">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Auth">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Auth">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Auth">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::rpc</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="enum" href="#">Auth</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#128-143">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Auth {
None,
UserPass {
username: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
Cookie {
file: <a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.PathBuf.html" title="struct std::path::PathBuf">PathBuf</a>,
},
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>This struct is equivalent to [bitcoincore_rpc::Auth] but it implements <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="serde::Serialize">serde::Serialize</a>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>This struct is equivalent to [bitcoincore_rpc::Auth] but it implements <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="serde::Serialize">serde::Serialize</a>
To be removed once upstream equivalent is implementing Serialize (json serialization format
should be the same), see <a href="https://github.com/rust-bitcoin/rust-bitcoincore-rpc/pull/181">rust-bitcoincore-rpc/pull/181</a></p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.None" class="variant small-section-header"><a href="#variant.None" class="anchor field"></a><code>None</code></h3><div class="docblock"><p>None authentication</p>
-</div><h3 id="variant.UserPass" class="variant small-section-header"><a href="#variant.UserPass" class="anchor field"></a><code>UserPass</code></h3><div class="sub-variant" id="variant.UserPass.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.UserPass.field.username" class="variant small-section-header"><a href="#variant.UserPass.field.username" class="anchor field"></a><code>username: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Username</p>
-</div></div><div class="sub-variant-field"><span id="variant.UserPass.field.password" class="variant small-section-header"><a href="#variant.UserPass.field.password" class="anchor field"></a><code>password: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Password</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.None" class="variant"><a href="#variant.None" class="anchor">§</a><h3 class="code-header">None</h3></section><div class="docblock"><p>None authentication</p>
+</div><section id="variant.UserPass" class="variant"><a href="#variant.UserPass" class="anchor">§</a><h3 class="code-header">UserPass</h3></section><div class="sub-variant" id="variant.UserPass.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.UserPass.field.username" class="small-section-header"><a href="#variant.UserPass.field.username" class="anchor field">§</a><code>username: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Username</p>
+</div></div><div class="sub-variant-field"><span id="variant.UserPass.field.password" class="small-section-header"><a href="#variant.UserPass.field.password" class="anchor field">§</a><code>password: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Password</p>
</div></div></div><div class="docblock"><p>Authentication with username and password, usually <a href="enum.Auth.html#variant.Cookie" title="Auth::Cookie">Auth::Cookie</a> should be preferred</p>
-</div><h3 id="variant.Cookie" class="variant small-section-header"><a href="#variant.Cookie" class="anchor field"></a><code>Cookie</code></h3><div class="sub-variant" id="variant.Cookie.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Cookie.field.file" class="variant small-section-header"><a href="#variant.Cookie.field.file" class="anchor field"></a><code>file: <a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.PathBuf.html" title="struct std::path::PathBuf">PathBuf</a></code></span><div class="docblock"><p>Cookie file</p>
+</div><section id="variant.Cookie" class="variant"><a href="#variant.Cookie" class="anchor">§</a><h3 class="code-header">Cookie</h3></section><div class="sub-variant" id="variant.Cookie.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Cookie.field.file" class="small-section-header"><a href="#variant.Cookie.field.file" class="anchor field">§</a><code>file: <a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.PathBuf.html" title="struct std::path::PathBuf">PathBuf</a></code></span><div class="docblock"><p>Cookie file</p>
</div></div></div><div class="docblock"><p>Authentication with a cookie file</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CAuth%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#145-153" title="goto source code">source</a></div><a href="#impl-From%3CAuth%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>> for RpcAuth</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#146-152" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CAuth%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-PartialEq%3CAuth%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CAuth%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CAuth%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#125" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Clone-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Debug-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Deserialize%3C%27de%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CAuth%3E-for-RpcAuth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#145-153">source</a><a href="#impl-From%3CAuth%3E-for-RpcAuth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>> for RpcAuth</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#146-152">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Hash-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Ord-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CAuth%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-PartialEq%3CAuth%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CAuth%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-PartialOrd%3CAuth%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Serialize-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-Eq-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section><section id="impl-StructuralEq-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-StructuralEq-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section><section id="impl-StructuralPartialEq-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#125">source</a><a href="#impl-StructuralPartialEq-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Auth" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section><section id="impl-Send-for-Auth" class="impl has-srclink"><a href="#impl-Send-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section><section id="impl-Sync-for-Auth" class="impl has-srclink"><a href="#impl-Sync-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section><section id="impl-Unpin-for-Auth" class="impl has-srclink"><a href="#impl-Unpin-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section><section id="impl-UnwindSafe-for-Auth" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Auth" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Auth" class="impl has-srclink"><a href="#impl-CallHasher-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Auth" class="impl has-srclink"><a href="#impl-Pointable-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Auth" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Auth" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-Auth" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-Auth" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Rpc Blockchain"><meta name="keywords" content="rust, rustlang, rust-lang, rpc"><title>bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module rpc</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><div id="sidebar-vars" data-name="rpc" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">rpc</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#12-1000" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Rpc Blockchain</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Rpc Blockchain"><meta name="keywords" content="rust, rustlang, rust-lang, rpc"><title>bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module rpc</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a class="mod" href="#">rpc</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#12-1000">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Rpc Blockchain</p>
<p>Backend that gets blockchain data from Bitcoin Core RPC</p>
<p>This is an <strong>EXPERIMENTAL</strong> feature, API and other major changes are expected.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">RpcConfig</span> {
- <span class="ident">url</span>: <span class="string">"127.0.0.1:18332"</span>.<span class="ident">to_string</span>(),
- <span class="ident">auth</span>: <span class="ident">Auth::Cookie</span> {
- <span class="ident">file</span>: <span class="string">"/home/user/.bitcoin/.cookie"</span>.<span class="ident">into</span>(),
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>config = RpcConfig {
+ url: <span class="string">"127.0.0.1:18332"</span>.to_string(),
+ auth: Auth::Cookie {
+ file: <span class="string">"/home/user/.bitcoin/.cookie"</span>.into(),
},
- <span class="ident">network</span>: <span class="ident">bdk::bitcoin::Network::Testnet</span>,
- <span class="ident">wallet_name</span>: <span class="string">"wallet_name"</span>.<span class="ident">to_string</span>(),
- <span class="ident">sync_params</span>: <span class="prelude-val">None</span>,
+ network: bdk::bitcoin::Network::Testnet,
+ wallet_name: <span class="string">"wallet_name"</span>.to_string(),
+ sync_params: <span class="prelude-val">None</span>,
};
-<span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">RpcBlockchain::from_config</span>(<span class="kw-2">&</span><span class="ident">config</span>);</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcBlockchain.html" title="bdk::blockchain::rpc::RpcBlockchain struct">RpcBlockchain</a></div><div class="item-right docblock-short"><p>The main struct for RPC backend implementing the <a href="../trait.Blockchain.html" title="crate::blockchain::Blockchain">crate::blockchain::Blockchain</a> trait</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcBlockchainFactory.html" title="bdk::blockchain::rpc::RpcBlockchainFactory struct">RpcBlockchainFactory</a></div><div class="item-right docblock-short"><p>Factory of <a href="struct.RpcBlockchain.html" title="RpcBlockchain"><code>RpcBlockchain</code></a> instances, implements <a href="../trait.BlockchainFactory.html" title="BlockchainFactory"><code>BlockchainFactory</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcConfig.html" title="bdk::blockchain::rpc::RpcConfig struct">RpcConfig</a></div><div class="item-right docblock-short"><p>RpcBlockchain configuration options</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcSyncParams.html" title="bdk::blockchain::rpc::RpcSyncParams struct">RpcSyncParams</a></div><div class="item-right docblock-short"><p>Sync parameters for Bitcoin Core RPC.</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Auth.html" title="bdk::blockchain::rpc::Auth enum">Auth</a></div><div class="item-right docblock-short"><p>This struct is equivalent to [bitcoincore_rpc::Auth] but it implements <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="serde::Serialize">serde::Serialize</a>
+<span class="kw">let </span>blockchain = RpcBlockchain::from_config(<span class="kw-2">&</span>config);</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcBlockchain.html" title="bdk::blockchain::rpc::RpcBlockchain struct">RpcBlockchain</a></div><div class="item-right docblock-short">The main struct for RPC backend implementing the <a href="../trait.Blockchain.html" title="crate::blockchain::Blockchain">crate::blockchain::Blockchain</a> trait</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcBlockchainFactory.html" title="bdk::blockchain::rpc::RpcBlockchainFactory struct">RpcBlockchainFactory</a></div><div class="item-right docblock-short">Factory of <a href="struct.RpcBlockchain.html" title="RpcBlockchain"><code>RpcBlockchain</code></a> instances, implements <a href="../trait.BlockchainFactory.html" title="BlockchainFactory"><code>BlockchainFactory</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcConfig.html" title="bdk::blockchain::rpc::RpcConfig struct">RpcConfig</a></div><div class="item-right docblock-short">RpcBlockchain configuration options</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RpcSyncParams.html" title="bdk::blockchain::rpc::RpcSyncParams struct">RpcSyncParams</a></div><div class="item-right docblock-short">Sync parameters for Bitcoin Core RPC.</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Auth.html" title="bdk::blockchain::rpc::Auth enum">Auth</a></div><div class="item-right docblock-short">This struct is equivalent to [bitcoincore_rpc::Auth] but it implements <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="serde::Serialize">serde::Serialize</a>
To be removed once upstream equivalent is implementing Serialize (json serialization format
-should be the same), see <a href="https://github.com/rust-bitcoin/rust-bitcoincore-rpc/pull/181">rust-bitcoincore-rpc/pull/181</a></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+should be the same), see <a href="https://github.com/rust-bitcoin/rust-bitcoincore-rpc/pull/181">rust-bitcoincore-rpc/pull/181</a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Auth","This struct is equivalent to [bitcoincore_rpc::Auth] but it implements [serde::Serialize] To be removed once upstream equivalent is implementing Serialize (json serialization format should be the same), see rust-bitcoincore-rpc/pull/181"]],"struct":[["RpcBlockchain","The main struct for RPC backend implementing the [crate::blockchain::Blockchain] trait"],["RpcBlockchainFactory","Factory of [`RpcBlockchain`] instances, implements [`BlockchainFactory`]"],["RpcConfig","RpcBlockchain configuration options"],["RpcSyncParams","Sync parameters for Bitcoin Core RPC."]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Auth","This struct is equivalent to [bitcoincore_rpc::Auth] but it implements [serde::Serialize] To be removed once upstream equivalent is implementing Serialize (json serialization format should be the same), see rust-bitcoincore-rpc/pull/181"]],"struct":[["RpcBlockchain","The main struct for RPC backend implementing the [crate::blockchain::Blockchain] trait"],["RpcBlockchainFactory","Factory of [`RpcBlockchain`] instances, implements [`BlockchainFactory`]"],["RpcConfig","RpcBlockchain configuration options"],["RpcSyncParams","Sync parameters for Bitcoin Core RPC."]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The main struct for RPC backend implementing the [crate::blockchain::Blockchain] trait"><meta name="keywords" content="rust, rustlang, rust-lang, RpcBlockchain"><title>RpcBlockchain in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">RpcBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#deref-methods-Client">Methods from Deref<Target=Client></a></h3><div class="sidebar-links"><a href="#method.get_jsonrpc_client">get_jsonrpc_client</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Blockchain">Blockchain</a><a href="#impl-ConfigurableBlockchain">ConfigurableBlockchain</a><a href="#impl-Debug">Debug</a><a href="#impl-Deref">Deref</a><a href="#impl-From%3CRpcBlockchain%3E">From<RpcBlockchain></a><a href="#impl-GetBlockHash">GetBlockHash</a><a href="#impl-GetHeight">GetHeight</a><a href="#impl-GetTx">GetTx</a><a href="#impl-WalletSync">WalletSync</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a></h2><div id="sidebar-vars" data-name="RpcBlockchain" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#60-69" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct RpcBlockchain { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The main struct for RPC backend implementing the <a href="../trait.Blockchain.html" title="crate::blockchain::Blockchain">crate::blockchain::Blockchain</a> trait</p>
-</div></details><h2 id="deref-methods-Client" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = Client></span><a href="#deref-methods-Client" class="anchor"></a></h2><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_jsonrpc_client" class="method has-srclink"><div class="rightside"></div><a href="#method.get_jsonrpc_client" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_jsonrpc_client" class="fnname">get_jsonrpc_client</a>(&self) -> &Client</h4></div></summary><div class="docblock"><p>Get the underlying JSONRPC client.</p>
-</div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#155-174" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#156-158" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class='docblock'><p>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#160-162" title="goto source code">source</a></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#164-173" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#207-278" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#212-277" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Returns RpcBlockchain backend creating an RPC client to a specific wallet named as the descriptor’s checksum
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The main struct for RPC backend implementing the [crate::blockchain::Blockchain] trait"><meta name="keywords" content="rust, rustlang, rust-lang, RpcBlockchain"><title>RpcBlockchain in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">RpcBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#deref-methods-Client">Methods from Deref<Target=Client></a></h3><ul class="block"><li><a href="#method.get_jsonrpc_client">get_jsonrpc_client</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-RpcBlockchain">Blockchain</a></li><li><a href="#impl-ConfigurableBlockchain-for-RpcBlockchain">ConfigurableBlockchain</a></li><li><a href="#impl-Debug-for-RpcBlockchain">Debug</a></li><li><a href="#impl-Deref-for-RpcBlockchain">Deref</a></li><li><a href="#impl-From%3CRpcBlockchain%3E-for-AnyBlockchain">From<RpcBlockchain></a></li><li><a href="#impl-GetBlockHash-for-RpcBlockchain">GetBlockHash</a></li><li><a href="#impl-GetHeight-for-RpcBlockchain">GetHeight</a></li><li><a href="#impl-GetTx-for-RpcBlockchain">GetTx</a></li><li><a href="#impl-WalletSync-for-RpcBlockchain">WalletSync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-RpcBlockchain">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-RpcBlockchain">Send</a></li><li><a href="#impl-Sync-for-RpcBlockchain">Sync</a></li><li><a href="#impl-Unpin-for-RpcBlockchain">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RpcBlockchain">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-RpcBlockchain">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-RpcBlockchain">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-RpcBlockchain">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-RpcBlockchain">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-RpcBlockchain">Into<U></a></li><li><a href="#impl-Pointable-for-RpcBlockchain">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-RpcBlockchain">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-RpcBlockchain">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-RpcBlockchain">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::rpc</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#60-69">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct RpcBlockchain { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The main struct for RPC backend implementing the <a href="../trait.Blockchain.html" title="crate::blockchain::Blockchain">crate::blockchain::Blockchain</a> trait</p>
+</div></details><h2 id="deref-methods-Client" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = Client></span><a href="#deref-methods-Client" class="anchor">§</a></h2><div id="deref-methods-Client-1"><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_jsonrpc_client" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_jsonrpc_client" class="fn">get_jsonrpc_client</a>(&self) -> &Client</h4></section></summary><div class="docblock"><p>Get the underlying JSONRPC client.</p>
+</div></details></div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Blockchain-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#155-174">source</a><a href="#impl-Blockchain-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#156-158">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="../enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class='docblock'>Return the set of <a href="../enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#160-162">source</a><a href="#method.broadcast" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Broadcast a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#164-173">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Blockchain.html#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableBlockchain-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#207-278">source</a><a href="#impl-ConfigurableBlockchain-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#212-277">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableBlockchain.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Returns RpcBlockchain backend creating an RPC client to a specific wallet named as the descriptor’s checksum
if it’s the first time it creates the wallet in the node and upon return is granted the wallet is loaded</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#59" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#59" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#71-77" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = Client</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#74-76" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CRpcBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#162" title="goto source code">source</a></div><a href="#impl-From%3CRpcBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#162" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#188-192" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#189-191" title="goto source code">source</a></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>fetch block hash given its height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#182-186" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#183-185" title="goto source code">source</a></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the current height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#176-180" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#177-179" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a transaction given its txid</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#194-205" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#195-204" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fnname">wallet_setup</a><D>(<br> &self, <br> db: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> prog: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>> <span class="where fmt-newline">where<br> D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, </span></h4></div></summary><div class='docblock'><p>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_sync" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/mod.rs.html#157-163" title="goto source code">source</a></div><a href="#method.wallet_sync" class="anchor"></a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#59">source</a><a href="#impl-Debug-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#59">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#71-77">source</a><a href="#impl-Deref-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = Client</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#74-76">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CRpcBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#162">source</a><a href="#impl-From%3CRpcBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>> for <a class="enum" href="../any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#162">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetBlockHash-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#188-192">source</a><a href="#impl-GetBlockHash-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#189-191">source</a><a href="#method.get_block_hash" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetBlockHash.html#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>fetch block hash given its height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetHeight-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#182-186">source</a><a href="#impl-GetHeight-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#183-185">source</a><a href="#method.get_height" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetHeight.html#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the current height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetTx-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#176-180">source</a><a href="#impl-GetTx-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#177-179">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GetTx.html#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a transaction given its txid</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-WalletSync-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#194-205">source</a><a href="#impl-WalletSync-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#195-204">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#tymethod.wallet_setup" class="fn">wallet_setup</a><D>(<br> &self,<br> db: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> prog: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>><span class="where fmt-newline">where<br> D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>,</span></h4></section></summary><div class='docblock'>Setup the backend and populate the internal database for the first time <a href="../trait.WalletSync.html#tymethod.wallet_setup">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/mod.rs.html#157-163">source</a><a href="#method.wallet_sync" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.WalletSync.html#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>If not overridden, it defaults to calling <a href="../trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="../trait.WalletSync.html#method.wallet_sync">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section><section id="impl-Send-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-Send-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section><section id="impl-Sync-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-Sync-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section><section id="impl-Unpin-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-Unpin-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section><section id="impl-UnwindSafe-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-UnwindSafe-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-Pointable-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-RpcBlockchain" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Factory of [`RpcBlockchain`] instances, implements [`BlockchainFactory`]"><meta name="keywords" content="rust, rustlang, rust-lang, RpcBlockchainFactory"><title>RpcBlockchainFactory in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">RpcBlockchainFactory</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.auth">auth</a><a href="#structfield.default_skip_blocks">default_skip_blocks</a><a href="#structfield.network">network</a><a href="#structfield.sync_params">sync_params</a><a href="#structfield.url">url</a><a href="#structfield.wallet_name_prefix">wallet_name_prefix</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-BlockchainFactory">BlockchainFactory</a><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a></h2><div id="sidebar-vars" data-name="RpcBlockchainFactory" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcBlockchainFactory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#839-852" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct RpcBlockchainFactory {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Factory of [`RpcBlockchain`] instances, implements [`BlockchainFactory`]"><meta name="keywords" content="rust, rustlang, rust-lang, RpcBlockchainFactory"><title>RpcBlockchainFactory in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">RpcBlockchainFactory</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.auth">auth</a></li><li><a href="#structfield.default_skip_blocks">default_skip_blocks</a></li><li><a href="#structfield.network">network</a></li><li><a href="#structfield.sync_params">sync_params</a></li><li><a href="#structfield.url">url</a></li><li><a href="#structfield.wallet_name_prefix">wallet_name_prefix</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-BlockchainFactory-for-RpcBlockchainFactory">BlockchainFactory</a></li><li><a href="#impl-Clone-for-RpcBlockchainFactory">Clone</a></li><li><a href="#impl-Debug-for-RpcBlockchainFactory">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-RpcBlockchainFactory">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RpcBlockchainFactory">Send</a></li><li><a href="#impl-Sync-for-RpcBlockchainFactory">Sync</a></li><li><a href="#impl-Unpin-for-RpcBlockchainFactory">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RpcBlockchainFactory">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-RpcBlockchainFactory">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-RpcBlockchainFactory">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-RpcBlockchainFactory">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-RpcBlockchainFactory">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-RpcBlockchainFactory">Into<U></a></li><li><a href="#impl-Pointable-for-RpcBlockchainFactory">Pointable</a></li><li><a href="#impl-ToOwned-for-RpcBlockchainFactory">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-RpcBlockchainFactory">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-RpcBlockchainFactory">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-RpcBlockchainFactory">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::rpc</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcBlockchainFactory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#839-852">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct RpcBlockchainFactory {
pub url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>,
pub network: Network,
pub wallet_name_prefix: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>,
pub default_skip_blocks: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
pub sync_params: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Factory of <a href="struct.RpcBlockchain.html" title="RpcBlockchain"><code>RpcBlockchain</code></a> instances, implements <a href="../trait.BlockchainFactory.html" title="BlockchainFactory"><code>BlockchainFactory</code></a></p>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Factory of <a href="struct.RpcBlockchain.html" title="RpcBlockchain"><code>RpcBlockchain</code></a> instances, implements <a href="../trait.BlockchainFactory.html" title="BlockchainFactory"><code>BlockchainFactory</code></a></p>
<p>Internally caches the node url and authentication params and allows getting many different <a href="struct.RpcBlockchain.html" title="RpcBlockchain"><code>RpcBlockchain</code></a>
objects for different wallet names and with different rescan heights.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">factory</span> <span class="op">=</span> <span class="ident">RpcBlockchainFactory</span> {
- <span class="ident">url</span>: <span class="string">"http://127.0.0.1:18332"</span>.<span class="ident">to_string</span>(),
- <span class="ident">auth</span>: <span class="ident">Auth::Cookie</span> {
- <span class="ident">file</span>: <span class="string">"/home/user/.bitcoin/.cookie"</span>.<span class="ident">into</span>(),
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>factory = RpcBlockchainFactory {
+ url: <span class="string">"http://127.0.0.1:18332"</span>.to_string(),
+ auth: Auth::Cookie {
+ file: <span class="string">"/home/user/.bitcoin/.cookie"</span>.into(),
},
- <span class="ident">network</span>: <span class="ident">Network::Testnet</span>,
- <span class="ident">wallet_name_prefix</span>: <span class="prelude-val">Some</span>(<span class="string">"prefix-"</span>.<span class="ident">to_string</span>()),
- <span class="ident">default_skip_blocks</span>: <span class="number">100_000</span>,
- <span class="ident">sync_params</span>: <span class="prelude-val">None</span>,
+ network: Network::Testnet,
+ wallet_name_prefix: <span class="prelude-val">Some</span>(<span class="string">"prefix-"</span>.to_string()),
+ default_skip_blocks: <span class="number">100_000</span>,
+ sync_params: <span class="prelude-val">None</span>,
};
-<span class="kw">let</span> <span class="ident">main_wallet_blockchain</span> <span class="op">=</span> <span class="ident">factory</span>.<span class="ident">build</span>(<span class="string">"main_wallet"</span>, <span class="prelude-val">Some</span>(<span class="number">200_000</span>))<span class="question-mark">?</span>;</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.url" class="structfield small-section-header"><a href="#structfield.url" class="anchor field"></a><code>url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>The bitcoin node url</p>
-</div><span id="structfield.auth" class="structfield small-section-header"><a href="#structfield.auth" class="anchor field"></a><code>auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></code></span><div class="docblock"><p>The bitcoin node authentication mechanism</p>
-</div><span id="structfield.network" class="structfield small-section-header"><a href="#structfield.network" class="anchor field"></a><code>network: Network</code></span><div class="docblock"><p>The network we are using (it will be checked the bitcoin node network matches this)</p>
-</div><span id="structfield.wallet_name_prefix" class="structfield small-section-header"><a href="#structfield.wallet_name_prefix" class="anchor field"></a><code>wallet_name_prefix: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>The optional prefix used to build the full wallet name for blockchains</p>
-</div><span id="structfield.default_skip_blocks" class="structfield small-section-header"><a href="#structfield.default_skip_blocks" class="anchor field"></a><code>default_skip_blocks: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Default number of blocks to skip which will be inherited by blockchain unless overridden</p>
-</div><span id="structfield.sync_params" class="structfield small-section-header"><a href="#structfield.sync_params" class="anchor field"></a><code>sync_params: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>></code></span><div class="docblock"><p>Sync parameters</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BlockchainFactory" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#854-874" title="goto source code">source</a></div><a href="#impl-BlockchainFactory" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.BlockchainFactory.html" title="trait bdk::blockchain::BlockchainFactory">BlockchainFactory</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Inner" class="type trait-impl has-srclink"><a href="#associatedtype.Inner" class="anchor"></a><h4 class="code-header">type <a href="../trait.BlockchainFactory.html#associatedtype.Inner" class="associatedtype">Inner</a> = <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h4></div></summary><div class='docblock'><p>The type returned when building a blockchain from this factory</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#857-873" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BlockchainFactory.html#tymethod.build" class="fnname">build</a>(<br> &self, <br> checksum: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> _override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="../trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Build a new blockchain for the given descriptor wallet_name <a href="../trait.BlockchainFactory.html#tymethod.build">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build_for_wallet" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/mod.rs.html#230-242" title="goto source code">source</a></div><a href="#method.build_for_wallet" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BlockchainFactory.html#method.build_for_wallet" class="fnname">build_for_wallet</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> wallet: &<a class="struct" href="../../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="../trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Build a new blockchain for a given wallet <a href="../trait.BlockchainFactory.html#method.build_for_wallet">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sync_wallet" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/mod.rs.html#256-264" title="goto source code">source</a></div><a href="#method.sync_wallet" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BlockchainFactory.html#method.sync_wallet" class="fnname">sync_wallet</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> wallet: &<a class="struct" href="../../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <br> sync_options: <a class="struct" href="../../wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab portability">This is supported on <strong>neither WebAssembly nor crate feature <code>async-interface</code></strong>.</div></div><div class='docblock'><p>Use <a href="../trait.BlockchainFactory.html#method.build_for_wallet" title="BlockchainFactory::build_for_wallet"><code>BlockchainFactory::build_for_wallet</code></a> to get a blockchain, then sync the wallet <a href="../trait.BlockchainFactory.html#method.sync_wallet">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#838" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#838" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#838" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#838" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="kw">let </span>main_wallet_blockchain = factory.build(<span class="string">"main_wallet"</span>, <span class="prelude-val">Some</span>(<span class="number">200_000</span>))<span class="question-mark">?</span>;</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.url" class="structfield small-section-header"><a href="#structfield.url" class="anchor field">§</a><code>url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>The bitcoin node url</p>
+</div><span id="structfield.auth" class="structfield small-section-header"><a href="#structfield.auth" class="anchor field">§</a><code>auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></code></span><div class="docblock"><p>The bitcoin node authentication mechanism</p>
+</div><span id="structfield.network" class="structfield small-section-header"><a href="#structfield.network" class="anchor field">§</a><code>network: Network</code></span><div class="docblock"><p>The network we are using (it will be checked the bitcoin node network matches this)</p>
+</div><span id="structfield.wallet_name_prefix" class="structfield small-section-header"><a href="#structfield.wallet_name_prefix" class="anchor field">§</a><code>wallet_name_prefix: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></code></span><div class="docblock"><p>The optional prefix used to build the full wallet name for blockchains</p>
+</div><span id="structfield.default_skip_blocks" class="structfield small-section-header"><a href="#structfield.default_skip_blocks" class="anchor field">§</a><code>default_skip_blocks: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Default number of blocks to skip which will be inherited by blockchain unless overridden</p>
+</div><span id="structfield.sync_params" class="structfield small-section-header"><a href="#structfield.sync_params" class="anchor field">§</a><code>sync_params: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>></code></span><div class="docblock"><p>Sync parameters</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BlockchainFactory-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#854-874">source</a><a href="#impl-BlockchainFactory-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.BlockchainFactory.html" title="trait bdk::blockchain::BlockchainFactory">BlockchainFactory</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Inner" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Inner" class="anchor">§</a><h4 class="code-header">type <a href="../trait.BlockchainFactory.html#associatedtype.Inner" class="associatedtype">Inner</a> = <a class="struct" href="struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h4></section></summary><div class='docblock'>The type returned when building a blockchain from this factory</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#857-873">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BlockchainFactory.html#tymethod.build" class="fn">build</a>(<br> &self,<br> checksum: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> _override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="../trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Build a new blockchain for the given descriptor wallet_name <a href="../trait.BlockchainFactory.html#tymethod.build">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build_for_wallet" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/mod.rs.html#230-242">source</a><a href="#method.build_for_wallet" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BlockchainFactory.html#method.build_for_wallet" class="fn">build_for_wallet</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> wallet: &<a class="struct" href="../../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="../trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Build a new blockchain for a given wallet <a href="../trait.BlockchainFactory.html#method.build_for_wallet">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sync_wallet" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/mod.rs.html#256-264">source</a><a href="#method.sync_wallet" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BlockchainFactory.html#method.sync_wallet" class="fn">sync_wallet</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> wallet: &<a class="struct" href="../../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>,<br> sync_options: <a class="struct" href="../../wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab portability">Available on <strong>neither WebAssembly nor crate feature <code>async-interface</code></strong>.</div></span><div class='docblock'>Use <a href="../trait.BlockchainFactory.html#method.build_for_wallet" title="BlockchainFactory::build_for_wallet"><code>BlockchainFactory::build_for_wallet</code></a> to get a blockchain, then sync the wallet <a href="../trait.BlockchainFactory.html#method.sync_wallet">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#838">source</a><a href="#impl-Clone-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#838">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#838">source</a><a href="#impl-Debug-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#838">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section><section id="impl-Send-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-Send-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section><section id="impl-Sync-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-Sync-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section><section id="impl-Unpin-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-Unpin-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section><section id="impl-UnwindSafe-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-UnwindSafe-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-Pointable-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-RpcBlockchainFactory" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="RpcBlockchain configuration options"><meta name="keywords" content="rust, rustlang, rust-lang, RpcConfig"><title>RpcConfig in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">RpcConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.auth">auth</a><a href="#structfield.network">network</a><a href="#structfield.sync_params">sync_params</a><a href="#structfield.url">url</a><a href="#structfield.wallet_name">wallet_name</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CRpcConfig%3E">From<RpcConfig></a><a href="#impl-PartialEq%3CRpcConfig%3E">PartialEq<RpcConfig></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a></h2><div id="sidebar-vars" data-name="RpcConfig" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#81-92" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct RpcConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="RpcBlockchain configuration options"><meta name="keywords" content="rust, rustlang, rust-lang, RpcConfig"><title>RpcConfig in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">RpcConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.auth">auth</a></li><li><a href="#structfield.network">network</a></li><li><a href="#structfield.sync_params">sync_params</a></li><li><a href="#structfield.url">url</a></li><li><a href="#structfield.wallet_name">wallet_name</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-RpcConfig">Clone</a></li><li><a href="#impl-Debug-for-RpcConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-RpcConfig">Deserialize<'de></a></li><li><a href="#impl-Eq-for-RpcConfig">Eq</a></li><li><a href="#impl-From%3CRpcConfig%3E-for-AnyBlockchainConfig">From<RpcConfig></a></li><li><a href="#impl-PartialEq%3CRpcConfig%3E-for-RpcConfig">PartialEq<RpcConfig></a></li><li><a href="#impl-Serialize-for-RpcConfig">Serialize</a></li><li><a href="#impl-StructuralEq-for-RpcConfig">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-RpcConfig">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-RpcConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RpcConfig">Send</a></li><li><a href="#impl-Sync-for-RpcConfig">Sync</a></li><li><a href="#impl-Unpin-for-RpcConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RpcConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-RpcConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-RpcConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-RpcConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-RpcConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-RpcConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-RpcConfig">Into<U></a></li><li><a href="#impl-Pointable-for-RpcConfig">Pointable</a></li><li><a href="#impl-ToOwned-for-RpcConfig">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-RpcConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-RpcConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-RpcConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::rpc</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#81-92">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct RpcConfig {
pub url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a>,
pub network: Network,
pub wallet_name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub sync_params: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>RpcBlockchain configuration options</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.url" class="structfield small-section-header"><a href="#structfield.url" class="anchor field"></a><code>url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>The bitcoin node url</p>
-</div><span id="structfield.auth" class="structfield small-section-header"><a href="#structfield.auth" class="anchor field"></a><code>auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></code></span><div class="docblock"><p>The bitcoin node authentication mechanism</p>
-</div><span id="structfield.network" class="structfield small-section-header"><a href="#structfield.network" class="anchor field"></a><code>network: Network</code></span><div class="docblock"><p>The network we are using (it will be checked the bitcoin node network matches this)</p>
-</div><span id="structfield.wallet_name" class="structfield small-section-header"><a href="#structfield.wallet_name" class="anchor field"></a><code>wallet_name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>The wallet name in the bitcoin node, consider using <a href="../../wallet/fn.wallet_name_from_descriptor.html" title="crate::wallet::wallet_name_from_descriptor">crate::wallet::wallet_name_from_descriptor</a> for this</p>
-</div><span id="structfield.sync_params" class="structfield small-section-header"><a href="#structfield.sync_params" class="anchor field"></a><code>sync_params: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>></code></span><div class="docblock"><p>Sync parameters</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CRpcConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#246" title="goto source code">source</a></div><a href="#impl-From%3CRpcConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/any.rs.html#246" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CRpcConfig%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-PartialEq%3CRpcConfig%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#80" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>RpcBlockchain configuration options</p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.url" class="structfield small-section-header"><a href="#structfield.url" class="anchor field">§</a><code>url: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>The bitcoin node url</p>
+</div><span id="structfield.auth" class="structfield small-section-header"><a href="#structfield.auth" class="anchor field">§</a><code>auth: <a class="enum" href="enum.Auth.html" title="enum bdk::blockchain::rpc::Auth">Auth</a></code></span><div class="docblock"><p>The bitcoin node authentication mechanism</p>
+</div><span id="structfield.network" class="structfield small-section-header"><a href="#structfield.network" class="anchor field">§</a><code>network: Network</code></span><div class="docblock"><p>The network we are using (it will be checked the bitcoin node network matches this)</p>
+</div><span id="structfield.wallet_name" class="structfield small-section-header"><a href="#structfield.wallet_name" class="anchor field">§</a><code>wallet_name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>The wallet name in the bitcoin node, consider using <a href="../../wallet/fn.wallet_name_from_descriptor.html" title="crate::wallet::wallet_name_from_descriptor">crate::wallet::wallet_name_from_descriptor</a> for this</p>
+</div><span id="structfield.sync_params" class="structfield small-section-header"><a href="#structfield.sync_params" class="anchor field">§</a><code>sync_params: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>></code></span><div class="docblock"><p>Sync parameters</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-Clone-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-Debug-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-Deserialize%3C%27de%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CRpcConfig%3E-for-AnyBlockchainConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#246">source</a><a href="#impl-From%3CRpcConfig%3E-for-AnyBlockchainConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>> for <a class="enum" href="../any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/any.rs.html#246">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CRpcConfig%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-PartialEq%3CRpcConfig%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-Serialize-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-Eq-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section><section id="impl-StructuralEq-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-StructuralEq-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section><section id="impl-StructuralPartialEq-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#80">source</a><a href="#impl-StructuralPartialEq-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-RpcConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section><section id="impl-Send-for-RpcConfig" class="impl has-srclink"><a href="#impl-Send-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section><section id="impl-Sync-for-RpcConfig" class="impl has-srclink"><a href="#impl-Sync-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section><section id="impl-Unpin-for-RpcConfig" class="impl has-srclink"><a href="#impl-Unpin-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section><section id="impl-UnwindSafe-for-RpcConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-RpcConfig" class="impl has-srclink"><a href="#impl-Pointable-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-RpcConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-RpcConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-RpcConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Sync parameters for Bitcoin Core RPC."><meta name="keywords" content="rust, rustlang, rust-lang, RpcSyncParams"><title>RpcSyncParams in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">RpcSyncParams</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.force_start_time">force_start_time</a><a href="#structfield.poll_rate_sec">poll_rate_sec</a><a href="#structfield.start_script_count">start_script_count</a><a href="#structfield.start_time">start_time</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CRpcSyncParams%3E">PartialEq<RpcSyncParams></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a></h2><div id="sidebar-vars" data-name="RpcSyncParams" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcSyncParams</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#100-109" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct RpcSyncParams {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Sync parameters for Bitcoin Core RPC."><meta name="keywords" content="rust, rustlang, rust-lang, RpcSyncParams"><title>RpcSyncParams in bdk::blockchain::rpc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">RpcSyncParams</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.force_start_time">force_start_time</a></li><li><a href="#structfield.poll_rate_sec">poll_rate_sec</a></li><li><a href="#structfield.start_script_count">start_script_count</a></li><li><a href="#structfield.start_time">start_time</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-RpcSyncParams">Clone</a></li><li><a href="#impl-Debug-for-RpcSyncParams">Debug</a></li><li><a href="#impl-Default-for-RpcSyncParams">Default</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-RpcSyncParams">Deserialize<'de></a></li><li><a href="#impl-Eq-for-RpcSyncParams">Eq</a></li><li><a href="#impl-PartialEq%3CRpcSyncParams%3E-for-RpcSyncParams">PartialEq<RpcSyncParams></a></li><li><a href="#impl-Serialize-for-RpcSyncParams">Serialize</a></li><li><a href="#impl-StructuralEq-for-RpcSyncParams">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-RpcSyncParams">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-RpcSyncParams">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RpcSyncParams">Send</a></li><li><a href="#impl-Sync-for-RpcSyncParams">Sync</a></li><li><a href="#impl-Unpin-for-RpcSyncParams">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RpcSyncParams">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-RpcSyncParams">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-RpcSyncParams">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-RpcSyncParams">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-RpcSyncParams">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-RpcSyncParams">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-RpcSyncParams">Into<U></a></li><li><a href="#impl-Pointable-for-RpcSyncParams">Pointable</a></li><li><a href="#impl-ToOwned-for-RpcSyncParams">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-RpcSyncParams">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-RpcSyncParams">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-RpcSyncParams">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain::rpc</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">blockchain</a>::<wbr><a href="index.html">rpc</a>::<wbr><a class="struct" href="#">RpcSyncParams</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#100-109">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct RpcSyncParams {
pub start_script_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
pub start_time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
pub force_start_time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
pub poll_rate_sec: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Sync parameters for Bitcoin Core RPC.</p>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Sync parameters for Bitcoin Core RPC.</p>
<p>In general, BDK tries to sync <code>scriptPubKey</code>s cached in <a href="../../database/trait.Database.html" title="crate::database::Database"><code>crate::database::Database</code></a> with
<code>scriptPubKey</code>s imported in the Bitcoin Core Wallet. These parameters are used for determining
how the <code>importdescriptors</code> RPC calls are to be made.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.start_script_count" class="structfield small-section-header"><a href="#structfield.start_script_count" class="anchor field"></a><code>start_script_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The minimum number of scripts to scan for on initial sync.</p>
-</div><span id="structfield.start_time" class="structfield small-section-header"><a href="#structfield.start_time" class="anchor field"></a><code>start_time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Time in unix seconds in which initial sync will start scanning from (0 to start from genesis).</p>
-</div><span id="structfield.force_start_time" class="structfield small-section-header"><a href="#structfield.force_start_time" class="anchor field"></a><code>force_start_time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Forces every sync to use <code>start_time</code> as import timestamp.</p>
-</div><span id="structfield.poll_rate_sec" class="structfield small-section-header"><a href="#structfield.poll_rate_sec" class="anchor field"></a><code>poll_rate_sec: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>RPC poll rate (in seconds) to get state updates.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#111-120" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#112-119" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CRpcSyncParams%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-PartialEq%3CRpcSyncParams%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/blockchain/rpc.rs.html#99" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.start_script_count" class="structfield small-section-header"><a href="#structfield.start_script_count" class="anchor field">§</a><code>start_script_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The minimum number of scripts to scan for on initial sync.</p>
+</div><span id="structfield.start_time" class="structfield small-section-header"><a href="#structfield.start_time" class="anchor field">§</a><code>start_time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Time in unix seconds in which initial sync will start scanning from (0 to start from genesis).</p>
+</div><span id="structfield.force_start_time" class="structfield small-section-header"><a href="#structfield.force_start_time" class="anchor field">§</a><code>force_start_time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Forces every sync to use <code>start_time</code> as import timestamp.</p>
+</div><span id="structfield.poll_rate_sec" class="structfield small-section-header"><a href="#structfield.poll_rate_sec" class="anchor field">§</a><code>poll_rate_sec: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>RPC poll rate (in seconds) to get state updates.</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-Clone-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-Debug-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#111-120">source</a><a href="#impl-Default-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#112-119">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-Deserialize%3C%27de%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CRpcSyncParams%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-PartialEq%3CRpcSyncParams%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-Serialize-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-Eq-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section><section id="impl-StructuralEq-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-StructuralEq-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section><section id="impl-StructuralPartialEq-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/blockchain/rpc.rs.html#99">source</a><a href="#impl-StructuralPartialEq-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section><section id="impl-Send-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-Send-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section><section id="impl-Sync-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-Sync-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section><section id="impl-Unpin-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-Unpin-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section><section id="impl-UnwindSafe-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-UnwindSafe-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RpcSyncParams.html" title="struct bdk::blockchain::rpc::RpcSyncParams">RpcSyncParams</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-Pointable-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-RpcSyncParams" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-RpcSyncParams" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-RpcSyncParams" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Capability","Capabilities that can be supported by a [`Blockchain`] backend"]],"fn":[["log_progress","Create a new instance of [`LogProgress`]"],["noop_progress","Create a new instance of [`NoopProgress`]"],["progress","Shortcut to create a [`channel`] (pair of [`Sender`] and [`Receiver`]) that can transport [`ProgressData`]"]],"mod":[["any","Runtime-checked blockchain types"],["compact_filters","Compact Filters"],["electrum","Electrum"],["esplora","Esplora"],["rpc","Rpc Blockchain"]],"struct":[["EsploraBlockchain","Structure that implements the logic to sync with Esplora"],["LogProgress","Type that implements [`Progress`] and logs at level `INFO` every update received"],["NoopProgress","Type that implements [`Progress`] and drops every update received"]],"trait":[["Blockchain","Trait that defines the actions that must be supported by a blockchain backend"],["BlockchainFactory","Trait for a factory of blockchains that share the underlying connection or configuration"],["ConfigurableBlockchain","Trait for [`Blockchain`] types that can be created given a configuration"],["GetBlockHash","Trait for getting block hash by block height"],["GetHeight","Trait for getting the current height of the blockchain."],["GetTx","Trait for getting a transaction by txid"],["Progress","Trait for types that can receive and process progress updates during [`WalletSync::wallet_sync`] and [`WalletSync::wallet_setup`]"],["StatelessBlockchain","Trait for blockchains that don’t contain any state"],["WalletSync","Trait for blockchains that can sync by updating the database directly."]],"type":[["ProgressData","Data sent with a progress update over a [`channel`]"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Capability","Capabilities that can be supported by a [`Blockchain`] backend"]],"fn":[["log_progress","Create a new instance of [`LogProgress`]"],["noop_progress","Create a new instance of [`NoopProgress`]"],["progress","Shortcut to create a [`channel`] (pair of [`Sender`] and [`Receiver`]) that can transport [`ProgressData`]"]],"mod":[["any","Runtime-checked blockchain types"],["compact_filters","Compact Filters"],["electrum","Electrum"],["esplora","Esplora"],["rpc","Rpc Blockchain"]],"struct":[["EsploraBlockchain","Structure that implements the logic to sync with Esplora"],["LogProgress","Type that implements [`Progress`] and logs at level `INFO` every update received"],["NoopProgress","Type that implements [`Progress`] and drops every update received"]],"trait":[["Blockchain","Trait that defines the actions that must be supported by a blockchain backend"],["BlockchainFactory","Trait for a factory of blockchains that share the underlying connection or configuration"],["ConfigurableBlockchain","Trait for [`Blockchain`] types that can be created given a configuration"],["GetBlockHash","Trait for getting block hash by block height"],["GetHeight","Trait for getting the current height of the blockchain."],["GetTx","Trait for getting a transaction by txid"],["Progress","Trait for types that can receive and process progress updates during [`WalletSync::wallet_sync`] and [`WalletSync::wallet_setup`]"],["StatelessBlockchain","Trait for blockchains that don’t contain any state"],["WalletSync","Trait for blockchains that can sync by updating the database directly."]],"type":[["ProgressData","Data sent with a progress update over a [`channel`]"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure that implements the logic to sync with Esplora"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraBlockchain"><title>EsploraBlockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">EsploraBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.from_client">from_client</a><a href="#method.new">new</a><a href="#method.with_concurrency">with_concurrency</a></div><h3 class="sidebar-title"><a href="#deref-methods-BlockingClient">Methods from Deref<Target=BlockingClient></a></h3><div class="sidebar-links"><a href="#method.broadcast">broadcast</a><a href="#method.get_block_hash">get_block_hash</a><a href="#method.get_block_status">get_block_status</a><a href="#method.get_fee_estimates">get_fee_estimates</a><a href="#method.get_header">get_header</a><a href="#method.get_header_by_hash">get_header_by_hash</a><a href="#method.get_height">get_height</a><a href="#method.get_merkle_proof">get_merkle_proof</a><a href="#method.get_output_status">get_output_status</a><a href="#method.get_tip_hash">get_tip_hash</a><a href="#method.get_tx">get_tx</a><a href="#method.get_tx_no_opt">get_tx_no_opt</a><a href="#method.get_tx_status">get_tx_status</a><a href="#method.get_txid_at_block_index">get_txid_at_block_index</a><a href="#method.scripthash_txs">scripthash_txs</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Blockchain">Blockchain</a><a href="#impl-ConfigurableBlockchain">ConfigurableBlockchain</a><a href="#impl-Debug">Debug</a><a href="#impl-Deref">Deref</a><a href="#impl-From%3CEsploraBlockchain%3E">From<EsploraBlockchain></a><a href="#impl-GetBlockHash">GetBlockHash</a><a href="#impl-GetHeight">GetHeight</a><a href="#impl-GetTx">GetTx</a><a href="#impl-StatelessBlockchain">StatelessBlockchain</a><a href="#impl-WalletSync">WalletSync</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="EsploraBlockchain" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="struct" href="#">EsploraBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#33-37" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct EsploraBlockchain { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure that implements the logic to sync with Esplora</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure that implements the logic to sync with Esplora"><meta name="keywords" content="rust, rustlang, rust-lang, EsploraBlockchain"><title>EsploraBlockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">EsploraBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.from_client">from_client</a></li><li><a href="#method.new">new</a></li><li><a href="#method.with_concurrency">with_concurrency</a></li></ul><h3><a href="#deref-methods-BlockingClient">Methods from Deref<Target=BlockingClient></a></h3><ul class="block"><li><a href="#method.broadcast">broadcast</a></li><li><a href="#method.get_block_hash">get_block_hash</a></li><li><a href="#method.get_block_status">get_block_status</a></li><li><a href="#method.get_fee_estimates">get_fee_estimates</a></li><li><a href="#method.get_header">get_header</a></li><li><a href="#method.get_header_by_hash">get_header_by_hash</a></li><li><a href="#method.get_height">get_height</a></li><li><a href="#method.get_merkle_proof">get_merkle_proof</a></li><li><a href="#method.get_output_status">get_output_status</a></li><li><a href="#method.get_tip_hash">get_tip_hash</a></li><li><a href="#method.get_tx">get_tx</a></li><li><a href="#method.get_tx_no_opt">get_tx_no_opt</a></li><li><a href="#method.get_tx_status">get_tx_status</a></li><li><a href="#method.get_txid_at_block_index">get_txid_at_block_index</a></li><li><a href="#method.scripthash_txs">scripthash_txs</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-EsploraBlockchain">Blockchain</a></li><li><a href="#impl-ConfigurableBlockchain-for-EsploraBlockchain">ConfigurableBlockchain</a></li><li><a href="#impl-Debug-for-EsploraBlockchain">Debug</a></li><li><a href="#impl-Deref-for-EsploraBlockchain">Deref</a></li><li><a href="#impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain">From<EsploraBlockchain></a></li><li><a href="#impl-GetBlockHash-for-EsploraBlockchain">GetBlockHash</a></li><li><a href="#impl-GetHeight-for-EsploraBlockchain">GetHeight</a></li><li><a href="#impl-GetTx-for-EsploraBlockchain">GetTx</a></li><li><a href="#impl-StatelessBlockchain-for-EsploraBlockchain">StatelessBlockchain</a></li><li><a href="#impl-WalletSync-for-EsploraBlockchain">WalletSync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-EsploraBlockchain">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-EsploraBlockchain">Send</a></li><li><a href="#impl-Sync-for-EsploraBlockchain">Sync</a></li><li><a href="#impl-Unpin-for-EsploraBlockchain">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EsploraBlockchain">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-EsploraBlockchain">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-EsploraBlockchain">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-EsploraBlockchain">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-EsploraBlockchain">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-EsploraBlockchain">Into<U></a></li><li><a href="#impl-Pointable-for-EsploraBlockchain">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-EsploraBlockchain">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-EsploraBlockchain">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-EsploraBlockchain">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="struct" href="#">EsploraBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#33-37">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct EsploraBlockchain { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure that implements the logic to sync with Esplora</p>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>See the <a href="esplora/index.html"><code>blockchain::esplora</code></a> module for a usage example.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#39-63" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#41-47" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(base_url: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></summary><div class="docblock"><p>Create a new instance of the client from a base URL and the <code>stop_gap</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_client" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#50-56" title="goto source code">source</a></div><a href="#method.from_client" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_client" class="fnname">from_client</a>(url_client: BlockingClient, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></summary><div class="docblock"><p>Build a new instance given a client</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.with_concurrency" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#59-62" title="goto source code">source</a></div><a href="#method.with_concurrency" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.with_concurrency" class="fnname">with_concurrency</a>(self, concurrency: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -> Self</h4></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></summary><div class="docblock"><p>Set the number of parallel requests the client can make.</p>
-</div></details></div></details><h2 id="deref-methods-BlockingClient" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = BlockingClient></span><a href="#deref-methods-BlockingClient" class="anchor"></a></h2><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>Transaction</code>] option given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx_no_opt" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tx_no_opt" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx_no_opt" class="fnname">get_tx_no_opt</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Transaction, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_txid_at_block_index" class="method has-srclink"><div class="rightside"></div><a href="#method.get_txid_at_block_index" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_txid_at_block_index" class="fnname">get_txid_at_block_index</a>(<br> &self, <br> block_hash: &BlockHash, <br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>Txid</code>] of a transaction given its index in a block with a given hash.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx_status" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tx_status" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx_status" class="fnname">get_tx_status</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxStatus>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the status of a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_header" class="method has-srclink"><div class="rightside"></div><a href="#method.get_header" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_header" class="fnname">get_header</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.1.2: <p>Deprecated to improve alignment with Esplora API. Users should use <code>get_block_hash</code> and <code>get_header_by_hash</code> methods directly.</p>
-</div></div></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block height.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_header_by_hash" class="method has-srclink"><div class="rightside"></div><a href="#method.get_header_by_hash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_header_by_hash" class="fnname">get_header_by_hash</a>(<br> &self, <br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block hash.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_status" class="method has-srclink"><div class="rightside"></div><a href="#method.get_block_status" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_block_status" class="fnname">get_block_status</a>(<br> &self, <br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockStatus, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the [<code>BlockStatus</code>] given a particular [<code>BlockHash</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_merkle_proof" class="method has-srclink"><div class="rightside"></div><a href="#method.get_merkle_proof" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_merkle_proof" class="fnname">get_merkle_proof</a>(<br> &self, <br> txid: &Txid<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><MerkleProof>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get a merkle inclusion proof for a [<code>Transaction</code>] with the given [<code>Txid</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_output_status" class="method has-srclink"><div class="rightside"></div><a href="#method.get_output_status" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_output_status" class="fnname">get_output_status</a>(<br> &self, <br> txid: &Txid, <br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><OutputStatus>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the spending status of an output given a [<code>Txid</code>] and the output index.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast" class="method has-srclink"><div class="rightside"></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.broadcast" class="fnname">broadcast</a>(&self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Broadcast a [<code>Transaction</code>] to Esplora</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height" class="method has-srclink"><div class="rightside"></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the height of the current blockchain tip.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tip_hash" class="method has-srclink"><div class="rightside"></div><a href="#method.get_tip_hash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tip_hash" class="fnname">get_tip_hash</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of the current blockchain tip.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash" class="method has-srclink"><div class="rightside"></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_block_hash" class="fnname">get_block_hash</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of a specific block height</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_fee_estimates" class="method has-srclink"><div class="rightside"></div><a href="#method.get_fee_estimates" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_fee_estimates" class="fnname">get_fee_estimates</a>(<br> &self<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get an map where the key is the confirmation target (in number of blocks)
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#39-63">source</a><a href="#impl-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#41-47">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(base_url: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a new instance of the client from a base URL and the <code>stop_gap</code>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_client" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#50-56">source</a><h4 class="code-header">pub fn <a href="#method.from_client" class="fn">from_client</a>(url_client: BlockingClient, stop_gap: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self</h4></section></summary><div class="docblock"><p>Build a new instance given a client</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.with_concurrency" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#59-62">source</a><h4 class="code-header">pub fn <a href="#method.with_concurrency" class="fn">with_concurrency</a>(self, concurrency: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -> Self</h4></section></summary><div class="docblock"><p>Set the number of parallel requests the client can make.</p>
+</div></details></div></details></div><h2 id="deref-methods-BlockingClient" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = BlockingClient></span><a href="#deref-methods-BlockingClient" class="anchor">§</a></h2><div id="deref-methods-BlockingClient-1"><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>Transaction</code>] option given its [<code>Txid</code>]</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx_no_opt" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tx_no_opt" class="fn">get_tx_no_opt</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Transaction, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_txid_at_block_index" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_txid_at_block_index" class="fn">get_txid_at_block_index</a>(<br> &self,<br> block_hash: &BlockHash,<br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>Txid</code>] of a transaction given its index in a block with a given hash.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx_status" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tx_status" class="fn">get_tx_status</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxStatus>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the status of a [<code>Transaction</code>] given its [<code>Txid</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_header" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_header" class="fn">get_header</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.1.2: Deprecated to improve alignment with Esplora API. Users should use <code>get_block_hash</code> and <code>get_header_by_hash</code> methods directly.</span></div></span></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block height.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_header_by_hash" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_header_by_hash" class="fn">get_header_by_hash</a>(<br> &self,<br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHeader, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a [<code>BlockHeader</code>] given a particular block hash.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_status" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_block_status" class="fn">get_block_status</a>(<br> &self,<br> block_hash: &BlockHash<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockStatus, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the [<code>BlockStatus</code>] given a particular [<code>BlockHash</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_merkle_proof" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_merkle_proof" class="fn">get_merkle_proof</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><MerkleProof>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get a merkle inclusion proof for a [<code>Transaction</code>] with the given [<code>Txid</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_output_status" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_output_status" class="fn">get_output_status</a>(<br> &self,<br> txid: &Txid,<br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><OutputStatus>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the spending status of an output given a [<code>Txid</code>] and the output index.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.broadcast" class="fn">broadcast</a>(&self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Broadcast a [<code>Transaction</code>] to Esplora</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the height of the current blockchain tip.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tip_hash" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_tip_hash" class="fn">get_tip_hash</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of the current blockchain tip.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_block_hash" class="fn">get_block_hash</a>(&self, block_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get the [<code>BlockHash</code>] of a specific block height</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_fee_estimates" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_fee_estimates" class="fn">get_fee_estimates</a>(<br> &self<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get an map where the key is the confirmation target (in number of blocks)
and the value is the estimated feerate (in sat/vB).</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.scripthash_txs" class="method has-srclink"><div class="rightside"></div><a href="#method.scripthash_txs" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.scripthash_txs" class="fnname">scripthash_txs</a>(<br> &self, <br> script: &Script, <br> last_seen: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Tx, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></div></summary><div class="docblock"><p>Get confirmed transaction history for the specified address/scripthash,
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.scripthash_txs" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.scripthash_txs" class="fn">scripthash_txs</a>(<br> &self,<br> script: &Script,<br> last_seen: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Txid><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Tx, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="enum" href="esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>></h4></section></summary><div class="docblock"><p>Get confirmed transaction history for the specified address/scripthash,
sorted with newest first. Returns 25 transactions per page.
More can be requested by specifying the last txid seen by the previous query.</p>
-</div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#65-87" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#66-74" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="trait.Blockchain.html#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class='docblock'><p>Return the set of <a href="enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.broadcast-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#76-79" title="goto source code">source</a></div><a href="#method.broadcast-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.Blockchain.html#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#81-86" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="trait.Blockchain.html#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#215-238" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#218-237" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="trait.ConfigurableBlockchain.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#32" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#32" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#89-95" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = BlockingClient</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#92-94" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CEsploraBlockchain%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#160" title="goto source code">source</a></div><a href="#impl-From%3CEsploraBlockchain%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#160" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#111-115" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_block_hash-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#112-114" title="goto source code">source</a></div><a href="#method.get_block_hash-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.GetBlockHash.html#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>fetch block hash given its height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#99-103" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_height-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#100-102" title="goto source code">source</a></div><a href="#method.get_height-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.GetHeight.html#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the current height</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#105-109" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#106-108" title="goto source code">source</a></div><a href="#method.get_tx-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.GetTx.html#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a transaction given its txid</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#117-213" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#118-212" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="trait.WalletSync.html#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> _progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Setup the backend and populate the internal database for the first time <a href="trait.WalletSync.html#tymethod.wallet_setup">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.wallet_sync" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#157-163" title="goto source code">source</a></div><a href="#method.wallet_sync" class="anchor"></a><h4 class="code-header">fn <a href="trait.WalletSync.html#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>If not overridden, it defaults to calling <a href="trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="trait.WalletSync.html#method.wallet_sync">Read more</a></p>
-</div></details></div></details><div id="impl-StatelessBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#97" title="goto source code">source</a></div><a href="#impl-StatelessBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Blockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#65-87">source</a><a href="#impl-Blockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#66-74">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Blockchain.html#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class='docblock'>Return the set of <a href="enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.broadcast-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#76-79">source</a><a href="#method.broadcast-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Blockchain.html#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Broadcast a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#81-86">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Blockchain.html#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableBlockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#215-238">source</a><a href="#impl-ConfigurableBlockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="trait.ConfigurableBlockchain.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#218-237">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="trait.ConfigurableBlockchain.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#32">source</a><a href="#impl-Debug-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#32">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#89-95">source</a><a href="#impl-Deref-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = BlockingClient</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#92-94">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#160">source</a><a href="#impl-From%3CEsploraBlockchain%3E-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#160">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetBlockHash-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#111-115">source</a><a href="#impl-GetBlockHash-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_block_hash-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#112-114">source</a><a href="#method.get_block_hash-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.GetBlockHash.html#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>fetch block hash given its height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetHeight-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#99-103">source</a><a href="#impl-GetHeight-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_height-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#100-102">source</a><a href="#method.get_height-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.GetHeight.html#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the current height</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GetTx-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#105-109">source</a><a href="#impl-GetTx-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#106-108">source</a><a href="#method.get_tx-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.GetTx.html#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a transaction given its txid</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-WalletSync-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#117-213">source</a><a href="#impl-WalletSync-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#118-212">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="trait.WalletSync.html#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> _progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Setup the backend and populate the internal database for the first time <a href="trait.WalletSync.html#tymethod.wallet_setup">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#157-163">source</a><a href="#method.wallet_sync" class="anchor">§</a><h4 class="code-header">fn <a href="trait.WalletSync.html#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>If not overridden, it defaults to calling <a href="trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally. <a href="trait.WalletSync.html#method.wallet_sync">Read more</a></div></details></div></details><section id="impl-StatelessBlockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#97">source</a><a href="#impl-StatelessBlockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-Send-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Send-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-Sync-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Sync-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-Unpin-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Unpin-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section><section id="impl-UnwindSafe-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-UnwindSafe-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-Pointable-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-EsploraBlockchain" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that implements [`Progress`] and logs at level `INFO` every update received"><meta name="keywords" content="rust, rustlang, rust-lang, LogProgress"><title>LogProgress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">LogProgress</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Progress">Progress</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="LogProgress" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="struct" href="#">LogProgress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#321" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct LogProgress;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and logs at level <code>INFO</code> every update received</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Progress" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#328-338" title="goto source code">source</a></div><a href="#impl-Progress" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.update" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#329-337" title="goto source code">source</a></div><a href="#method.update" class="anchor"></a><h4 class="code-header">fn <a href="trait.Progress.html#tymethod.update" class="fnname">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Send a new progress update <a href="trait.Progress.html#tymethod.update">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#320" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that implements [`Progress`] and logs at level `INFO` every update received"><meta name="keywords" content="rust, rustlang, rust-lang, LogProgress"><title>LogProgress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">LogProgress</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-LogProgress">Clone</a></li><li><a href="#impl-Copy-for-LogProgress">Copy</a></li><li><a href="#impl-Debug-for-LogProgress">Debug</a></li><li><a href="#impl-Default-for-LogProgress">Default</a></li><li><a href="#impl-Progress-for-LogProgress">Progress</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-LogProgress">RefUnwindSafe</a></li><li><a href="#impl-Send-for-LogProgress">Send</a></li><li><a href="#impl-Sync-for-LogProgress">Sync</a></li><li><a href="#impl-Unpin-for-LogProgress">Unpin</a></li><li><a href="#impl-UnwindSafe-for-LogProgress">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-LogProgress">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-LogProgress">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-LogProgress">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-LogProgress">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-LogProgress">Into<U></a></li><li><a href="#impl-Pointable-for-LogProgress">Pointable</a></li><li><a href="#impl-ToOwned-for-LogProgress">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-LogProgress">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-LogProgress">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-LogProgress">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="struct" href="#">LogProgress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#321">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct LogProgress;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and logs at level <code>INFO</code> every update received</p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#impl-Clone-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#impl-Debug-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#impl-Default-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Progress-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#328-338">source</a><a href="#impl-Progress-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.update" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#329-337">source</a><a href="#method.update" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Progress.html#tymethod.update" class="fn">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Send a new progress update <a href="trait.Progress.html#tymethod.update">Read more</a></div></details></div></details><section id="impl-Copy-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#320">source</a><a href="#impl-Copy-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-LogProgress" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section><section id="impl-Send-for-LogProgress" class="impl has-srclink"><a href="#impl-Send-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section><section id="impl-Sync-for-LogProgress" class="impl has-srclink"><a href="#impl-Sync-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section><section id="impl-Unpin-for-LogProgress" class="impl has-srclink"><a href="#impl-Unpin-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section><section id="impl-UnwindSafe-for-LogProgress" class="impl has-srclink"><a href="#impl-UnwindSafe-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-LogProgress" class="impl has-srclink"><a href="#impl-Pointable-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-LogProgress" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that implements [`Progress`] and drops every update received"><meta name="keywords" content="rust, rustlang, rust-lang, NoopProgress"><title>NoopProgress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">NoopProgress</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Progress">Progress</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="NoopProgress" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="struct" href="#">NoopProgress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#306" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct NoopProgress;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and drops every update received</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Progress" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#313-317" title="goto source code">source</a></div><a href="#impl-Progress" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.update" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#314-316" title="goto source code">source</a></div><a href="#method.update" class="anchor"></a><h4 class="code-header">fn <a href="trait.Progress.html#tymethod.update" class="fnname">update</a>(&self, _progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, _message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Send a new progress update <a href="trait.Progress.html#tymethod.update">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#305" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that implements [`Progress`] and drops every update received"><meta name="keywords" content="rust, rustlang, rust-lang, NoopProgress"><title>NoopProgress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">NoopProgress</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-NoopProgress">Clone</a></li><li><a href="#impl-Copy-for-NoopProgress">Copy</a></li><li><a href="#impl-Debug-for-NoopProgress">Debug</a></li><li><a href="#impl-Default-for-NoopProgress">Default</a></li><li><a href="#impl-Progress-for-NoopProgress">Progress</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-NoopProgress">RefUnwindSafe</a></li><li><a href="#impl-Send-for-NoopProgress">Send</a></li><li><a href="#impl-Sync-for-NoopProgress">Sync</a></li><li><a href="#impl-Unpin-for-NoopProgress">Unpin</a></li><li><a href="#impl-UnwindSafe-for-NoopProgress">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-NoopProgress">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-NoopProgress">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-NoopProgress">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-NoopProgress">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-NoopProgress">Into<U></a></li><li><a href="#impl-Pointable-for-NoopProgress">Pointable</a></li><li><a href="#impl-ToOwned-for-NoopProgress">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-NoopProgress">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-NoopProgress">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-NoopProgress">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="struct" href="#">NoopProgress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#306">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct NoopProgress;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that implements <a href="trait.Progress.html" title="Progress"><code>Progress</code></a> and drops every update received</p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#impl-Clone-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#impl-Debug-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#impl-Default-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Progress-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#313-317">source</a><a href="#impl-Progress-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.update" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#314-316">source</a><a href="#method.update" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Progress.html#tymethod.update" class="fn">update</a>(&self, _progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, _message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Send a new progress update <a href="trait.Progress.html#tymethod.update">Read more</a></div></details></div></details><section id="impl-Copy-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#305">source</a><a href="#impl-Copy-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-NoopProgress" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section><section id="impl-Send-for-NoopProgress" class="impl has-srclink"><a href="#impl-Send-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section><section id="impl-Sync-for-NoopProgress" class="impl has-srclink"><a href="#impl-Sync-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section><section id="impl-Unpin-for-NoopProgress" class="impl has-srclink"><a href="#impl-Unpin-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section><section id="impl-UnwindSafe-for-NoopProgress" class="impl has-srclink"><a href="#impl-UnwindSafe-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-NoopProgress" class="impl has-srclink"><a href="#impl-Pointable-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-NoopProgress" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait that defines the actions that must be supported by a blockchain backend"><meta name="keywords" content="rust, rustlang, rust-lang, Blockchain"><title>Blockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Blockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.broadcast">broadcast</a><a href="#tymethod.estimate_fee">estimate_fee</a><a href="#tymethod.get_capabilities">get_capabilities</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-Blockchain-for-Arc%3CT%3E">Arc<T></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="Blockchain" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">Blockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#90-97" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Blockchain: <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> + <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> + <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> + <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> {
- fn <a href="#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait that defines the actions that must be supported by a blockchain backend"><meta name="keywords" content="rust, rustlang, rust-lang, Blockchain"><title>Blockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Blockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.broadcast">broadcast</a></li><li><a href="#tymethod.estimate_fee">estimate_fee</a></li><li><a href="#tymethod.get_capabilities">get_capabilities</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Blockchain-for-Arc%3CT%3E">Arc<T></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">Blockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#90-97">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait Blockchain: <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> + <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> + <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> + <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> {
+ fn <a href="#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait that defines the actions that must be supported by a blockchain backend</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.get_capabilities" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#92" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div></summary><div class="docblock"><p>Return the set of <a href="enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.broadcast" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#94" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Broadcast a transaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.estimate_fee" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#96" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Blockchain-for-Arc%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#341-353" title="goto source code">source</a></div><a href="#impl-Blockchain-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a>> <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></div></summary><div class="impl-items"><div id="method.get_capabilities" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#342-344" title="goto source code">source</a></div><a href="#method.get_capabilities" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_capabilities" class="fnname">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></div><div id="method.broadcast" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#346-348" title="goto source code">source</a></div><a href="#method.broadcast" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.broadcast" class="fnname">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.estimate_fee" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#350-352" title="goto source code">source</a></div><a href="#method.estimate_fee" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.estimate_fee" class="fnname">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-Blockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#95-107" title="goto source code">source</a></div><a href="#impl-Blockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-Blockchain-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#232-247" title="goto source code">source</a></div><a href="#impl-Blockchain-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div><div id="impl-Blockchain-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#61-81" title="goto source code">source</a></div><a href="#impl-Blockchain-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div><div id="impl-Blockchain-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#65-87" title="goto source code">source</a></div><a href="#impl-Blockchain-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div><div id="impl-Blockchain-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#155-174" title="goto source code">source</a></div><a href="#impl-Blockchain-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.Blockchain.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_capabilities" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#92">source</a><h4 class="code-header">fn <a href="#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section></summary><div class="docblock"><p>Return the set of <a href="enum.Capability.html" title="Capability"><code>Capability</code></a> supported by this backend</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.broadcast" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#94">source</a><h4 class="code-header">fn <a href="#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Broadcast a transaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.estimate_fee" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#96">source</a><h4 class="code-header">fn <a href="#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Estimate the fee rate required to confirm a transaction in a given <code>target</code> of blocks</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Blockchain-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#341-353">source</a><a href="#impl-Blockchain-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a>> <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></section></summary><div class="impl-items"><section id="method.get_capabilities" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#342-344">source</a><a href="#method.get_capabilities" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_capabilities" class="fn">get_capabilities</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="enum" href="enum.Capability.html" title="enum bdk::blockchain::Capability">Capability</a>></h4></section><section id="method.broadcast" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#346-348">source</a><a href="#method.broadcast" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.broadcast" class="fn">broadcast</a>(&self, tx: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.estimate_fee" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#350-352">source</a><a href="#method.estimate_fee" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.estimate_fee" class="fn">estimate_fee</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Blockchain-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#95-107">source</a><a href="#impl-Blockchain-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-Blockchain-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#232-247">source</a><a href="#impl-Blockchain-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section><section id="impl-Blockchain-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#61-81">source</a><a href="#impl-Blockchain-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section><section id="impl-Blockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#65-87">source</a><a href="#impl-Blockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section><section id="impl-Blockchain-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#155-174">source</a><a href="#impl-Blockchain-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/blockchain/trait.Blockchain.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for a factory of blockchains that share the underlying connection or configuration"><meta name="keywords" content="rust, rustlang, rust-lang, BlockchainFactory"><title>BlockchainFactory in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BlockchainFactory</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Inner">Inner</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.build">build</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.build_for_wallet">build_for_wallet</a><a href="#method.sync_wallet">sync_wallet</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-BlockchainFactory-for-Arc%3CT%3E">Arc<T></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="BlockchainFactory" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">BlockchainFactory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#211-265" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait BlockchainFactory {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for a factory of blockchains that share the underlying connection or configuration"><meta name="keywords" content="rust, rustlang, rust-lang, BlockchainFactory"><title>BlockchainFactory in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BlockchainFactory</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Inner">Inner</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.build">build</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.build_for_wallet">build_for_wallet</a></li><li><a href="#method.sync_wallet">sync_wallet</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-BlockchainFactory-for-Arc%3CT%3E">Arc<T></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">BlockchainFactory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#211-265">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait BlockchainFactory {
type <a href="#associatedtype.Inner" class="associatedtype">Inner</a>: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a>;
- fn <a href="#tymethod.build" class="fnname">build</a>(<br> &self, <br> wallet_name: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
- fn <a href="#method.build_for_wallet" class="fnname">build_for_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> { ... }
-<div class="item-spacer"></div> fn <a href="#method.sync_wallet" class="fnname">sync_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <br> sync_options: <a class="struct" href="../wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> { ... }
+ fn <a href="#tymethod.build" class="fn">build</a>(<br> &self,<br> wallet_name: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+
+ fn <a href="#method.build_for_wallet" class="fn">build_for_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> { ... }
+<span class="item-spacer"></span> fn <a href="#method.sync_wallet" class="fn">sync_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>,<br> sync_options: <a class="struct" href="../wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for a factory of blockchains that share the underlying connection or configuration</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>This example shows how to sync multiple walles and return the sum of their balances</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">fn</span> <span class="ident">sum_of_balances</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">BlockchainFactory</span><span class="op">></span>(<span class="ident">blockchain_factory</span>: <span class="ident">B</span>, <span class="ident">wallets</span>: <span class="kw-2">&</span>[<span class="ident">Wallet</span><span class="op"><</span><span class="ident">MemoryDatabase</span><span class="op">></span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Balance</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">wallets</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">w</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="ident">blockchain_factory</span>.<span class="ident">sync_wallet</span>(<span class="kw-2">&</span><span class="ident">w</span>, <span class="prelude-val">None</span>, <span class="ident">SyncOptions::default</span>())<span class="question-mark">?</span>;
- <span class="ident">w</span>.<span class="ident">get_balance</span>()
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">fn </span>sum_of_balances<B: BlockchainFactory>(blockchain_factory: B, wallets: <span class="kw-2">&</span>[Wallet<MemoryDatabase>]) -> <span class="prelude-ty">Result</span><Balance, Error> {
+ <span class="prelude-val">Ok</span>(wallets
+ .iter()
+ .map(|w| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ blockchain_factory.sync_wallet(<span class="kw-2">&</span>w, <span class="prelude-val">None</span>, SyncOptions::default())<span class="question-mark">?</span>;
+ w.get_balance()
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">sum</span>())
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?
+ </span>.into_iter()
+ .sum())
}</code></pre></div>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Inner" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#213" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a>: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a></h4></div></summary><div class="docblock"><p>The type returned when building a blockchain from this factory</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.build" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#220-224" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.build" class="fnname">build</a>(<br> &self, <br> wallet_name: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Build a new blockchain for the given descriptor wallet_name</p>
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Inner" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#213">source</a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a>: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a></h4></section></summary><div class="docblock"><p>The type returned when building a blockchain from this factory</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.build" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#220-224">source</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(<br> &self,<br> wallet_name: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Build a new blockchain for the given descriptor wallet_name</p>
<p>If <code>override_skip_blocks</code> is <code>None</code>, the returned blockchain will inherit the number of blocks
from the factory. Since it’s not possible to override the value to <code>None</code>, set it to
<code>Some(0)</code> to rescan from the genesis.</p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.build_for_wallet" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#230-242" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.build_for_wallet" class="fnname">build_for_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Build a new blockchain for a given wallet</p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build_for_wallet" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#230-242">source</a><h4 class="code-header">fn <a href="#method.build_for_wallet" class="fn">build_for_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="associatedtype" href="trait.BlockchainFactory.html#associatedtype.Inner" title="type bdk::blockchain::BlockchainFactory::Inner">Inner</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Build a new blockchain for a given wallet</p>
<p>Internally uses <a href="../wallet/fn.wallet_name_from_descriptor.html" title="wallet_name_from_descriptor"><code>wallet_name_from_descriptor</code></a> to derive the name, and then calls
<a href="trait.BlockchainFactory.html#tymethod.build" title="BlockchainFactory::build"><code>BlockchainFactory::build</code></a> to create the blockchain instance.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.sync_wallet" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#256-264" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.sync_wallet" class="fnname">sync_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <br> sync_options: <a class="struct" href="../wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab portability">This is supported on <strong>neither WebAssembly nor crate feature <code>async-interface</code></strong>.</div></div><div class="docblock"><p>Use <a href="trait.BlockchainFactory.html#method.build_for_wallet" title="BlockchainFactory::build_for_wallet"><code>BlockchainFactory::build_for_wallet</code></a> to get a blockchain, then sync the wallet</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sync_wallet" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#256-264">source</a><h4 class="code-header">fn <a href="#method.sync_wallet" class="fn">sync_wallet</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> wallet: &<a class="struct" href="../wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>,<br> sync_options: <a class="struct" href="../wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab portability">Available on <strong>neither WebAssembly nor crate feature <code>async-interface</code></strong>.</div></span><div class="docblock"><p>Use <a href="trait.BlockchainFactory.html#method.build_for_wallet" title="BlockchainFactory::build_for_wallet"><code>BlockchainFactory::build_for_wallet</code></a> to get a blockchain, then sync the wallet</p>
<p>This can be used when a new blockchain would only be used to sync a wallet and then
immediately dropped. Keep in mind that specific blockchain factories may perform slow
operations to build a blockchain for a given wallet, so if a wallet needs to be synced
often it’s recommended to use <a href="trait.BlockchainFactory.html#method.build_for_wallet" title="BlockchainFactory::build_for_wallet"><code>BlockchainFactory::build_for_wallet</code></a> to reuse the same
blockchain multiple times.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BlockchainFactory-for-Arc%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#267-273" title="goto source code">source</a></div><a href="#impl-BlockchainFactory-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a>> <a class="trait" href="trait.BlockchainFactory.html" title="trait bdk::blockchain::BlockchainFactory">BlockchainFactory</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></div></summary><div class="impl-items"><div id="associatedtype.Inner-1" class="type trait-impl has-srclink"><a href="#associatedtype.Inner-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a> = Self</h4></div><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#270-272" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.build" class="fnname">build</a>(<br> &self, <br> _wallet_name: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> _override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BlockchainFactory" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#854-874" title="goto source code">source</a></div><a href="#impl-BlockchainFactory" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BlockchainFactory.html" title="trait bdk::blockchain::BlockchainFactory">BlockchainFactory</a> for <a class="struct" href="rpc/struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="associatedtype.Inner-2" class="type trait-impl has-srclink"><a href="#associatedtype.Inner-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a> = <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h4></div></div></details></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.BlockchainFactory.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BlockchainFactory-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#267-273">source</a><a href="#impl-BlockchainFactory-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a>> <a class="trait" href="trait.BlockchainFactory.html" title="trait bdk::blockchain::BlockchainFactory">BlockchainFactory</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></section></summary><div class="impl-items"><section id="associatedtype.Inner-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Inner-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h4></section><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#270-272">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(<br> &self,<br> _wallet_name: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> _override_skip_blocks: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BlockchainFactory-for-RpcBlockchainFactory" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#854-874">source</a><a href="#impl-BlockchainFactory-for-RpcBlockchainFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BlockchainFactory.html" title="trait bdk::blockchain::BlockchainFactory">BlockchainFactory</a> for <a class="struct" href="rpc/struct.RpcBlockchainFactory.html" title="struct bdk::blockchain::rpc::RpcBlockchainFactory">RpcBlockchainFactory</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="associatedtype.Inner-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Inner-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a> = <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h4></section></div></details></div><script src="../../implementors/bdk/blockchain/trait.BlockchainFactory.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for [`Blockchain`] types that can be created given a configuration"><meta name="keywords" content="rust, rustlang, rust-lang, ConfigurableBlockchain"><title>ConfigurableBlockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ConfigurableBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Config">Config</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.from_config">from_config</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="ConfigurableBlockchain" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">ConfigurableBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#167-173" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait ConfigurableBlockchain: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for [`Blockchain`] types that can be created given a configuration"><meta name="keywords" content="rust, rustlang, rust-lang, ConfigurableBlockchain"><title>ConfigurableBlockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ConfigurableBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Config">Config</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.from_config">from_config</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">ConfigurableBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#167-173">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait ConfigurableBlockchain: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
type <a href="#associatedtype.Config" class="associatedtype">Config</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
- fn <a href="#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+
+ fn <a href="#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for <a href="trait.Blockchain.html" title="Blockchain"><code>Blockchain</code></a> types that can be created given a configuration</p>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#169" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></div></summary><div class="docblock"><p>Type that contains the configuration</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.from_config" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#172" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Create a new instance given a configuration</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#218-241" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Config-1" class="type trait-impl has-srclink"><a href="#associatedtype.Config-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableBlockchain-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#505-534" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="associatedtype.Config-2" class="type trait-impl has-srclink"><a href="#associatedtype.Config-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableBlockchain-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#315-331" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="associatedtype.Config-3" class="type trait-impl has-srclink"><a href="#associatedtype.Config-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableBlockchain-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#215-238" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="associatedtype.Config-4" class="type trait-impl has-srclink"><a href="#associatedtype.Config-4" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableBlockchain-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#207-278" title="goto source code">source</a></div><a href="#impl-ConfigurableBlockchain-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="associatedtype.Config-5" class="type trait-impl has-srclink"><a href="#associatedtype.Config-5" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h4></div></div></details></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.ConfigurableBlockchain.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#169">source</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Type that contains the configuration</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.from_config" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#172">source</a><h4 class="code-header">fn <a href="#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableBlockchain.html#associatedtype.Config" title="type bdk::blockchain::ConfigurableBlockchain::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Create a new instance given a configuration</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableBlockchain-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#218-241">source</a><a href="#impl-ConfigurableBlockchain-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Config-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="any/enum.AnyBlockchainConfig.html" title="enum bdk::blockchain::any::AnyBlockchainConfig">AnyBlockchainConfig</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableBlockchain-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#505-534">source</a><a href="#impl-ConfigurableBlockchain-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="associatedtype.Config-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="compact_filters/struct.CompactFiltersBlockchainConfig.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig">CompactFiltersBlockchainConfig</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableBlockchain-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#315-331">source</a><a href="#impl-ConfigurableBlockchain-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="associatedtype.Config-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="electrum/struct.ElectrumBlockchainConfig.html" title="struct bdk::blockchain::electrum::ElectrumBlockchainConfig">ElectrumBlockchainConfig</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableBlockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#215-238">source</a><a href="#impl-ConfigurableBlockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="associatedtype.Config-4" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="esplora/struct.EsploraBlockchainConfig.html" title="struct bdk::blockchain::esplora::EsploraBlockchainConfig">EsploraBlockchainConfig</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableBlockchain-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#207-278">source</a><a href="#impl-ConfigurableBlockchain-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableBlockchain.html" title="trait bdk::blockchain::ConfigurableBlockchain">ConfigurableBlockchain</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="associatedtype.Config-5" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-5" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="rpc/struct.RpcConfig.html" title="struct bdk::blockchain::rpc::RpcConfig">RpcConfig</a></h4></section></div></details></div><script src="../../implementors/bdk/blockchain/trait.ConfigurableBlockchain.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for getting block hash by block height"><meta name="keywords" content="rust, rustlang, rust-lang, GetBlockHash"><title>GetBlockHash in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">GetBlockHash</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.get_block_hash">get_block_hash</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-GetBlockHash-for-Arc%3CT%3E">Arc<T></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="GetBlockHash" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">GetBlockHash</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#115-118" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait GetBlockHash {
- fn <a href="#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for getting block hash by block height"><meta name="keywords" content="rust, rustlang, rust-lang, GetBlockHash"><title>GetBlockHash in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">GetBlockHash</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.get_block_hash">get_block_hash</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-GetBlockHash-for-Arc%3CT%3E">Arc<T></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">GetBlockHash</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#115-118">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait GetBlockHash {
+ fn <a href="#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for getting block hash by block height</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.get_block_hash" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#117" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>fetch block hash given its height</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-GetBlockHash-for-Arc%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#370-374" title="goto source code">source</a></div><a href="#impl-GetBlockHash-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a>> <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></div></summary><div class="impl-items"><div id="method.get_block_hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#371-373" title="goto source code">source</a></div><a href="#method.get_block_hash" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_block_hash" class="fnname">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-GetBlockHash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#124-128" title="goto source code">source</a></div><a href="#impl-GetBlockHash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-GetBlockHash-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#263-271" title="goto source code">source</a></div><a href="#impl-GetBlockHash-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div><div id="impl-GetBlockHash-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#110-115" title="goto source code">source</a></div><a href="#impl-GetBlockHash-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div><div id="impl-GetBlockHash-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#111-115" title="goto source code">source</a></div><a href="#impl-GetBlockHash-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div><div id="impl-GetBlockHash-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#188-192" title="goto source code">source</a></div><a href="#impl-GetBlockHash-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.GetBlockHash.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_block_hash" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#117">source</a><h4 class="code-header">fn <a href="#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>fetch block hash given its height</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-GetBlockHash-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#370-374">source</a><a href="#impl-GetBlockHash-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a>> <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></section></summary><div class="impl-items"><section id="method.get_block_hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#371-373">source</a><a href="#method.get_block_hash" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_block_hash" class="fn">get_block_hash</a>(&self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><BlockHash, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-GetBlockHash-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#124-128">source</a><a href="#impl-GetBlockHash-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-GetBlockHash-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#263-271">source</a><a href="#impl-GetBlockHash-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section><section id="impl-GetBlockHash-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#110-115">source</a><a href="#impl-GetBlockHash-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section><section id="impl-GetBlockHash-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#111-115">source</a><a href="#impl-GetBlockHash-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section><section id="impl-GetBlockHash-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#188-192">source</a><a href="#impl-GetBlockHash-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetBlockHash.html" title="trait bdk::blockchain::GetBlockHash">GetBlockHash</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/blockchain/trait.GetBlockHash.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for getting the current height of the blockchain."><meta name="keywords" content="rust, rustlang, rust-lang, GetHeight"><title>GetHeight in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">GetHeight</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.get_height">get_height</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-GetHeight-for-Arc%3CT%3E">Arc<T></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="GetHeight" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">GetHeight</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#101-104" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait GetHeight {
- fn <a href="#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for getting the current height of the blockchain."><meta name="keywords" content="rust, rustlang, rust-lang, GetHeight"><title>GetHeight in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">GetHeight</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.get_height">get_height</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-GetHeight-for-Arc%3CT%3E">Arc<T></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">GetHeight</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#101-104">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait GetHeight {
+ fn <a href="#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for getting the current height of the blockchain.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.get_height" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#103" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the current height</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-GetHeight-for-Arc%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#363-367" title="goto source code">source</a></div><a href="#impl-GetHeight-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a>> <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></div></summary><div class="impl-items"><div id="method.get_height" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#364-366" title="goto source code">source</a></div><a href="#method.get_height" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_height" class="fnname">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-GetHeight" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#110-114" title="goto source code">source</a></div><a href="#impl-GetHeight" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-GetHeight-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#249-253" title="goto source code">source</a></div><a href="#impl-GetHeight-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div><div id="impl-GetHeight-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#93-102" title="goto source code">source</a></div><a href="#impl-GetHeight-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div><div id="impl-GetHeight-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#99-103" title="goto source code">source</a></div><a href="#impl-GetHeight-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div><div id="impl-GetHeight-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#182-186" title="goto source code">source</a></div><a href="#impl-GetHeight-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.GetHeight.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_height" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#103">source</a><h4 class="code-header">fn <a href="#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the current height</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-GetHeight-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#363-367">source</a><a href="#impl-GetHeight-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a>> <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></section></summary><div class="impl-items"><section id="method.get_height" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#364-366">source</a><a href="#method.get_height" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_height" class="fn">get_height</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-GetHeight-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#110-114">source</a><a href="#impl-GetHeight-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-GetHeight-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#249-253">source</a><a href="#impl-GetHeight-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section><section id="impl-GetHeight-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#93-102">source</a><a href="#impl-GetHeight-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section><section id="impl-GetHeight-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#99-103">source</a><a href="#impl-GetHeight-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section><section id="impl-GetHeight-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#182-186">source</a><a href="#impl-GetHeight-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/blockchain/trait.GetHeight.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for getting a transaction by txid"><meta name="keywords" content="rust, rustlang, rust-lang, GetTx"><title>GetTx in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">GetTx</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.get_tx">get_tx</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-GetTx-for-Arc%3CT%3E">Arc<T></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="GetTx" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">GetTx</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#108-111" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait GetTx {
- fn <a href="#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for getting a transaction by txid"><meta name="keywords" content="rust, rustlang, rust-lang, GetTx"><title>GetTx in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">GetTx</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.get_tx">get_tx</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-GetTx-for-Arc%3CT%3E">Arc<T></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">GetTx</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#108-111">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait GetTx {
+ fn <a href="#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for getting a transaction by txid</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.get_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#110" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Fetch a transaction given its txid</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-GetTx-for-Arc%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#356-360" title="goto source code">source</a></div><a href="#impl-GetTx-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a>> <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></div></summary><div class="impl-items"><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#357-359" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fnname">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-GetTx" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#117-121" title="goto source code">source</a></div><a href="#impl-GetTx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-GetTx-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#255-261" title="goto source code">source</a></div><a href="#impl-GetTx-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div><div id="impl-GetTx-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#104-108" title="goto source code">source</a></div><a href="#impl-GetTx-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div><div id="impl-GetTx-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#105-109" title="goto source code">source</a></div><a href="#impl-GetTx-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div><div id="impl-GetTx-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#176-180" title="goto source code">source</a></div><a href="#impl-GetTx-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.GetTx.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#110">source</a><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Fetch a transaction given its txid</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-GetTx-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#356-360">source</a><a href="#impl-GetTx-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a>> <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></section></summary><div class="impl-items"><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#357-359">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fn">get_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-GetTx-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#117-121">source</a><a href="#impl-GetTx-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-GetTx-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#255-261">source</a><a href="#impl-GetTx-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section><section id="impl-GetTx-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#104-108">source</a><a href="#impl-GetTx-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section><section id="impl-GetTx-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#105-109">source</a><a href="#impl-GetTx-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section><section id="impl-GetTx-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#176-180">source</a><a href="#impl-GetTx-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/blockchain/trait.GetTx.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for types that can receive and process progress updates during [`WalletSync::wallet_sync`] and [`WalletSync::wallet_setup`]"><meta name="keywords" content="rust, rustlang, rust-lang, Progress"><title>Progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Progress</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.update">update</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-Progress-for-Sender%3CProgressData%3E">Sender<ProgressData></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="Progress" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">Progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#280-286" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Progress: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> {
- fn <a href="#tymethod.update" class="fnname">update</a>(<br> &self, <br> progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, <br> message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for types that can receive and process progress updates during [`WalletSync::wallet_sync`] and [`WalletSync::wallet_setup`]"><meta name="keywords" content="rust, rustlang, rust-lang, Progress"><title>Progress in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Progress</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.update">update</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Progress-for-Sender%3CProgressData%3E">Sender<ProgressData></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">Progress</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#280-286">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait Progress: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> {
+ fn <a href="#tymethod.update" class="fn">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for types that can receive and process progress updates during <a href="trait.WalletSync.html#method.wallet_sync" title="WalletSync::wallet_sync"><code>WalletSync::wallet_sync</code></a> and
<a href="trait.WalletSync.html#tymethod.wallet_setup" title="WalletSync::wallet_setup"><code>WalletSync::wallet_setup</code></a></p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.update" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#285" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.update" class="fnname">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Send a new progress update</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.update" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#285">source</a><h4 class="code-header">fn <a href="#tymethod.update" class="fn">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Send a new progress update</p>
<p>The <code>progress</code> value should be in the range 0.0 - 100.0, and the <code>message</code> value is an
optional text message that can be displayed to the user.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Progress-for-Sender%3CProgressData%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#293-302" title="goto source code">source</a></div><a href="#impl-Progress-for-Sender%3CProgressData%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="struct std::sync::mpsc::Sender">Sender</a><<a class="type" href="type.ProgressData.html" title="type bdk::blockchain::ProgressData">ProgressData</a>></h3></div></summary><div class="impl-items"><div id="method.update" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#294-301" title="goto source code">source</a></div><a href="#method.update" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.update" class="fnname">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-Progress" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#328-338" title="goto source code">source</a></div><a href="#impl-Progress" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></div><div id="impl-Progress-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#313-317" title="goto source code">source</a></div><a href="#impl-Progress-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.Progress.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Progress-for-Sender%3CProgressData%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#293-302">source</a><a href="#impl-Progress-for-Sender%3CProgressData%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html" title="struct std::sync::mpsc::Sender">Sender</a><<a class="type" href="type.ProgressData.html" title="type bdk::blockchain::ProgressData">ProgressData</a>></h3></section></summary><div class="impl-items"><section id="method.update" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#294-301">source</a><a href="#method.update" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.update" class="fn">update</a>(&self, progress: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Progress-for-LogProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#328-338">source</a><a href="#impl-Progress-for-LogProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.LogProgress.html" title="struct bdk::blockchain::LogProgress">LogProgress</a></h3></section><section id="impl-Progress-for-NoopProgress" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#313-317">source</a><a href="#impl-Progress-for-NoopProgress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a> for <a class="struct" href="struct.NoopProgress.html" title="struct bdk::blockchain::NoopProgress">NoopProgress</a></h3></section></div><script src="../../implementors/bdk/blockchain/trait.Progress.js" data-ignore-extern-crates="std" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for blockchains that don’t contain any state"><meta name="keywords" content="rust, rustlang, rust-lang, StatelessBlockchain"><title>StatelessBlockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">StatelessBlockchain</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="StatelessBlockchain" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">StatelessBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#181" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait StatelessBlockchain: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> { }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for blockchains that don’t contain any state</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for blockchains that don’t contain any state"><meta name="keywords" content="rust, rustlang, rust-lang, StatelessBlockchain"><title>StatelessBlockchain in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">StatelessBlockchain</a></h2><div class="sidebar-elems"><section><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">StatelessBlockchain</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#181">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait StatelessBlockchain: <a class="trait" href="trait.Blockchain.html" title="trait bdk::blockchain::Blockchain">Blockchain</a> { }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for blockchains that don’t contain any state</p>
<p>Statless blockchains can be used to sync multiple wallets with different descriptors.</p>
<p><a href="trait.BlockchainFactory.html" title="BlockchainFactory"><code>BlockchainFactory</code></a> is automatically implemented for <code>Arc<T></code> where <code>T</code> is a stateless
blockchain.</p>
-</div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-StatelessBlockchain" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#91" title="goto source code">source</a></div><a href="#impl-StatelessBlockchain" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div><div id="impl-StatelessBlockchain-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#97" title="goto source code">source</a></div><a href="#impl-StatelessBlockchain-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.StatelessBlockchain.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-StatelessBlockchain-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#91">source</a><a href="#impl-StatelessBlockchain-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section><section id="impl-StatelessBlockchain-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#97">source</a><a href="#impl-StatelessBlockchain-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.StatelessBlockchain.html" title="trait bdk::blockchain::StatelessBlockchain">StatelessBlockchain</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/blockchain/trait.StatelessBlockchain.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for blockchains that can sync by updating the database directly."><meta name="keywords" content="rust, rustlang, rust-lang, WalletSync"><title>WalletSync in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">WalletSync</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.wallet_setup">wallet_setup</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.wallet_sync">wallet_sync</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-WalletSync-for-Arc%3CT%3E">Arc<T></a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="WalletSync" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">WalletSync</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#122-164" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait WalletSync {
- fn <a href="#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for blockchains that can sync by updating the database directly."><meta name="keywords" content="rust, rustlang, rust-lang, WalletSync"><title>WalletSync in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">WalletSync</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.wallet_setup">wallet_setup</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.wallet_sync">wallet_sync</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-WalletSync-for-Arc%3CT%3E">Arc<T></a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="trait" href="#">WalletSync</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#122-164">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait WalletSync {
+ fn <a href="#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
- fn <a href="#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> { ... }
+ fn <a href="#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for blockchains that can sync by updating the database directly.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.wallet_setup" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#134-138" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Setup the backend and populate the internal database for the first time</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.wallet_setup" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#134-138">source</a><h4 class="code-header">fn <a href="#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Setup the backend and populate the internal database for the first time</p>
<p>This method is the equivalent of <a href="trait.WalletSync.html#method.wallet_sync" title="Self::wallet_sync"><code>Self::wallet_sync</code></a>, but it’s guaranteed to only be
called once, at the first <a href="../wallet/struct.Wallet.html#method.sync"><code>Wallet::sync</code></a>.</p>
<p>The rationale behind the distinction between <code>sync</code> and <code>setup</code> is that some custom backends
<p>For types that do not have that distinction, only this method can be implemented, since
<a href="trait.WalletSync.html#method.wallet_sync" title="WalletSync::wallet_sync"><code>WalletSync::wallet_sync</code></a> defaults to calling this internally if not overridden.
Populate the internal database with transactions and UTXOs</p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.wallet_sync" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#157-163" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>If not overridden, it defaults to calling <a href="trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally.</p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wallet_sync" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#157-163">source</a><h4 class="code-header">fn <a href="#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>If not overridden, it defaults to calling <a href="trait.WalletSync.html#tymethod.wallet_setup" title="Self::wallet_setup"><code>Self::wallet_setup</code></a> internally.</p>
<p>This method should implement the logic required to iterate over the list of the wallet’s
script_pubkeys using <a href="../database/trait.Database.html#tymethod.iter_script_pubkeys"><code>Database::iter_script_pubkeys</code></a> and look for relevant transactions
in the blockchain to populate the database with <a href="../database/trait.BatchOperations.html#tymethod.set_tx"><code>BatchOperations::set_tx</code></a> and
blockchain, using <a href="../database/trait.BatchOperations.html#tymethod.del_utxo"><code>BatchOperations::del_utxo</code></a>.</p>
<p>The <code>progress_update</code> object can be used to give the caller updates about the progress by using
<a href="trait.Progress.html#tymethod.update" title="Progress::update"><code>Progress::update</code></a>.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-WalletSync-for-Arc%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#377-393" title="goto source code">source</a></div><a href="#impl-WalletSync-for-Arc%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a>> <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></div></summary><div class="impl-items"><div id="method.wallet_setup" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#378-384" title="goto source code">source</a></div><a href="#method.wallet_setup" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.wallet_setup" class="fnname">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.wallet_sync-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#386-392" title="goto source code">source</a></div><a href="#method.wallet_sync-1" class="anchor"></a><h4 class="code-header">fn <a href="#method.wallet_sync" class="fnname">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D, <br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-WalletSync" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/any.rs.html#131-157" title="goto source code">source</a></div><a href="#impl-WalletSync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></div><div id="impl-WalletSync-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#273-479" title="goto source code">source</a></div><a href="#impl-WalletSync-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div><div id="impl-WalletSync-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/electrum.rs.html#117-251" title="goto source code">source</a></div><a href="#impl-WalletSync-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>electrum</code></strong> only.</div></div></div><div id="impl-WalletSync-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/esplora/blocking.rs.html#117-213" title="goto source code">source</a></div><a href="#impl-WalletSync-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div><div id="impl-WalletSync-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/blockchain/rpc.rs.html#194-205" title="goto source code">source</a></div><a href="#impl-WalletSync-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>rpc</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/blockchain/trait.WalletSync.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-WalletSync-for-Arc%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#377-393">source</a><a href="#impl-WalletSync-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a>> <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><T></h3></section></summary><div class="impl-items"><section id="method.wallet_setup" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#378-384">source</a><a href="#method.wallet_setup" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.wallet_setup" class="fn">wallet_setup</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.wallet_sync-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/mod.rs.html#386-392">source</a><a href="#method.wallet_sync-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.wallet_sync" class="fn">wallet_sync</a><D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>D,<br> progress_update: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-WalletSync-for-AnyBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/any.rs.html#131-157">source</a><a href="#impl-WalletSync-for-AnyBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="enum" href="any/enum.AnyBlockchain.html" title="enum bdk::blockchain::any::AnyBlockchain">AnyBlockchain</a></h3></section><section id="impl-WalletSync-for-CompactFiltersBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/compact_filters/mod.rs.html#273-479">source</a><a href="#impl-WalletSync-for-CompactFiltersBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="compact_filters/struct.CompactFiltersBlockchain.html" title="struct bdk::blockchain::compact_filters::CompactFiltersBlockchain">CompactFiltersBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section><section id="impl-WalletSync-for-ElectrumBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/electrum.rs.html#117-251">source</a><a href="#impl-WalletSync-for-ElectrumBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="electrum/struct.ElectrumBlockchain.html" title="struct bdk::blockchain::electrum::ElectrumBlockchain">ElectrumBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>electrum</code></strong> only.</div></span></section><section id="impl-WalletSync-for-EsploraBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/esplora/blocking.rs.html#117-213">source</a><a href="#impl-WalletSync-for-EsploraBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="esplora/struct.EsploraBlockchain.html" title="struct bdk::blockchain::esplora::EsploraBlockchain">EsploraBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section><section id="impl-WalletSync-for-RpcBlockchain" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/blockchain/rpc.rs.html#194-205">source</a><a href="#impl-WalletSync-for-RpcBlockchain" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> for <a class="struct" href="rpc/struct.RpcBlockchain.html" title="struct bdk::blockchain::rpc::RpcBlockchain">RpcBlockchain</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>rpc</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/blockchain/trait.WalletSync.js" data-ignore-extern-crates="alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Data sent with a progress update over a [`channel`]"><meta name="keywords" content="rust, rustlang, rust-lang, ProgressData"><title>ProgressData in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ProgressData</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a></h2><div id="sidebar-vars" data-name="ProgressData" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="type" href="#">ProgressData</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#276" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type ProgressData = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Data sent with a progress update over a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Data sent with a progress update over a [`channel`]"><meta name="keywords" content="rust, rustlang, rust-lang, ProgressData"><title>ProgressData in bdk::blockchain - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ProgressData</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::blockchain</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">blockchain</a>::<wbr><a class="type" href="#">ProgressData</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/blockchain/mod.rs.html#276">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type ProgressData = (<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Data sent with a progress update over a <a href="https://doc.rust-lang.org/nightly/std/sync/mpsc/fn.channel.html" title="channel"><code>channel</code></a></p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that contains any of the [`BatchDatabase::Batch`] types defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyBatch"><title>AnyBatch in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AnyBatch</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Memory">Memory</a><a href="#variant.Sled">Sled</a><a href="#variant.Sqlite">Sqlite</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-BatchOperations">BatchOperations</a><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E">From<<MemoryDatabase as BatchDatabase>::Batch></a><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E">From<<SqliteDatabase as BatchDatabase>::Batch></a><a href="#impl-From%3C%3CTree%20as%20BatchDatabase%3E%3A%3ABatch%3E">From<<Tree as BatchDatabase>::Batch></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="AnyBatch" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyBatch</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#99-110" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum AnyBatch {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that contains any of the [`BatchDatabase::Batch`] types defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyBatch"><title>AnyBatch in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AnyBatch</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Memory">Memory</a></li><li><a href="#variant.Sled">Sled</a></li><li><a href="#variant.Sqlite">Sqlite</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-BatchOperations-for-AnyBatch">BatchOperations</a></li><li><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch">From<<MemoryDatabase as BatchDatabase>::Batch></a></li><li><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch">From<<SqliteDatabase as BatchDatabase>::Batch></a></li><li><a href="#impl-From%3C%3CTree%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch">From<<Tree as BatchDatabase>::Batch></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AnyBatch">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-AnyBatch">Send</a></li><li><a href="#impl-Sync-for-AnyBatch">!Sync</a></li><li><a href="#impl-Unpin-for-AnyBatch">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AnyBatch">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AnyBatch">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AnyBatch">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AnyBatch">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-AnyBatch">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AnyBatch">Into<U></a></li><li><a href="#impl-Pointable-for-AnyBatch">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AnyBatch">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AnyBatch">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AnyBatch">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyBatch</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#99-110">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum AnyBatch {
Memory(<<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>),
Sled(<Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>),
Sqlite(<<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that contains any of the <a href="../trait.BatchDatabase.html#associatedtype.Batch" title="BatchDatabase::Batch"><code>BatchDatabase::Batch</code></a> types defined by the library</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Memory" class="variant small-section-header"><a href="#variant.Memory" class="anchor field"></a><code>Memory(<<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>)</code></h3><div class="docblock"><p>In-memory ephemeral database</p>
-</div><h3 id="variant.Sled" class="variant small-section-header"><a href="#variant.Sled" class="anchor field"></a><code>Sled(<Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>key-value-db</code></strong> only.</div></div><div class="docblock"><p>Simple key-value embedded database based on [<code>sled</code>]</p>
-</div><h3 id="variant.Sqlite" class="variant small-section-header"><a href="#variant.Sqlite" class="anchor field"></a><code>Sqlite(<<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>sqlite</code></strong> only.</div></div><div class="docblock"><p>Sqlite embedded database using [<code>rusqlite</code>]</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchOperations" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#260-317" title="goto source code">source</a></div><a href="#impl-BatchOperations" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#261-268" title="goto source code">source</a></div><a href="#method.set_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a script_pubkey along with its keychain and child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#269-271" title="goto source code">source</a></div><a href="#method.set_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#272-274" title="goto source code">source</a></div><a href="#method.set_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#275-277" title="goto source code">source</a></div><a href="#method.set_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the metadata of a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#278-280" title="goto source code">source</a></div><a href="#method.set_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the last derivation index for a given keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#281-283" title="goto source code">source</a></div><a href="#method.set_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the sync time</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#285-291" title="goto source code">source</a></div><a href="#method.del_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a script_pubkey given the keychain and its child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#292-297" title="goto source code">source</a></div><a href="#method.del_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the data related to a specific script_pubkey, meaning the keychain and the child
-number. <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#298-300" title="goto source code">source</a></div><a href="#method.del_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#301-303" title="goto source code">source</a></div><a href="#method.del_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#304-310" title="goto source code">source</a></div><a href="#method.del_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the metadata of a transaction and optionally the raw transaction itself</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#311-313" title="goto source code">source</a></div><a href="#method.del_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#314-316" title="goto source code">source</a></div><a href="#method.del_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Reset the sync time to <code>None</code> <a href="../trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#112-116" title="goto source code">source</a></div><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#112-116" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#118" title="goto source code">source</a></div><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#118" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3C%3CTree%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#117" title="goto source code">source</a></div><a href="#impl-From%3C%3CTree%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#117" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Memory" class="variant"><a href="#variant.Memory" class="anchor">§</a><h3 class="code-header">Memory(<<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>)</h3></section><div class="docblock"><p>In-memory ephemeral database</p>
+</div><section id="variant.Sled" class="variant"><a href="#variant.Sled" class="anchor">§</a><h3 class="code-header">Sled(<Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>key-value-db</code></strong> only.</div></span><div class="docblock"><p>Simple key-value embedded database based on [<code>sled</code>]</p>
+</div><section id="variant.Sqlite" class="variant"><a href="#variant.Sqlite" class="anchor">§</a><h3 class="code-header">Sqlite(<<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>sqlite</code></strong> only.</div></span><div class="docblock"><p>Sqlite embedded database using [<code>rusqlite</code>]</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchOperations-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#260-317">source</a><a href="#impl-BatchOperations-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#261-268">source</a><a href="#method.set_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a script_pubkey along with its keychain and child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#269-271">source</a><a href="#method.set_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#272-274">source</a><a href="#method.set_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#275-277">source</a><a href="#method.set_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the metadata of a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#278-280">source</a><a href="#method.set_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the last derivation index for a given keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#281-283">source</a><a href="#method.set_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the sync time</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#285-291">source</a><a href="#method.del_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a script_pubkey given the keychain and its child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#292-297">source</a><a href="#method.del_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the data related to a specific script_pubkey, meaning the keychain and the child
+number. <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#298-300">source</a><a href="#method.del_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#301-303">source</a><a href="#method.del_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#304-310">source</a><a href="#method.del_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the metadata of a transaction and optionally the raw transaction itself</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#311-313">source</a><a href="#method.del_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#314-316">source</a><a href="#method.del_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Reset the sync time to <code>None</code> <a href="../trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#112-116">source</a><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#112-116">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#118">source</a><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#118">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C%3CTree%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#117">source</a><a href="#impl-From%3C%3CTree%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#117">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <Tree as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AnyBatch" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section><section id="impl-Send-for-AnyBatch" class="impl has-srclink"><a href="#impl-Send-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section><section id="impl-Sync-for-AnyBatch" class="impl has-srclink"><a href="#impl-Sync-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section><section id="impl-Unpin-for-AnyBatch" class="impl has-srclink"><a href="#impl-Unpin-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section><section id="impl-UnwindSafe-for-AnyBatch" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AnyBatch" class="impl has-srclink"><a href="#impl-Pointable-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AnyBatch" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the [`Database`] types defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyDatabase"><title>AnyDatabase in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AnyDatabase</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Memory">Memory</a><a href="#variant.Sled">Sled</a><a href="#variant.Sqlite">Sqlite</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-BatchDatabase">BatchDatabase</a><a href="#impl-BatchOperations">BatchOperations</a><a href="#impl-ConfigurableDatabase">ConfigurableDatabase</a><a href="#impl-Database">Database</a><a href="#impl-Debug">Debug</a><a href="#impl-From%3CMemoryDatabase%3E">From<MemoryDatabase></a><a href="#impl-From%3CSqliteDatabase%3E">From<SqliteDatabase></a><a href="#impl-From%3CTree%3E">From<Tree></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="AnyDatabase" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#81-92" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum AnyDatabase {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the [`Database`] types defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyDatabase"><title>AnyDatabase in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AnyDatabase</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Memory">Memory</a></li><li><a href="#variant.Sled">Sled</a></li><li><a href="#variant.Sqlite">Sqlite</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-BatchDatabase-for-AnyDatabase">BatchDatabase</a></li><li><a href="#impl-BatchOperations-for-AnyDatabase">BatchOperations</a></li><li><a href="#impl-ConfigurableDatabase-for-AnyDatabase">ConfigurableDatabase</a></li><li><a href="#impl-Database-for-AnyDatabase">Database</a></li><li><a href="#impl-Debug-for-AnyDatabase">Debug</a></li><li><a href="#impl-From%3CMemoryDatabase%3E-for-AnyDatabase">From<MemoryDatabase></a></li><li><a href="#impl-From%3CSqliteDatabase%3E-for-AnyDatabase">From<SqliteDatabase></a></li><li><a href="#impl-From%3CTree%3E-for-AnyDatabase">From<Tree></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AnyDatabase">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-AnyDatabase">Send</a></li><li><a href="#impl-Sync-for-AnyDatabase">!Sync</a></li><li><a href="#impl-Unpin-for-AnyDatabase">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AnyDatabase">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AnyDatabase">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AnyDatabase">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AnyDatabase">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-AnyDatabase">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AnyDatabase">Into<U></a></li><li><a href="#impl-Pointable-for-AnyDatabase">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AnyDatabase">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AnyDatabase">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AnyDatabase">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#81-92">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum AnyDatabase {
Memory(<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>),
Sled(Tree),
Sqlite(<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type that can contain any of the <a href="../trait.Database.html" title="Database"><code>Database</code></a> types defined by the library</p>
<p>It allows switching database type at runtime.</p>
<p>See <a href="index.html">this module</a>’s documentation for a usage example.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Memory" class="variant small-section-header"><a href="#variant.Memory" class="anchor field"></a><code>Memory(<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>)</code></h3><div class="docblock"><p>In-memory ephemeral database</p>
-</div><h3 id="variant.Sled" class="variant small-section-header"><a href="#variant.Sled" class="anchor field"></a><code>Sled(Tree)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>key-value-db</code></strong> only.</div></div><div class="docblock"><p>Simple key-value embedded database based on [<code>sled</code>]</p>
-</div><h3 id="variant.Sqlite" class="variant small-section-header"><a href="#variant.Sqlite" class="anchor field"></a><code>Sqlite(<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>sqlite</code></strong> only.</div></div><div class="docblock"><p>Sqlite embedded database using [<code>rusqlite</code>]</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#319-350" title="goto source code">source</a></div><a href="#impl-BatchDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Batch" class="type trait-impl has-srclink"><a href="#associatedtype.Batch" class="anchor"></a><h4 class="code-header">type <a href="../trait.BatchDatabase.html#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h4></div></summary><div class='docblock'><p>Container for the operations</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.begin_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#322-330" title="goto source code">source</a></div><a href="#method.begin_batch" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.begin_batch" class="fnname">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></div></summary><div class='docblock'><p>Create a new batch container</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.commit_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#331-349" title="goto source code">source</a></div><a href="#method.commit_batch" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.commit_batch" class="fnname">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Consume and apply a batch of operations</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchOperations" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#120-190" title="goto source code">source</a></div><a href="#impl-BatchOperations" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#121-135" title="goto source code">source</a></div><a href="#method.set_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a script_pubkey along with its keychain and child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#136-138" title="goto source code">source</a></div><a href="#method.set_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#139-141" title="goto source code">source</a></div><a href="#method.set_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#142-144" title="goto source code">source</a></div><a href="#method.set_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the metadata of a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#145-147" title="goto source code">source</a></div><a href="#method.set_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the last derivation index for a given keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#148-150" title="goto source code">source</a></div><a href="#method.set_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the sync time</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#152-164" title="goto source code">source</a></div><a href="#method.del_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a script_pubkey given the keychain and its child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#165-170" title="goto source code">source</a></div><a href="#method.del_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the data related to a specific script_pubkey, meaning the keychain and the child
-number. <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#171-173" title="goto source code">source</a></div><a href="#method.del_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#174-176" title="goto source code">source</a></div><a href="#method.del_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#177-183" title="goto source code">source</a></div><a href="#method.del_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the metadata of a transaction and optionally the raw transaction itself</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#184-186" title="goto source code">source</a></div><a href="#method.del_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#187-189" title="goto source code">source</a></div><a href="#method.del_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Reset the sync time to <code>None</code> <a href="../trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#407-423" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableDatabase.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#410-422" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableDatabase.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Database" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#192-258" title="goto source code">source</a></div><a href="#impl-Database" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#193-205" title="goto source code">source</a></div><a href="#method.check_descriptor_checksum" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.check_descriptor_checksum" class="fnname">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Read and checks the descriptor checksum for a given keychain. <a href="../trait.Database.html#tymethod.check_descriptor_checksum">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#207-209" title="goto source code">source</a></div><a href="#method.iter_script_pubkeys" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_script_pubkeys" class="fnname">iter_script_pubkeys</a>(<br> &self, <br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of script_pubkeys</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_utxos" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#210-212" title="goto source code">source</a></div><a href="#method.iter_utxos" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_utxos" class="fnname">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_raw_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#213-215" title="goto source code">source</a></div><a href="#method.iter_raw_txs" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_raw_txs" class="fnname">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of raw transactions</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#216-218" title="goto source code">source</a></div><a href="#method.iter_txs" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_txs" class="fnname">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of transactions metadata</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#220-232" title="goto source code">source</a></div><a href="#method.get_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_script_pubkey_from_path" class="fnname">get_script_pubkey_from_path</a>(<br> &self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a script_pubkey given the child number of a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#233-238" title="goto source code">source</a></div><a href="#method.get_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_path_from_script_pubkey" class="fnname">get_path_from_script_pubkey</a>(<br> &self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch the keychain and child number of a given script_pubkey</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#239-241" title="goto source code">source</a></div><a href="#method.get_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#242-244" title="goto source code">source</a></div><a href="#method.get_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_raw_tx" class="fnname">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#245-247" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch the transaction metadata and optionally also the raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#248-250" title="goto source code">source</a></div><a href="#method.get_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_last_index" class="fnname">get_last_index</a>(&self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#251-253" title="goto source code">source</a></div><a href="#method.get_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_sync_time" class="fnname">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the sync time, if present</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.increment_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#255-257" title="goto source code">source</a></div><a href="#method.increment_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.increment_last_index" class="fnname">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Increment the last derivation index for a keychain and return it <a href="../trait.Database.html#tymethod.increment_last_index">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#80" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#80" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CMemoryDatabase%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#94" title="goto source code">source</a></div><a href="#impl-From%3CMemoryDatabase%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#94" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSqliteDatabase%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#96" title="goto source code">source</a></div><a href="#impl-From%3CSqliteDatabase%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#96" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CTree%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#95" title="goto source code">source</a></div><a href="#impl-From%3CTree%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Tree> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#95" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Tree) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Memory" class="variant"><a href="#variant.Memory" class="anchor">§</a><h3 class="code-header">Memory(<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>)</h3></section><div class="docblock"><p>In-memory ephemeral database</p>
+</div><section id="variant.Sled" class="variant"><a href="#variant.Sled" class="anchor">§</a><h3 class="code-header">Sled(Tree)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>key-value-db</code></strong> only.</div></span><div class="docblock"><p>Simple key-value embedded database based on [<code>sled</code>]</p>
+</div><section id="variant.Sqlite" class="variant"><a href="#variant.Sqlite" class="anchor">§</a><h3 class="code-header">Sqlite(<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>sqlite</code></strong> only.</div></span><div class="docblock"><p>Sqlite embedded database using [<code>rusqlite</code>]</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchDatabase-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#319-350">source</a><a href="#impl-BatchDatabase-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Batch" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch" class="anchor">§</a><h4 class="code-header">type <a href="../trait.BatchDatabase.html#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="enum" href="enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h4></section></summary><div class='docblock'>Container for the operations</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.begin_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#322-330">source</a><a href="#method.begin_batch" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.begin_batch" class="fn">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></section></summary><div class='docblock'>Create a new batch container</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.commit_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#331-349">source</a><a href="#method.commit_batch" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.commit_batch" class="fn">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Consume and apply a batch of operations</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchOperations-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#120-190">source</a><a href="#impl-BatchOperations-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#121-135">source</a><a href="#method.set_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a script_pubkey along with its keychain and child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#136-138">source</a><a href="#method.set_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#139-141">source</a><a href="#method.set_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#142-144">source</a><a href="#method.set_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the metadata of a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#145-147">source</a><a href="#method.set_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the last derivation index for a given keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#148-150">source</a><a href="#method.set_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the sync time</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#152-164">source</a><a href="#method.del_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a script_pubkey given the keychain and its child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#165-170">source</a><a href="#method.del_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the data related to a specific script_pubkey, meaning the keychain and the child
+number. <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#171-173">source</a><a href="#method.del_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#174-176">source</a><a href="#method.del_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#177-183">source</a><a href="#method.del_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the metadata of a transaction and optionally the raw transaction itself</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#184-186">source</a><a href="#method.del_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#187-189">source</a><a href="#method.del_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Reset the sync time to <code>None</code> <a href="../trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableDatabase-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#407-423">source</a><a href="#impl-ConfigurableDatabase-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableDatabase.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#410-422">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableDatabase.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="../trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Database-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#192-258">source</a><a href="#impl-Database-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#193-205">source</a><a href="#method.check_descriptor_checksum" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.check_descriptor_checksum" class="fn">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Read and checks the descriptor checksum for a given keychain. <a href="../trait.Database.html#tymethod.check_descriptor_checksum">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#207-209">source</a><a href="#method.iter_script_pubkeys" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_script_pubkeys" class="fn">iter_script_pubkeys</a>(<br> &self,<br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of script_pubkeys</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_utxos" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#210-212">source</a><a href="#method.iter_utxos" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_utxos" class="fn">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_raw_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#213-215">source</a><a href="#method.iter_raw_txs" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_raw_txs" class="fn">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of raw transactions</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#216-218">source</a><a href="#method.iter_txs" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_txs" class="fn">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of transactions metadata</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#220-232">source</a><a href="#method.get_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_script_pubkey_from_path" class="fn">get_script_pubkey_from_path</a>(<br> &self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a script_pubkey given the child number of a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#233-238">source</a><a href="#method.get_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_path_from_script_pubkey" class="fn">get_path_from_script_pubkey</a>(<br> &self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch the keychain and child number of a given script_pubkey</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#239-241">source</a><a href="#method.get_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_utxo" class="fn">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#242-244">source</a><a href="#method.get_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_raw_tx" class="fn">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#245-247">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch the transaction metadata and optionally also the raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#248-250">source</a><a href="#method.get_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_last_index" class="fn">get_last_index</a>(&self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#251-253">source</a><a href="#method.get_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_sync_time" class="fn">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the sync time, if present</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.increment_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#255-257">source</a><a href="#method.increment_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.increment_last_index" class="fn">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Increment the last derivation index for a keychain and return it <a href="../trait.Database.html#tymethod.increment_last_index">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#80">source</a><a href="#impl-Debug-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#80">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CMemoryDatabase%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#94">source</a><a href="#impl-From%3CMemoryDatabase%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#94">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSqliteDatabase%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#96">source</a><a href="#impl-From%3CSqliteDatabase%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#96">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="../struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CTree%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#95">source</a><a href="#impl-From%3CTree%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Tree> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#95">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Tree) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AnyDatabase" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section><section id="impl-Send-for-AnyDatabase" class="impl has-srclink"><a href="#impl-Send-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section><section id="impl-Sync-for-AnyDatabase" class="impl has-srclink"><a href="#impl-Sync-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section><section id="impl-Unpin-for-AnyDatabase" class="impl has-srclink"><a href="#impl-Unpin-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section><section id="impl-UnwindSafe-for-AnyDatabase" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AnyDatabase" class="impl has-srclink"><a href="#impl-Pointable-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AnyDatabase" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the database configurations defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyDatabaseConfig"><title>AnyDatabaseConfig in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AnyDatabaseConfig</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Memory">Memory</a><a href="#variant.Sled">Sled</a><a href="#variant.Sqlite">Sqlite</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-From%3C()%3E">From<()></a><a href="#impl-From%3CSledDbConfiguration%3E">From<SledDbConfiguration></a><a href="#impl-From%3CSqliteDbConfiguration%3E">From<SqliteDbConfiguration></a><a href="#impl-Serialize">Serialize</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="AnyDatabaseConfig" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyDatabaseConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#394-405" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum AnyDatabaseConfig {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type that can contain any of the database configurations defined by the library"><meta name="keywords" content="rust, rustlang, rust-lang, AnyDatabaseConfig"><title>AnyDatabaseConfig in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AnyDatabaseConfig</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Memory">Memory</a></li><li><a href="#variant.Sled">Sled</a></li><li><a href="#variant.Sqlite">Sqlite</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-AnyDatabaseConfig">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-AnyDatabaseConfig">Deserialize<'de></a></li><li><a href="#impl-From%3C()%3E-for-AnyDatabaseConfig">From<()></a></li><li><a href="#impl-From%3CSledDbConfiguration%3E-for-AnyDatabaseConfig">From<SledDbConfiguration></a></li><li><a href="#impl-From%3CSqliteDbConfiguration%3E-for-AnyDatabaseConfig">From<SqliteDbConfiguration></a></li><li><a href="#impl-Serialize-for-AnyDatabaseConfig">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AnyDatabaseConfig">RefUnwindSafe</a></li><li><a href="#impl-Send-for-AnyDatabaseConfig">Send</a></li><li><a href="#impl-Sync-for-AnyDatabaseConfig">Sync</a></li><li><a href="#impl-Unpin-for-AnyDatabaseConfig">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AnyDatabaseConfig">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AnyDatabaseConfig">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AnyDatabaseConfig">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AnyDatabaseConfig">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-AnyDatabaseConfig">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-AnyDatabaseConfig">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AnyDatabaseConfig">Into<U></a></li><li><a href="#impl-Pointable-for-AnyDatabaseConfig">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AnyDatabaseConfig">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AnyDatabaseConfig">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AnyDatabaseConfig">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="enum" href="#">AnyDatabaseConfig</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#394-405">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum AnyDatabaseConfig {
Memory(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>),
Sled(<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>),
Sqlite(<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>),
<p>This allows storing a single configuration that can be loaded into an <a href="enum.AnyDatabase.html" title="AnyDatabase"><code>AnyDatabase</code></a>
instance. Wallets that plan to offer users the ability to switch blockchain backend at runtime
will find this particularly useful.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Memory" class="variant small-section-header"><a href="#variant.Memory" class="anchor field"></a><code>Memory(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>)</code></h3><div class="docblock"><p>Memory database has no config</p>
-</div><h3 id="variant.Sled" class="variant small-section-header"><a href="#variant.Sled" class="anchor field"></a><code>Sled(<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>key-value-db</code></strong> only.</div></div><div class="docblock"><p>Simple key-value embedded database based on [<code>sled</code>]</p>
-</div><h3 id="variant.Sqlite" class="variant small-section-header"><a href="#variant.Sqlite" class="anchor field"></a><code>Sqlite(<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>)</code></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>sqlite</code></strong> only.</div></div><div class="docblock"><p>Sqlite embedded database using [<code>rusqlite</code>]</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#393" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#393" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#393" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#393" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3C()%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#425" title="goto source code">source</a></div><a href="#impl-From%3C()%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#425" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSledDbConfiguration%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#426" title="goto source code">source</a></div><a href="#impl-From%3CSledDbConfiguration%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#426" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSqliteDbConfiguration%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#427" title="goto source code">source</a></div><a href="#impl-From%3CSqliteDbConfiguration%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#427" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#393" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#393" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Memory" class="variant"><a href="#variant.Memory" class="anchor">§</a><h3 class="code-header">Memory(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>)</h3></section><div class="docblock"><p>Memory database has no config</p>
+</div><section id="variant.Sled" class="variant"><a href="#variant.Sled" class="anchor">§</a><h3 class="code-header">Sled(<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>key-value-db</code></strong> only.</div></span><div class="docblock"><p>Simple key-value embedded database based on [<code>sled</code>]</p>
+</div><section id="variant.Sqlite" class="variant"><a href="#variant.Sqlite" class="anchor">§</a><h3 class="code-header">Sqlite(<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>)</h3></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>sqlite</code></strong> only.</div></span><div class="docblock"><p>Sqlite embedded database using [<code>rusqlite</code>]</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#393">source</a><a href="#impl-Debug-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#393">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#393">source</a><a href="#impl-Deserialize%3C%27de%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#393">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C()%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#425">source</a><a href="#impl-From%3C()%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#425">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSledDbConfiguration%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#426">source</a><a href="#impl-From%3CSledDbConfiguration%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#426">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSqliteDbConfiguration%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#427">source</a><a href="#impl-From%3CSqliteDbConfiguration%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#427">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#393">source</a><a href="#impl-Serialize-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#393">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section><section id="impl-Send-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-Send-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section><section id="impl-Sync-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-Sync-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section><section id="impl-Unpin-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-Unpin-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section><section id="impl-UnwindSafe-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-Pointable-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Runtime-checked database types"><meta name="keywords" content="rust, rustlang, rust-lang, any"><title>bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module any</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><div id="sidebar-vars" data-name="any" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a class="mod" href="#">any</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#12-427" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Runtime-checked database types</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Runtime-checked database types"><meta name="keywords" content="rust, rustlang, rust-lang, any"><title>bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module any</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a class="mod" href="#">any</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#12-427">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Runtime-checked database types</p>
<p>This module provides the implementation of <a href="enum.AnyDatabase.html" title="AnyDatabase"><code>AnyDatabase</code></a> which allows switching the
inner <a href="../trait.Database.html" title="Database"><code>Database</code></a> type at runtime.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>In this example, <code>wallet_memory</code> and <code>wallet_sled</code> have the same type of <code>Wallet<(), AnyDatabase></code>.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">memory</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
-<span class="kw">let</span> <span class="ident">wallet_memory</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"..."</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">memory</span>)<span class="question-mark">?</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>memory = MemoryDatabase::default();
+<span class="kw">let </span>wallet_memory = Wallet::new(<span class="string">"..."</span>, <span class="prelude-val">None</span>, Network::Testnet, memory)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">sled</span> <span class="op">=</span> <span class="ident">sled::open</span>(<span class="string">"my-database"</span>)<span class="question-mark">?</span>.<span class="ident">open_tree</span>(<span class="string">"default_tree"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet_sled</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"..."</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">sled</span>)<span class="question-mark">?</span>;</code></pre></div>
+<span class="kw">let </span>sled = sled::open(<span class="string">"my-database"</span>)<span class="question-mark">?</span>.open_tree(<span class="string">"default_tree"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet_sled = Wallet::new(<span class="string">"..."</span>, <span class="prelude-val">None</span>, Network::Testnet, sled)<span class="question-mark">?</span>;</code></pre></div>
<p>When paired with the use of <a href="../trait.ConfigurableDatabase.html" title="ConfigurableDatabase"><code>ConfigurableDatabase</code></a>, it allows creating wallets with any
database supported using a single line of code:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(<span class="string">"..."</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">AnyDatabase::from_config</span>(<span class="kw-2">&</span><span class="ident">config</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"..."</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">database</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SledDbConfiguration.html" title="bdk::database::any::SledDbConfiguration struct">SledDbConfiguration</a></div><div class="item-right docblock-short"><p>Configuration type for a [<code>sled::Tree</code>] database</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SqliteDbConfiguration.html" title="bdk::database::any::SqliteDbConfiguration struct">SqliteDbConfiguration</a></div><div class="item-right docblock-short"><p>Configuration type for a <a href="../struct.SqliteDatabase.html" title="sqlite::SqliteDatabase"><code>sqlite::SqliteDatabase</code></a> database</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyBatch.html" title="bdk::database::any::AnyBatch enum">AnyBatch</a></div><div class="item-right docblock-short"><p>Type that contains any of the <a href="../trait.BatchDatabase.html#associatedtype.Batch" title="BatchDatabase::Batch"><code>BatchDatabase::Batch</code></a> types defined by the library</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyDatabase.html" title="bdk::database::any::AnyDatabase enum">AnyDatabase</a></div><div class="item-right docblock-short"><p>Type that can contain any of the <a href="../trait.Database.html" title="Database"><code>Database</code></a> types defined by the library</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyDatabaseConfig.html" title="bdk::database::any::AnyDatabaseConfig enum">AnyDatabaseConfig</a></div><div class="item-right docblock-short"><p>Type that can contain any of the database configurations defined by the library</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>config = serde_json::from_str(<span class="string">"..."</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>database = AnyDatabase::from_config(<span class="kw-2">&</span>config)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(<span class="string">"..."</span>, <span class="prelude-val">None</span>, Network::Testnet, database)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SledDbConfiguration.html" title="bdk::database::any::SledDbConfiguration struct">SledDbConfiguration</a></div><div class="item-right docblock-short">Configuration type for a [<code>sled::Tree</code>] database</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SqliteDbConfiguration.html" title="bdk::database::any::SqliteDbConfiguration struct">SqliteDbConfiguration</a></div><div class="item-right docblock-short">Configuration type for a <a href="../struct.SqliteDatabase.html" title="sqlite::SqliteDatabase"><code>sqlite::SqliteDatabase</code></a> database</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyBatch.html" title="bdk::database::any::AnyBatch enum">AnyBatch</a></div><div class="item-right docblock-short">Type that contains any of the <a href="../trait.BatchDatabase.html#associatedtype.Batch" title="BatchDatabase::Batch"><code>BatchDatabase::Batch</code></a> types defined by the library</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyDatabase.html" title="bdk::database::any::AnyDatabase enum">AnyDatabase</a></div><div class="item-right docblock-short">Type that can contain any of the <a href="../trait.Database.html" title="Database"><code>Database</code></a> types defined by the library</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AnyDatabaseConfig.html" title="bdk::database::any::AnyDatabaseConfig enum">AnyDatabaseConfig</a></div><div class="item-right docblock-short">Type that can contain any of the database configurations defined by the library</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["AnyBatch","Type that contains any of the [`BatchDatabase::Batch`] types defined by the library"],["AnyDatabase","Type that can contain any of the [`Database`] types defined by the library"],["AnyDatabaseConfig","Type that can contain any of the database configurations defined by the library"]],"struct":[["SledDbConfiguration","Configuration type for a [`sled::Tree`] database"],["SqliteDbConfiguration","Configuration type for a [`sqlite::SqliteDatabase`] database"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["AnyBatch","Type that contains any of the [`BatchDatabase::Batch`] types defined by the library"],["AnyDatabase","Type that can contain any of the [`Database`] types defined by the library"],["AnyDatabaseConfig","Type that can contain any of the database configurations defined by the library"]],"struct":[["SledDbConfiguration","Configuration type for a [`sled::Tree`] database"],["SqliteDbConfiguration","Configuration type for a [`sqlite::SqliteDatabase`] database"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration type for a [`sled::Tree`] database"><meta name="keywords" content="rust, rustlang, rust-lang, SledDbConfiguration"><title>SledDbConfiguration in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SledDbConfiguration</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.path">path</a><a href="#structfield.tree_name">tree_name</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-From%3CSledDbConfiguration%3E">From<SledDbConfiguration></a><a href="#impl-Serialize">Serialize</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="SledDbConfiguration" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="struct" href="#">SledDbConfiguration</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#355-360" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SledDbConfiguration {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration type for a [`sled::Tree`] database"><meta name="keywords" content="rust, rustlang, rust-lang, SledDbConfiguration"><title>SledDbConfiguration in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SledDbConfiguration</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.path">path</a></li><li><a href="#structfield.tree_name">tree_name</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-SledDbConfiguration">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-SledDbConfiguration">Deserialize<'de></a></li><li><a href="#impl-From%3CSledDbConfiguration%3E-for-AnyDatabaseConfig">From<SledDbConfiguration></a></li><li><a href="#impl-Serialize-for-SledDbConfiguration">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SledDbConfiguration">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SledDbConfiguration">Send</a></li><li><a href="#impl-Sync-for-SledDbConfiguration">Sync</a></li><li><a href="#impl-Unpin-for-SledDbConfiguration">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SledDbConfiguration">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SledDbConfiguration">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SledDbConfiguration">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SledDbConfiguration">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-SledDbConfiguration">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-SledDbConfiguration">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SledDbConfiguration">Into<U></a></li><li><a href="#impl-Pointable-for-SledDbConfiguration">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SledDbConfiguration">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SledDbConfiguration">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SledDbConfiguration">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="struct" href="#">SledDbConfiguration</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#355-360">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SledDbConfiguration {
pub path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub tree_name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration type for a [<code>sled::Tree</code>] database</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.path" class="structfield small-section-header"><a href="#structfield.path" class="anchor field"></a><code>path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Main directory of the db</p>
-</div><span id="structfield.tree_name" class="structfield small-section-header"><a href="#structfield.tree_name" class="anchor field"></a><code>tree_name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Name of the database tree, a separated namespace for the data</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#354" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#354" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#354" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#354" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSledDbConfiguration%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#426" title="goto source code">source</a></div><a href="#impl-From%3CSledDbConfiguration%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#426" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#354" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#354" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.path" class="structfield small-section-header"><a href="#structfield.path" class="anchor field">§</a><code>path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Main directory of the db</p>
+</div><span id="structfield.tree_name" class="structfield small-section-header"><a href="#structfield.tree_name" class="anchor field">§</a><code>tree_name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Name of the database tree, a separated namespace for the data</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#354">source</a><a href="#impl-Debug-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#354">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#354">source</a><a href="#impl-Deserialize%3C%27de%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#354">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSledDbConfiguration%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#426">source</a><a href="#impl-From%3CSledDbConfiguration%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#426">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#354">source</a><a href="#impl-Serialize-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#354">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section><section id="impl-Send-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-Send-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section><section id="impl-Sync-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-Sync-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section><section id="impl-Unpin-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-Unpin-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section><section id="impl-UnwindSafe-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-Pointable-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SledDbConfiguration" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-SledDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-SledDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration type for a [`sqlite::SqliteDatabase`] database"><meta name="keywords" content="rust, rustlang, rust-lang, SqliteDbConfiguration"><title>SqliteDbConfiguration in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SqliteDbConfiguration</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.path">path</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-From%3CSqliteDbConfiguration%3E">From<SqliteDbConfiguration></a><a href="#impl-Serialize">Serialize</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a></h2><div id="sidebar-vars" data-name="SqliteDbConfiguration" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="struct" href="#">SqliteDbConfiguration</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#374-377" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SqliteDbConfiguration {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Configuration type for a [`sqlite::SqliteDatabase`] database"><meta name="keywords" content="rust, rustlang, rust-lang, SqliteDbConfiguration"><title>SqliteDbConfiguration in bdk::database::any - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SqliteDbConfiguration</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.path">path</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-SqliteDbConfiguration">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-SqliteDbConfiguration">Deserialize<'de></a></li><li><a href="#impl-From%3CSqliteDbConfiguration%3E-for-AnyDatabaseConfig">From<SqliteDbConfiguration></a></li><li><a href="#impl-Serialize-for-SqliteDbConfiguration">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SqliteDbConfiguration">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SqliteDbConfiguration">Send</a></li><li><a href="#impl-Sync-for-SqliteDbConfiguration">Sync</a></li><li><a href="#impl-Unpin-for-SqliteDbConfiguration">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SqliteDbConfiguration">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SqliteDbConfiguration">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SqliteDbConfiguration">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SqliteDbConfiguration">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-SqliteDbConfiguration">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-SqliteDbConfiguration">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SqliteDbConfiguration">Into<U></a></li><li><a href="#impl-Pointable-for-SqliteDbConfiguration">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SqliteDbConfiguration">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SqliteDbConfiguration">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SqliteDbConfiguration">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database::any</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">any</a>::<wbr><a class="struct" href="#">SqliteDbConfiguration</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/any.rs.html#374-377">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SqliteDbConfiguration {
pub path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configuration type for a <a href="../struct.SqliteDatabase.html" title="sqlite::SqliteDatabase"><code>sqlite::SqliteDatabase</code></a> database</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.path" class="structfield small-section-header"><a href="#structfield.path" class="anchor field"></a><code>path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Main directory of the db</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#373" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#373" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#373" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#373" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSqliteDbConfiguration%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#427" title="goto source code">source</a></div><a href="#impl-From%3CSqliteDbConfiguration%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#427" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#373" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#373" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.path" class="structfield small-section-header"><a href="#structfield.path" class="anchor field">§</a><code>path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Main directory of the db</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#373">source</a><a href="#impl-Debug-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#373">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#373">source</a><a href="#impl-Deserialize%3C%27de%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#373">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSqliteDbConfiguration%3E-for-AnyDatabaseConfig" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#427">source</a><a href="#impl-From%3CSqliteDbConfiguration%3E-for-AnyDatabaseConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>> for <a class="enum" href="enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#427">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#373">source</a><a href="#impl-Serialize-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#373">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section><section id="impl-Send-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-Send-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section><section id="impl-Sync-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-Sync-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section><section id="impl-Unpin-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-Unpin-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section><section id="impl-UnwindSafe-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-Pointable-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SqliteDbConfiguration" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-SqliteDbConfiguration" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-SqliteDbConfiguration" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Database types"><meta name="keywords" content="rust, rustlang, rust-lang, database"><title>bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module database</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="database" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">database</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#12-657" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Database types</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Database types"><meta name="keywords" content="rust, rustlang, rust-lang, database"><title>bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module database</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">database</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#12-657">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Database types</p>
<p>This module provides the implementation of some defaults database types, along with traits that
can be implemented externally to let <a href="../wallet/struct.Wallet.html"><code>Wallet</code></a>s use customized databases.</p>
<p>It’s important to note that the databases defined here only contains “blockchain-related” data.
<p>The currently recommended database is [<code>sled</code>], which is a pretty simple key-value embedded
database written in Rust. If the <code>key-value-db</code> feature is enabled (which by default is),
this library automatically implements all the required traits for [<code>sled::Tree</code>].</p>
-</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left import-item"><code>pub use any::<a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use any::<a class="enum" href="any/enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use memory::<a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>;</code></div><div class="item-right docblock-short"></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="any/index.html" title="bdk::database::any mod">any</a></div><div class="item-right docblock-short"><p>Runtime-checked database types</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="memory/index.html" title="bdk::database::memory mod">memory</a></div><div class="item-right docblock-short"><p>In-memory ephemeral database</p>
-</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SqliteDatabase.html" title="bdk::database::SqliteDatabase struct">SqliteDatabase</a></div><div class="item-right docblock-short"><p>Sqlite database stored on filesystem</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SyncTime.html" title="bdk::database::SyncTime struct">SyncTime</a></div><div class="item-right docblock-short"><p>Blockchain state at the time of syncing</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.BatchDatabase.html" title="bdk::database::BatchDatabase trait">BatchDatabase</a></div><div class="item-right docblock-short"><p>Trait for a database that supports batch operations</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.BatchOperations.html" title="bdk::database::BatchOperations trait">BatchOperations</a></div><div class="item-right docblock-short"><p>Trait for operations that can be batched</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ConfigurableDatabase.html" title="bdk::database::ConfigurableDatabase trait">ConfigurableDatabase</a></div><div class="item-right docblock-short"><p>Trait for <a href="trait.Database.html" title="Database"><code>Database</code></a> types that can be created given a configuration</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Database.html" title="bdk::database::Database trait">Database</a></div><div class="item-right docblock-short"><p>Trait for reading data from a database</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2><div class="item-table"><div class="item-row"><div class="item-left import-item" id="reexport.AnyDatabase"><code>pub use any::<a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.AnyDatabaseConfig"><code>pub use any::<a class="enum" href="any/enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.MemoryDatabase"><code>pub use memory::<a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>;</code></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="any/index.html" title="bdk::database::any mod">any</a></div><div class="item-right docblock-short">Runtime-checked database types</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="memory/index.html" title="bdk::database::memory mod">memory</a></div><div class="item-right docblock-short">In-memory ephemeral database</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SqliteDatabase.html" title="bdk::database::SqliteDatabase struct">SqliteDatabase</a></div><div class="item-right docblock-short">Sqlite database stored on filesystem</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SyncTime.html" title="bdk::database::SyncTime struct">SyncTime</a></div><div class="item-right docblock-short">Blockchain state at the time of syncing</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.BatchDatabase.html" title="bdk::database::BatchDatabase trait">BatchDatabase</a></div><div class="item-right docblock-short">Trait for a database that supports batch operations</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.BatchOperations.html" title="bdk::database::BatchOperations trait">BatchOperations</a></div><div class="item-right docblock-short">Trait for operations that can be batched</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ConfigurableDatabase.html" title="bdk::database::ConfigurableDatabase trait">ConfigurableDatabase</a></div><div class="item-right docblock-short">Trait for <a href="trait.Database.html" title="Database"><code>Database</code></a> types that can be created given a configuration</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Database.html" title="bdk::database::Database trait">Database</a></div><div class="item-right docblock-short">Trait for reading data from a database</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="In-memory ephemeral database"><meta name="keywords" content="rust, rustlang, rust-lang, memory"><title>bdk::database::memory - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module memory</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li></ul></div><div id="sidebar-vars" data-name="memory" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a class="mod" href="#">memory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#12-690" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>In-memory ephemeral database</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="In-memory ephemeral database"><meta name="keywords" content="rust, rustlang, rust-lang, memory"><title>bdk::database::memory - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module memory</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a class="mod" href="#">memory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#12-690">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>In-memory ephemeral database</p>
<p>This module defines an in-memory database type called <a href="struct.MemoryDatabase.html" title="MemoryDatabase"><code>MemoryDatabase</code></a> that is based on a
<a href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="BTreeMap"><code>BTreeMap</code></a>.</p>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.MemoryDatabase.html" title="bdk::database::memory::MemoryDatabase struct">MemoryDatabase</a></div><div class="item-right docblock-short"><p>In-memory ephemeral database</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.MemoryDatabase.html" title="bdk::database::memory::MemoryDatabase struct">MemoryDatabase</a></div><div class="item-right docblock-short">In-memory ephemeral database</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"struct":[["MemoryDatabase","In-memory ephemeral database"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":[["MemoryDatabase","In-memory ephemeral database"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="In-memory ephemeral database"><meta name="keywords" content="rust, rustlang, rust-lang, MemoryDatabase"><title>MemoryDatabase in bdk::database::memory - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">MemoryDatabase</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-BatchDatabase">BatchDatabase</a><a href="#impl-BatchOperations">BatchOperations</a><a href="#impl-ConfigurableDatabase">ConfigurableDatabase</a><a href="#impl-Database">Database</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E">From<<MemoryDatabase as BatchDatabase>::Batch></a><a href="#impl-From%3CMemoryDatabase%3E">From<MemoryDatabase></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">memory</a></h2><div id="sidebar-vars" data-name="MemoryDatabase" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">memory</a>::<wbr><a class="struct" href="#">MemoryDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#116-119" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct MemoryDatabase { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>In-memory ephemeral database</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="In-memory ephemeral database"><meta name="keywords" content="rust, rustlang, rust-lang, MemoryDatabase"><title>MemoryDatabase in bdk::database::memory - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">MemoryDatabase</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-BatchDatabase-for-MemoryDatabase">BatchDatabase</a></li><li><a href="#impl-BatchOperations-for-MemoryDatabase">BatchOperations</a></li><li><a href="#impl-ConfigurableDatabase-for-MemoryDatabase">ConfigurableDatabase</a></li><li><a href="#impl-Database-for-MemoryDatabase">Database</a></li><li><a href="#impl-Debug-for-MemoryDatabase">Debug</a></li><li><a href="#impl-Default-for-MemoryDatabase">Default</a></li><li><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch">From<<MemoryDatabase as BatchDatabase>::Batch></a></li><li><a href="#impl-From%3CMemoryDatabase%3E-for-AnyDatabase">From<MemoryDatabase></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-MemoryDatabase">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-MemoryDatabase">Send</a></li><li><a href="#impl-Sync-for-MemoryDatabase">Sync</a></li><li><a href="#impl-Unpin-for-MemoryDatabase">Unpin</a></li><li><a href="#impl-UnwindSafe-for-MemoryDatabase">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-MemoryDatabase">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-MemoryDatabase">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-MemoryDatabase">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-MemoryDatabase">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-MemoryDatabase">Into<U></a></li><li><a href="#impl-Pointable-for-MemoryDatabase">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-MemoryDatabase">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-MemoryDatabase">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-MemoryDatabase">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database::memory</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a href="index.html">memory</a>::<wbr><a class="struct" href="#">MemoryDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#116-119">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct MemoryDatabase { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>In-memory ephemeral database</p>
<p>This database can be used as a temporary storage for wallets that are not kept permanently on
a device, or on platforms that don’t provide a filesystem, like <code>wasm32</code>.</p>
<p>Once it’s dropped its content will be lost.</p>
<p>If you are looking for a permanent storage solution, you can try with the default key-value
database called [<code>sled</code>]. See the <a href="../index.html"><code>database</code></a> module documentation for more details.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#121-129" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#123-128" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>() -> Self</h4></div></summary><div class="docblock"><p>Create a new empty database</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#454-468" title="goto source code">source</a></div><a href="#impl-BatchDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Batch" class="type trait-impl has-srclink"><a href="#associatedtype.Batch" class="anchor"></a><h4 class="code-header">type <a href="../trait.BatchDatabase.html#associatedtype.Batch" class="associatedtype">Batch</a> = Self</h4></div></summary><div class='docblock'><p>Container for the operations</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.begin_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#457-459" title="goto source code">source</a></div><a href="#method.begin_batch" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.begin_batch" class="fnname">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></div></summary><div class='docblock'><p>Create a new batch container</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.commit_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#461-467" title="goto source code">source</a></div><a href="#method.commit_batch" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.commit_batch" class="fnname">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Consume and apply a batch of operations</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchOperations" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#131-292" title="goto source code">source</a></div><a href="#impl-BatchOperations" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#132-149" title="goto source code">source</a></div><a href="#method.set_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a script_pubkey along with its keychain and child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#151-159" title="goto source code">source</a></div><a href="#method.set_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#160-165" title="goto source code">source</a></div><a href="#method.set_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#166-181" title="goto source code">source</a></div><a href="#method.set_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the metadata of a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#182-187" title="goto source code">source</a></div><a href="#method.set_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the last derivation index for a given keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#188-193" title="goto source code">source</a></div><a href="#method.set_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, data: <a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the sync time</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#195-205" title="goto source code">source</a></div><a href="#method.del_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a script_pubkey given the keychain and its child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#206-224" title="goto source code">source</a></div><a href="#method.del_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the data related to a specific script_pubkey, meaning the keychain and the child
-number. <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#225-242" title="goto source code">source</a></div><a href="#method.del_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#243-249" title="goto source code">source</a></div><a href="#method.del_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#250-274" title="goto source code">source</a></div><a href="#method.del_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the metadata of a transaction and optionally the raw transaction itself</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#275-284" title="goto source code">source</a></div><a href="#method.del_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#285-291" title="goto source code">source</a></div><a href="#method.del_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Reset the sync time to <code>None</code> <a href="../trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#470-476" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="../trait.ConfigurableDatabase.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#473-475" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="../trait.ConfigurableDatabase.html#tymethod.from_config" class="fnname">from_config</a>(_config: &Self::<a class="associatedtype" href="../trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Database" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#294-452" title="goto source code">source</a></div><a href="#impl-Database" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#295-316" title="goto source code">source</a></div><a href="#method.check_descriptor_checksum" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.check_descriptor_checksum" class="fnname">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>>(<br> &mut self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Read and checks the descriptor checksum for a given keychain. <a href="../trait.Database.html#tymethod.check_descriptor_checksum">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#318-324" title="goto source code">source</a></div><a href="#method.iter_script_pubkeys" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_script_pubkeys" class="fnname">iter_script_pubkeys</a>(<br> &self, <br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of script_pubkeys</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_utxos" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#326-341" title="goto source code">source</a></div><a href="#method.iter_utxos" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_utxos" class="fnname">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_raw_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#343-349" title="goto source code">source</a></div><a href="#method.iter_raw_txs" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_raw_txs" class="fnname">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of raw transactions</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#351-365" title="goto source code">source</a></div><a href="#method.iter_txs" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_txs" class="fnname">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of transactions metadata</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#367-377" title="goto source code">source</a></div><a href="#method.get_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_script_pubkey_from_path" class="fnname">get_script_pubkey_from_path</a>(<br> &self, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a script_pubkey given the child number of a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#379-391" title="goto source code">source</a></div><a href="#method.get_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_path_from_script_pubkey" class="fnname">get_path_from_script_pubkey</a>(<br> &self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch the keychain and child number of a given script_pubkey</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#393-404" title="goto source code">source</a></div><a href="#method.get_utxo" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#406-412" title="goto source code">source</a></div><a href="#method.get_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_raw_tx" class="fnname">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#414-424" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch the transaction metadata and optionally also the raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#426-429" title="goto source code">source</a></div><a href="#method.get_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_last_index" class="fnname">get_last_index</a>(&self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#431-437" title="goto source code">source</a></div><a href="#method.get_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_sync_time" class="fnname">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the sync time, if present</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.increment_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#440-451" title="goto source code">source</a></div><a href="#method.increment_last_index" class="anchor"></a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.increment_last_index" class="fnname">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Increment the last derivation index for a keychain and return it <a href="../trait.Database.html#tymethod.increment_last_index">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#115" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#115" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#115" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#115" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#112-116" title="goto source code">source</a></div><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="../any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#112-116" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <<a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CMemoryDatabase%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#94" title="goto source code">source</a></div><a href="#impl-From%3CMemoryDatabase%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>> for <a class="enum" href="../any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/database/any.rs.html#94" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#121-129">source</a><a href="#impl-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#123-128">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>() -> Self</h4></section></summary><div class="docblock"><p>Create a new empty database</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchDatabase-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#454-468">source</a><a href="#impl-BatchDatabase-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Batch" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch" class="anchor">§</a><h4 class="code-header">type <a href="../trait.BatchDatabase.html#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h4></section></summary><div class='docblock'>Container for the operations</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.begin_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#457-459">source</a><a href="#method.begin_batch" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.begin_batch" class="fn">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></section></summary><div class='docblock'>Create a new batch container</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.commit_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#461-467">source</a><a href="#method.commit_batch" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchDatabase.html#tymethod.commit_batch" class="fn">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Consume and apply a batch of operations</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchOperations-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#131-292">source</a><a href="#impl-BatchOperations-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#132-149">source</a><a href="#method.set_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a script_pubkey along with its keychain and child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#151-159">source</a><a href="#method.set_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#160-165">source</a><a href="#method.set_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#166-181">source</a><a href="#method.set_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the metadata of a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#182-187">source</a><a href="#method.set_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the last derivation index for a given keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#188-193">source</a><a href="#method.set_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, data: <a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the sync time</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#195-205">source</a><a href="#method.del_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a script_pubkey given the keychain and its child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#206-224">source</a><a href="#method.del_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the data related to a specific script_pubkey, meaning the keychain and the child
+number. <a href="../trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#225-242">source</a><a href="#method.del_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#243-249">source</a><a href="#method.del_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#250-274">source</a><a href="#method.del_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the metadata of a transaction and optionally the raw transaction itself</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#275-284">source</a><a href="#method.del_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#285-291">source</a><a href="#method.del_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.BatchOperations.html#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Reset the sync time to <code>None</code> <a href="../trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableDatabase-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#470-476">source</a><a href="#impl-ConfigurableDatabase-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ConfigurableDatabase.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#473-475">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ConfigurableDatabase.html#tymethod.from_config" class="fn">from_config</a>(_config: &Self::<a class="associatedtype" href="../trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Database-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#294-452">source</a><a href="#impl-Database-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#295-316">source</a><a href="#method.check_descriptor_checksum" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.check_descriptor_checksum" class="fn">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>>(<br> &mut self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Read and checks the descriptor checksum for a given keychain. <a href="../trait.Database.html#tymethod.check_descriptor_checksum">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#318-324">source</a><a href="#method.iter_script_pubkeys" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_script_pubkeys" class="fn">iter_script_pubkeys</a>(<br> &self,<br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of script_pubkeys</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_utxos" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#326-341">source</a><a href="#method.iter_utxos" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_utxos" class="fn">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_raw_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#343-349">source</a><a href="#method.iter_raw_txs" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_raw_txs" class="fn">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of raw transactions</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#351-365">source</a><a href="#method.iter_txs" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.iter_txs" class="fn">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of transactions metadata</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#367-377">source</a><a href="#method.get_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_script_pubkey_from_path" class="fn">get_script_pubkey_from_path</a>(<br> &self,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a script_pubkey given the child number of a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#379-391">source</a><a href="#method.get_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_path_from_script_pubkey" class="fn">get_path_from_script_pubkey</a>(<br> &self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch the keychain and child number of a given script_pubkey</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#393-404">source</a><a href="#method.get_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_utxo" class="fn">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a <a href="../../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#406-412">source</a><a href="#method.get_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_raw_tx" class="fn">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#414-424">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch the transaction metadata and optionally also the raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#426-429">source</a><a href="#method.get_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_last_index" class="fn">get_last_index</a>(&self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#431-437">source</a><a href="#method.get_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.get_sync_time" class="fn">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the sync time, if present</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.increment_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#440-451">source</a><a href="#method.increment_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.Database.html#tymethod.increment_last_index" class="fn">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Increment the last derivation index for a keychain and return it <a href="../trait.Database.html#tymethod.increment_last_index">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#115">source</a><a href="#impl-Debug-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#115">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#115">source</a><a href="#impl-Default-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/memory.rs.html#115">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#112-116">source</a><a href="#impl-From%3C%3CMemoryDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="../any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#112-116">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <<a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a> as <a class="trait" href="../trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="../trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CMemoryDatabase%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#94">source</a><a href="#impl-From%3CMemoryDatabase%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>> for <a class="enum" href="../any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/database/any.rs.html#94">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section><section id="impl-Send-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-Send-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section><section id="impl-Sync-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-Sync-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section><section id="impl-Unpin-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-Unpin-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section><section id="impl-UnwindSafe-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-UnwindSafe-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-Pointable-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-MemoryDatabase" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"mod":[["any","Runtime-checked database types"],["memory","In-memory ephemeral database"]],"struct":[["SqliteDatabase","Sqlite database stored on filesystem"],["SyncTime","Blockchain state at the time of syncing"]],"trait":[["BatchDatabase","Trait for a database that supports batch operations"],["BatchOperations","Trait for operations that can be batched"],["ConfigurableDatabase","Trait for [`Database`] types that can be created given a configuration"],["Database","Trait for reading data from a database"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"mod":[["any","Runtime-checked database types"],["memory","In-memory ephemeral database"]],"struct":[["SqliteDatabase","Sqlite database stored on filesystem"],["SyncTime","Blockchain state at the time of syncing"]],"trait":[["BatchDatabase","Trait for a database that supports batch operations"],["BatchOperations","Trait for operations that can be batched"],["ConfigurableDatabase","Trait for [`Database`] types that can be created given a configuration"],["Database","Trait for reading data from a database"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Sqlite database stored on filesystem"><meta name="keywords" content="rust, rustlang, rust-lang, SqliteDatabase"><title>SqliteDatabase in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SqliteDatabase</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.connection">connection</a><a href="#structfield.path">path</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-BatchDatabase">BatchDatabase</a><a href="#impl-BatchOperations">BatchOperations</a><a href="#impl-ConfigurableDatabase">ConfigurableDatabase</a><a href="#impl-Database">Database</a><a href="#impl-Debug">Debug</a><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E">From<<SqliteDatabase as BatchDatabase>::Batch></a><a href="#impl-From%3CSqliteDatabase%3E">From<SqliteDatabase></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a></h2><div id="sidebar-vars" data-name="SqliteDatabase" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="struct" href="#">SqliteDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#78-83" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SqliteDatabase {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Sqlite database stored on filesystem"><meta name="keywords" content="rust, rustlang, rust-lang, SqliteDatabase"><title>SqliteDatabase in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SqliteDatabase</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.connection">connection</a></li><li><a href="#structfield.path">path</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-BatchDatabase-for-SqliteDatabase">BatchDatabase</a></li><li><a href="#impl-BatchOperations-for-SqliteDatabase">BatchOperations</a></li><li><a href="#impl-ConfigurableDatabase-for-SqliteDatabase">ConfigurableDatabase</a></li><li><a href="#impl-Database-for-SqliteDatabase">Database</a></li><li><a href="#impl-Debug-for-SqliteDatabase">Debug</a></li><li><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch">From<<SqliteDatabase as BatchDatabase>::Batch></a></li><li><a href="#impl-From%3CSqliteDatabase%3E-for-AnyDatabase">From<SqliteDatabase></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SqliteDatabase">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-SqliteDatabase">Send</a></li><li><a href="#impl-Sync-for-SqliteDatabase">!Sync</a></li><li><a href="#impl-Unpin-for-SqliteDatabase">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SqliteDatabase">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SqliteDatabase">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SqliteDatabase">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SqliteDatabase">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SqliteDatabase">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SqliteDatabase">Into<U></a></li><li><a href="#impl-Pointable-for-SqliteDatabase">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SqliteDatabase">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SqliteDatabase">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SqliteDatabase">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="struct" href="#">SqliteDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#78-83">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SqliteDatabase {
pub path: <a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.PathBuf.html" title="struct std::path::PathBuf">PathBuf</a>,
pub connection: Connection,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Sqlite database stored on filesystem</p>
<p>This is a permanent storage solution for devices and platforms that provide a filesystem.
<a href="index.html" title="crate::database"><code>crate::database</code></a></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.path" class="structfield small-section-header"><a href="#structfield.path" class="anchor field"></a><code>path: <a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.PathBuf.html" title="struct std::path::PathBuf">PathBuf</a></code></span><div class="docblock"><p>Path on the local filesystem to store the sqlite file</p>
-</div><span id="structfield.connection" class="structfield small-section-header"><a href="#structfield.connection" class="anchor field"></a><code>connection: Connection</code></span><div class="docblock"><p>A rusqlite connection object to the sqlite database</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#85-642" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#88-94" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a><T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>>>(path: T) -> Self</h4></div></summary><div class="docblock"><p>Instantiate a new SqliteDatabase instance by creating a connection
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.path" class="structfield small-section-header"><a href="#structfield.path" class="anchor field">§</a><code>path: <a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.PathBuf.html" title="struct std::path::PathBuf">PathBuf</a></code></span><div class="docblock"><p>Path on the local filesystem to store the sqlite file</p>
+</div><span id="structfield.connection" class="structfield small-section-header"><a href="#structfield.connection" class="anchor field">§</a><code>connection: Connection</code></span><div class="docblock"><p>A rusqlite connection object to the sqlite database</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#85-642">source</a><a href="#impl-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#88-94">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a><T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>>>(path: T) -> Self</h4></section></summary><div class="docblock"><p>Instantiate a new SqliteDatabase instance by creating a connection
to the database stored at path</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#918-931" title="goto source code">source</a></div><a href="#impl-BatchDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Batch" class="type trait-impl has-srclink"><a href="#associatedtype.Batch" class="anchor"></a><h4 class="code-header">type <a href="trait.BatchDatabase.html#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h4></div></summary><div class='docblock'><p>Container for the operations</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.begin_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#921-925" title="goto source code">source</a></div><a href="#method.begin_batch" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchDatabase.html#tymethod.begin_batch" class="fnname">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></div></summary><div class='docblock'><p>Create a new batch container</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.commit_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#927-930" title="goto source code">source</a></div><a href="#method.commit_batch" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchDatabase.html#tymethod.commit_batch" class="fnname">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Consume and apply a batch of operations</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BatchOperations" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#644-798" title="goto source code">source</a></div><a href="#impl-BatchOperations" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#645-654" title="goto source code">source</a></div><a href="#method.set_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a script_pubkey along with its keychain and child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#656-666" title="goto source code">source</a></div><a href="#method.set_utxo" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#668-678" title="goto source code">source</a></div><a href="#method.set_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store a raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#680-695" title="goto source code">source</a></div><a href="#method.set_tx" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the metadata of a transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#697-700" title="goto source code">source</a></div><a href="#method.set_last_index" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the last derivation index for a given keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#702-705" title="goto source code">source</a></div><a href="#method.set_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, ct: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Store the sync time</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#707-721" title="goto source code">source</a></div><a href="#method.del_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a script_pubkey given the keychain and its child number.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#723-734" title="goto source code">source</a></div><a href="#method.del_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the data related to a specific script_pubkey, meaning the keychain and the child
-number. <a href="trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#736-744" title="goto source code">source</a></div><a href="#method.del_utxo" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#746-754" title="goto source code">source</a></div><a href="#method.del_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#756-774" title="goto source code">source</a></div><a href="#method.del_tx" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the metadata of a transaction and optionally the raw transaction itself</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#776-786" title="goto source code">source</a></div><a href="#method.del_last_index" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Delete the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.del_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#788-797" title="goto source code">source</a></div><a href="#method.del_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Reset the sync time to <code>None</code> <a href="trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ConfigurableDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#380-386" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="type trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor"></a><h4 class="code-header">type <a href="trait.ConfigurableDatabase.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="any/struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h4></div></summary><div class='docblock'><p>Type that contains the configuration</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#383-385" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="trait.ConfigurableDatabase.html#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Create a new instance given a configuration</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Database" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#800-916" title="goto source code">source</a></div><a href="#impl-Database" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#801-821" title="goto source code">source</a></div><a href="#method.check_descriptor_checksum" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.check_descriptor_checksum" class="fnname">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Read and checks the descriptor checksum for a given keychain. <a href="trait.Database.html#tymethod.check_descriptor_checksum">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#823-831" title="goto source code">source</a></div><a href="#method.iter_script_pubkeys" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_script_pubkeys" class="fnname">iter_script_pubkeys</a>(<br> &self, <br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of script_pubkeys</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_utxos" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#833-835" title="goto source code">source</a></div><a href="#method.iter_utxos" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_utxos" class="fnname">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_raw_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#837-839" title="goto source code">source</a></div><a href="#method.iter_raw_txs" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_raw_txs" class="fnname">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of raw transactions</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#841-846" title="goto source code">source</a></div><a href="#method.iter_txs" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_txs" class="fnname">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the list of transactions metadata</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#848-858" title="goto source code">source</a></div><a href="#method.get_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_script_pubkey_from_path" class="fnname">get_script_pubkey_from_path</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a script_pubkey given the child number of a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#860-868" title="goto source code">source</a></div><a href="#method.get_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_path_from_script_pubkey" class="fnname">get_path_from_script_pubkey</a>(<br> &self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch the keychain and child number of a given script_pubkey</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#870-872" title="goto source code">source</a></div><a href="#method.get_utxo" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#874-879" title="goto source code">source</a></div><a href="#method.get_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_raw_tx" class="fnname">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#881-891" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Fetch the transaction metadata and optionally also the raw transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#893-897" title="goto source code">source</a></div><a href="#method.get_last_index" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_last_index" class="fnname">get_last_index</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#899-901" title="goto source code">source</a></div><a href="#method.get_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_sync_time" class="fnname">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Return the sync time, if present</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.increment_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#903-915" title="goto source code">source</a></div><a href="#method.increment_last_index" class="anchor"></a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.increment_last_index" class="fnname">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Increment the last derivation index for a keychain and return it <a href="trait.Database.html#tymethod.increment_last_index">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#77" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#77" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#118" title="goto source code">source</a></div><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#118" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <<a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSqliteDatabase%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#96" title="goto source code">source</a></div><a href="#impl-From%3CSqliteDatabase%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#96" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchDatabase-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#918-931">source</a><a href="#impl-BatchDatabase-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Batch" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch" class="anchor">§</a><h4 class="code-header">type <a href="trait.BatchDatabase.html#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h4></section></summary><div class='docblock'>Container for the operations</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.begin_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#921-925">source</a><a href="#method.begin_batch" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchDatabase.html#tymethod.begin_batch" class="fn">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></section></summary><div class='docblock'>Create a new batch container</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.commit_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#927-930">source</a><a href="#method.commit_batch" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchDatabase.html#tymethod.commit_batch" class="fn">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Consume and apply a batch of operations</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BatchOperations-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#644-798">source</a><a href="#impl-BatchOperations-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#645-654">source</a><a href="#method.set_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a script_pubkey along with its keychain and child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#656-666">source</a><a href="#method.set_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#668-678">source</a><a href="#method.set_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store a raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#680-695">source</a><a href="#method.set_tx" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the metadata of a transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#697-700">source</a><a href="#method.set_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the last derivation index for a given keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#702-705">source</a><a href="#method.set_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, ct: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Store the sync time</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#707-721">source</a><a href="#method.del_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a script_pubkey given the keychain and its child number.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#723-734">source</a><a href="#method.del_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the data related to a specific script_pubkey, meaning the keychain and the child
+number. <a href="trait.BatchOperations.html#tymethod.del_path_from_script_pubkey">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#736-744">source</a><a href="#method.del_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#746-754">source</a><a href="#method.del_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#756-774">source</a><a href="#method.del_tx" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the metadata of a transaction and optionally the raw transaction itself</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#776-786">source</a><a href="#method.del_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Delete the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.del_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#788-797">source</a><a href="#method.del_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BatchOperations.html#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Reset the sync time to <code>None</code> <a href="trait.BatchOperations.html#tymethod.del_sync_time">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ConfigurableDatabase-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#380-386">source</a><a href="#impl-ConfigurableDatabase-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="trait.ConfigurableDatabase.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="any/struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h4></section></summary><div class='docblock'>Type that contains the configuration</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#383-385">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="trait.ConfigurableDatabase.html#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Create a new instance given a configuration</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Database-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#800-916">source</a><a href="#impl-Database-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#801-821">source</a><a href="#method.check_descriptor_checksum" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.check_descriptor_checksum" class="fn">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Read and checks the descriptor checksum for a given keychain. <a href="trait.Database.html#tymethod.check_descriptor_checksum">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#823-831">source</a><a href="#method.iter_script_pubkeys" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_script_pubkeys" class="fn">iter_script_pubkeys</a>(<br> &self,<br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of script_pubkeys</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_utxos" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#833-835">source</a><a href="#method.iter_utxos" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_utxos" class="fn">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_raw_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#837-839">source</a><a href="#method.iter_raw_txs" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_raw_txs" class="fn">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of raw transactions</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#841-846">source</a><a href="#method.iter_txs" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.iter_txs" class="fn">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the list of transactions metadata</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#848-858">source</a><a href="#method.get_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_script_pubkey_from_path" class="fn">get_script_pubkey_from_path</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a script_pubkey given the child number of a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#860-868">source</a><a href="#method.get_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_path_from_script_pubkey" class="fn">get_path_from_script_pubkey</a>(<br> &self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch the keychain and child number of a given script_pubkey</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#870-872">source</a><a href="#method.get_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_utxo" class="fn">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#874-879">source</a><a href="#method.get_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_raw_tx" class="fn">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch a raw transaction given its [<code>Txid</code>]</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#881-891">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Fetch the transaction metadata and optionally also the raw transaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#893-897">source</a><a href="#method.get_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_last_index" class="fn">get_last_index</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the last derivation index for a keychain.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#899-901">source</a><a href="#method.get_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.get_sync_time" class="fn">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Return the sync time, if present</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.increment_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#903-915">source</a><a href="#method.increment_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Database.html#tymethod.increment_last_index" class="fn">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Increment the last derivation index for a keychain and return it <a href="trait.Database.html#tymethod.increment_last_index">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#77">source</a><a href="#impl-Debug-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#77">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#118">source</a><a href="#impl-From%3C%3CSqliteDatabase%20as%20BatchDatabase%3E%3A%3ABatch%3E-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<<a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>> for <a class="enum" href="any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#118">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <<a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a> as <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSqliteDatabase%3E-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#96">source</a><a href="#impl-From%3CSqliteDatabase%3E-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#96">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section><section id="impl-Send-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-Send-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section><section id="impl-Sync-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-Sync-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section><section id="impl-Unpin-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-Unpin-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section><section id="impl-UnwindSafe-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-Pointable-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SqliteDatabase" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Blockchain state at the time of syncing"><meta name="keywords" content="rust, rustlang, rust-lang, SyncTime"><title>SyncTime in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SyncTime</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.block_time">block_time</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Serialize">Serialize</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a></h2><div id="sidebar-vars" data-name="SyncTime" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="struct" href="#">SyncTime</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#53-56" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SyncTime {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Blockchain state at the time of syncing"><meta name="keywords" content="rust, rustlang, rust-lang, SyncTime"><title>SyncTime in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SyncTime</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.block_time">block_time</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SyncTime">Clone</a></li><li><a href="#impl-Debug-for-SyncTime">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-SyncTime">Deserialize<'de></a></li><li><a href="#impl-Serialize-for-SyncTime">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SyncTime">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SyncTime">Send</a></li><li><a href="#impl-Sync-for-SyncTime">Sync</a></li><li><a href="#impl-Unpin-for-SyncTime">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SyncTime">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SyncTime">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SyncTime">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SyncTime">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-SyncTime">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-SyncTime">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SyncTime">Into<U></a></li><li><a href="#impl-Pointable-for-SyncTime">Pointable</a></li><li><a href="#impl-ToOwned-for-SyncTime">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SyncTime">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SyncTime">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SyncTime">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::database</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="struct" href="#">SyncTime</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#53-56">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SyncTime {
pub block_time: <a class="struct" href="../struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Blockchain state at the time of syncing</p>
<p>Contains only the block time and height at the moment</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.block_time" class="structfield small-section-header"><a href="#structfield.block_time" class="anchor field"></a><code>block_time: <a class="struct" href="../struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></code></span><div class="docblock"><p>Block timestamp and height at the time of sync</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#52" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.block_time" class="structfield small-section-header"><a href="#structfield.block_time" class="anchor field">§</a><code>block_time: <a class="struct" href="../struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></code></span><div class="docblock"><p>Block timestamp and height at the time of sync</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#impl-Clone-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#impl-Debug-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#impl-Deserialize%3C%27de%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#impl-Serialize-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#52">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SyncTime" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section><section id="impl-Send-for-SyncTime" class="impl has-srclink"><a href="#impl-Send-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section><section id="impl-Sync-for-SyncTime" class="impl has-srclink"><a href="#impl-Sync-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section><section id="impl-Unpin-for-SyncTime" class="impl has-srclink"><a href="#impl-Unpin-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section><section id="impl-UnwindSafe-for-SyncTime" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SyncTime" class="impl has-srclink"><a href="#impl-Pointable-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SyncTime" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-SyncTime" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-SyncTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for a database that supports batch operations"><meta name="keywords" content="rust, rustlang, rust-lang, BatchDatabase"><title>BatchDatabase in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BatchDatabase</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Batch">Batch</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.begin_batch">begin_batch</a><a href="#tymethod.commit_batch">commit_batch</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-BatchDatabase-for-Tree">Tree</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a></h2><div id="sidebar-vars" data-name="BatchDatabase" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">BatchDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#166-174" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait BatchDatabase: <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for a database that supports batch operations"><meta name="keywords" content="rust, rustlang, rust-lang, BatchDatabase"><title>BatchDatabase in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BatchDatabase</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Batch">Batch</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.begin_batch">begin_batch</a></li><li><a href="#tymethod.commit_batch">commit_batch</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-BatchDatabase-for-Tree">Tree</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::database</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">BatchDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#166-174">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait BatchDatabase: <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> {
type <a href="#associatedtype.Batch" class="associatedtype">Batch</a>: <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a>;
- fn <a href="#tymethod.begin_batch" class="fnname">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>;
-<div class="item-spacer"></div> fn <a href="#tymethod.commit_batch" class="fnname">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+
+ fn <a href="#tymethod.begin_batch" class="fn">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>;
+<span class="item-spacer"></span> fn <a href="#tymethod.commit_batch" class="fn">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for a database that supports batch operations</p>
<p>This trait defines the methods to start and apply a batch of operations.</p>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Batch" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#168" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a>: <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a></h4></div></summary><div class="docblock"><p>Container for the operations</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.begin_batch" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#171" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.begin_batch" class="fnname">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></div></summary><div class="docblock"><p>Create a new batch container</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.commit_batch" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#173" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.commit_batch" class="fnname">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Consume and apply a batch of operations</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BatchDatabase-for-Tree" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#393-403" title="goto source code">source</a></div><a href="#impl-BatchDatabase-for-Tree" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for Tree</h3></div></summary><div class="impl-items"><div id="associatedtype.Batch-1" class="type trait-impl has-srclink"><a href="#associatedtype.Batch-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = Batch</h4></div><div id="method.begin_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#396-398" title="goto source code">source</a></div><a href="#method.begin_batch" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.begin_batch" class="fnname">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></div><div id="method.commit_batch" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#400-402" title="goto source code">source</a></div><a href="#method.commit_batch" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.commit_batch" class="fnname">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BatchDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#319-350" title="goto source code">source</a></div><a href="#impl-BatchDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Batch-2" class="type trait-impl has-srclink"><a href="#associatedtype.Batch-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="enum" href="any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BatchDatabase-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/memory.rs.html#454-468" title="goto source code">source</a></div><a href="#impl-BatchDatabase-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Batch-3" class="type trait-impl has-srclink"><a href="#associatedtype.Batch-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = Self</h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BatchDatabase-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#918-931" title="goto source code">source</a></div><a href="#impl-BatchDatabase-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Batch-4" class="type trait-impl has-srclink"><a href="#associatedtype.Batch-4" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h4></div></div></details></div><script type="text/javascript" src="../../implementors/bdk/database/trait.BatchDatabase.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Batch" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#168">source</a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a>: <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a></h4></section></summary><div class="docblock"><p>Container for the operations</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.begin_batch" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#171">source</a><h4 class="code-header">fn <a href="#tymethod.begin_batch" class="fn">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></section></summary><div class="docblock"><p>Create a new batch container</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.commit_batch" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#173">source</a><h4 class="code-header">fn <a href="#tymethod.commit_batch" class="fn">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Consume and apply a batch of operations</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BatchDatabase-for-Tree" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#393-403">source</a><a href="#impl-BatchDatabase-for-Tree" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for Tree</h3></section></summary><div class="impl-items"><section id="associatedtype.Batch-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = Batch</h4></section><section id="method.begin_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#396-398">source</a><a href="#method.begin_batch" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.begin_batch" class="fn">begin_batch</a>(&self) -> Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a></h4></section><section id="method.commit_batch" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#400-402">source</a><a href="#method.commit_batch" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.commit_batch" class="fn">commit_batch</a>(&mut self, batch: Self::<a class="associatedtype" href="trait.BatchDatabase.html#associatedtype.Batch" title="type bdk::database::BatchDatabase::Batch">Batch</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BatchDatabase-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#319-350">source</a><a href="#impl-BatchDatabase-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Batch-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="enum" href="any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BatchDatabase-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/memory.rs.html#454-468">source</a><a href="#impl-BatchDatabase-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Batch-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BatchDatabase-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#918-931">source</a><a href="#impl-BatchDatabase-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Batch-4" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Batch-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Batch" class="associatedtype">Batch</a> = <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h4></section></div></details></div><script src="../../implementors/bdk/database/trait.BatchDatabase.js" data-ignore-extern-crates="sled" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for operations that can be batched"><meta name="keywords" content="rust, rustlang, rust-lang, BatchOperations"><title>BatchOperations in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BatchOperations</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.del_last_index">del_last_index</a><a href="#tymethod.del_path_from_script_pubkey">del_path_from_script_pubkey</a><a href="#tymethod.del_raw_tx">del_raw_tx</a><a href="#tymethod.del_script_pubkey_from_path">del_script_pubkey_from_path</a><a href="#tymethod.del_sync_time">del_sync_time</a><a href="#tymethod.del_tx">del_tx</a><a href="#tymethod.del_utxo">del_utxo</a><a href="#tymethod.set_last_index">set_last_index</a><a href="#tymethod.set_raw_tx">set_raw_tx</a><a href="#tymethod.set_script_pubkey">set_script_pubkey</a><a href="#tymethod.set_sync_time">set_sync_time</a><a href="#tymethod.set_tx">set_tx</a><a href="#tymethod.set_utxo">set_utxo</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-BatchOperations-for-Batch">Batch</a><a href="#impl-BatchOperations-for-Tree">Tree</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a></h2><div id="sidebar-vars" data-name="BatchOperations" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">BatchOperations</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#62-109" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait BatchOperations {
-<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 13 methods</span></summary> fn <a href="#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_utxo" class="fnname">del_utxo</a>(<br> &mut self, <br> outpoint: &OutPoint<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for operations that can be batched"><meta name="keywords" content="rust, rustlang, rust-lang, BatchOperations"><title>BatchOperations in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BatchOperations</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.del_last_index">del_last_index</a></li><li><a href="#tymethod.del_path_from_script_pubkey">del_path_from_script_pubkey</a></li><li><a href="#tymethod.del_raw_tx">del_raw_tx</a></li><li><a href="#tymethod.del_script_pubkey_from_path">del_script_pubkey_from_path</a></li><li><a href="#tymethod.del_sync_time">del_sync_time</a></li><li><a href="#tymethod.del_tx">del_tx</a></li><li><a href="#tymethod.del_utxo">del_utxo</a></li><li><a href="#tymethod.set_last_index">set_last_index</a></li><li><a href="#tymethod.set_raw_tx">set_raw_tx</a></li><li><a href="#tymethod.set_script_pubkey">set_script_pubkey</a></li><li><a href="#tymethod.set_sync_time">set_sync_time</a></li><li><a href="#tymethod.set_tx">set_tx</a></li><li><a href="#tymethod.set_utxo">set_utxo</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-BatchOperations-for-Batch">Batch</a></li><li><a href="#impl-BatchOperations-for-Tree">Tree</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::database</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">BatchOperations</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#62-109">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait BatchOperations {
+<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 13 methods</span></summary> fn <a href="#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_utxo" class="fn">del_utxo</a>(<br> &mut self,<br> outpoint: &OutPoint<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for operations that can be batched</p>
<p>This trait defines the list of operations that must be implemented on the <a href="trait.Database.html" title="Database"><code>Database</code></a> type and
the <a href="trait.BatchDatabase.html#associatedtype.Batch" title="BatchDatabase::Batch"><code>BatchDatabase::Batch</code></a> type.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.set_script_pubkey" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#64-69" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Store a script_pubkey along with its keychain and child number.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.set_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#71" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Store a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.set_raw_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#73" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Store a raw transaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.set_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#75" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Store the metadata of a transaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.set_last_index" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#77" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Store the last derivation index for a given keychain.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.set_sync_time" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#79" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Store the sync time</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_script_pubkey_from_path" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#82-86" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Delete a script_pubkey given the keychain and its child number.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_path_from_script_pubkey" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#89-92" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Delete the data related to a specific script_pubkey, meaning the keychain and the child
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.set_script_pubkey" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#64-69">source</a><h4 class="code-header">fn <a href="#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Store a script_pubkey along with its keychain and child number.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.set_utxo" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#71">source</a><h4 class="code-header">fn <a href="#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Store a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.set_raw_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#73">source</a><h4 class="code-header">fn <a href="#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Store a raw transaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.set_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#75">source</a><h4 class="code-header">fn <a href="#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Store the metadata of a transaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.set_last_index" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#77">source</a><h4 class="code-header">fn <a href="#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Store the last derivation index for a given keychain.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.set_sync_time" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#79">source</a><h4 class="code-header">fn <a href="#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, sync_time: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Store the sync time</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_script_pubkey_from_path" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#82-86">source</a><h4 class="code-header">fn <a href="#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Delete a script_pubkey given the keychain and its child number.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_path_from_script_pubkey" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#89-92">source</a><h4 class="code-header">fn <a href="#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Delete the data related to a specific script_pubkey, meaning the keychain and the child
number.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#94" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Delete a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_raw_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#96" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Delete a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#98-102" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Delete the metadata of a transaction and optionally the raw transaction itself</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_last_index" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#104" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Delete the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.del_sync_time" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#108" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Reset the sync time to <code>None</code></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_utxo" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#94">source</a><h4 class="code-header">fn <a href="#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Delete a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_raw_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#96">source</a><h4 class="code-header">fn <a href="#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Delete a raw transaction given its [<code>Txid</code>]</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#98-102">source</a><h4 class="code-header">fn <a href="#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Delete the metadata of a transaction and optionally the raw transaction itself</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_last_index" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#104">source</a><h4 class="code-header">fn <a href="#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Delete the last derivation index for a keychain.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.del_sync_time" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#108">source</a><h4 class="code-header">fn <a href="#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Reset the sync time to <code>None</code></p>
<p>Returns the removed value</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BatchOperations-for-Tree" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#189-191" title="goto source code">source</a></div><a href="#impl-BatchOperations-for-Tree" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for Tree</h3></div></summary><div class="impl-items"><div id="method.set_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.set_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.set_utxo" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.set_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.set_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.set_last_index" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.set_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, data: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_utxo" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_last_index" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#190" title="goto source code">source</a></div><a href="#method.del_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BatchOperations-for-Batch" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#199-201" title="goto source code">source</a></div><a href="#impl-BatchOperations-for-Batch" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for Batch</h3></div></summary><div class="impl-items"><div id="method.set_script_pubkey-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.set_script_pubkey-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_script_pubkey" class="fnname">set_script_pubkey</a>(<br> &mut self, <br> script: &Script, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_utxo-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.set_utxo-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_utxo" class="fnname">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_raw_tx-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.set_raw_tx-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_raw_tx" class="fnname">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_tx-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.set_tx-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_tx" class="fnname">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_last_index-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.set_last_index-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_last_index" class="fnname">set_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.set_sync_time-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.set_sync_time-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.set_sync_time" class="fnname">set_sync_time</a>(&mut self, data: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_script_pubkey_from_path-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_script_pubkey_from_path-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_script_pubkey_from_path" class="fnname">del_script_pubkey_from_path</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_path_from_script_pubkey-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_path_from_script_pubkey-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_path_from_script_pubkey" class="fnname">del_path_from_script_pubkey</a>(<br> &mut self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_utxo-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_utxo-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_utxo" class="fnname">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_raw_tx-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_raw_tx-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_raw_tx" class="fnname">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_tx-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_tx-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_tx" class="fnname">del_tx</a>(<br> &mut self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_last_index-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_last_index-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_last_index" class="fnname">del_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.del_sync_time-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#200" title="goto source code">source</a></div><a href="#method.del_sync_time-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.del_sync_time" class="fnname">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-BatchOperations" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#260-317" title="goto source code">source</a></div><a href="#impl-BatchOperations" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></div><div id="impl-BatchOperations-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#120-190" title="goto source code">source</a></div><a href="#impl-BatchOperations-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div><div id="impl-BatchOperations-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/memory.rs.html#131-292" title="goto source code">source</a></div><a href="#impl-BatchOperations-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div><div id="impl-BatchOperations-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#644-798" title="goto source code">source</a></div><a href="#impl-BatchOperations-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></div><script type="text/javascript" src="../../implementors/bdk/database/trait.BatchOperations.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BatchOperations-for-Tree" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#189-191">source</a><a href="#impl-BatchOperations-for-Tree" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for Tree</h3></section></summary><div class="impl-items"><section id="method.set_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.set_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.set_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.set_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.set_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.set_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.set_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, data: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#190">source</a><a href="#method.del_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BatchOperations-for-Batch" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#199-201">source</a><a href="#impl-BatchOperations-for-Batch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for Batch</h3></section></summary><div class="impl-items"><section id="method.set_script_pubkey-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.set_script_pubkey-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_script_pubkey" class="fn">set_script_pubkey</a>(<br> &mut self,<br> script: &Script,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_utxo-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.set_utxo-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_utxo" class="fn">set_utxo</a>(&mut self, utxo: &<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_raw_tx-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.set_raw_tx-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_raw_tx" class="fn">set_raw_tx</a>(&mut self, transaction: &Transaction) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_tx-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.set_tx-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_tx" class="fn">set_tx</a>(&mut self, transaction: &<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_last_index-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.set_last_index-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_last_index" class="fn">set_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.set_sync_time-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.set_sync_time-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_sync_time" class="fn">set_sync_time</a>(&mut self, data: <a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_script_pubkey_from_path-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_script_pubkey_from_path-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_script_pubkey_from_path" class="fn">del_script_pubkey_from_path</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_path_from_script_pubkey-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_path_from_script_pubkey-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_path_from_script_pubkey" class="fn">del_path_from_script_pubkey</a>(<br> &mut self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_utxo-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_utxo-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_utxo" class="fn">del_utxo</a>(&mut self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_raw_tx-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_raw_tx-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_raw_tx" class="fn">del_raw_tx</a>(&mut self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_tx-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_tx-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_tx" class="fn">del_tx</a>(<br> &mut self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_last_index-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_last_index-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_last_index" class="fn">del_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.del_sync_time-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#200">source</a><a href="#method.del_sync_time-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.del_sync_time" class="fn">del_sync_time</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-BatchOperations-for-AnyBatch" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#260-317">source</a><a href="#impl-BatchOperations-for-AnyBatch" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="any/enum.AnyBatch.html" title="enum bdk::database::any::AnyBatch">AnyBatch</a></h3></section><section id="impl-BatchOperations-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#120-190">source</a><a href="#impl-BatchOperations-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section><section id="impl-BatchOperations-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/memory.rs.html#131-292">source</a><a href="#impl-BatchOperations-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section><section id="impl-BatchOperations-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#644-798">source</a><a href="#impl-BatchOperations-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></div><script src="../../implementors/bdk/database/trait.BatchOperations.js" data-ignore-extern-crates="sled" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for [`Database`] types that can be created given a configuration"><meta name="keywords" content="rust, rustlang, rust-lang, ConfigurableDatabase"><title>ConfigurableDatabase in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ConfigurableDatabase</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Config">Config</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.from_config">from_config</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-ConfigurableDatabase-for-Tree">Tree</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a></h2><div id="sidebar-vars" data-name="ConfigurableDatabase" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">ConfigurableDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#177-183" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait ConfigurableDatabase: <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for [`Database`] types that can be created given a configuration"><meta name="keywords" content="rust, rustlang, rust-lang, ConfigurableDatabase"><title>ConfigurableDatabase in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ConfigurableDatabase</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Config">Config</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.from_config">from_config</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-ConfigurableDatabase-for-Tree">Tree</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::database</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">ConfigurableDatabase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#177-183">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait ConfigurableDatabase: <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
type <a href="#associatedtype.Config" class="associatedtype">Config</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
- fn <a href="#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+
+ fn <a href="#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for <a href="trait.Database.html" title="Database"><code>Database</code></a> types that can be created given a configuration</p>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Config" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#179" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></div></summary><div class="docblock"><p>Type that contains the configuration</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.from_config" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#182" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Create a new instance given a configuration</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableDatabase-for-Tree" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#363-369" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase-for-Tree" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for Tree</h3></div></summary><div class="impl-items"><div id="associatedtype.Config-1" class="type trait-impl has-srclink"><a href="#associatedtype.Config-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="any/struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h4></div><div id="method.from_config" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#366-368" title="goto source code">source</a></div><a href="#method.from_config" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.from_config" class="fnname">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableDatabase" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#407-423" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Config-2" class="type trait-impl has-srclink"><a href="#associatedtype.Config-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="any/enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableDatabase-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/memory.rs.html#470-476" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Config-3" class="type trait-impl has-srclink"><a href="#associatedtype.Config-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ConfigurableDatabase-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#380-386" title="goto source code">source</a></div><a href="#impl-ConfigurableDatabase-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Config-4" class="type trait-impl has-srclink"><a href="#associatedtype.Config-4" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="any/struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h4></div></div></details></div><script type="text/javascript" src="../../implementors/bdk/database/trait.ConfigurableDatabase.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Config" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#179">source</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Type that contains the configuration</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.from_config" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#182">source</a><h4 class="code-header">fn <a href="#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Create a new instance given a configuration</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableDatabase-for-Tree" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#363-369">source</a><a href="#impl-ConfigurableDatabase-for-Tree" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for Tree</h3></section></summary><div class="impl-items"><section id="associatedtype.Config-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="any/struct.SledDbConfiguration.html" title="struct bdk::database::any::SledDbConfiguration">SledDbConfiguration</a></h4></section><section id="method.from_config" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#366-368">source</a><a href="#method.from_config" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.from_config" class="fn">from_config</a>(config: &Self::<a class="associatedtype" href="trait.ConfigurableDatabase.html#associatedtype.Config" title="type bdk::database::ConfigurableDatabase::Config">Config</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableDatabase-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#407-423">source</a><a href="#impl-ConfigurableDatabase-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Config-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="enum" href="any/enum.AnyDatabaseConfig.html" title="enum bdk::database::any::AnyDatabaseConfig">AnyDatabaseConfig</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableDatabase-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/memory.rs.html#470-476">source</a><a href="#impl-ConfigurableDatabase-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Config-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ConfigurableDatabase-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#380-386">source</a><a href="#impl-ConfigurableDatabase-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConfigurableDatabase.html" title="trait bdk::database::ConfigurableDatabase">ConfigurableDatabase</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Config-4" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Config-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="any/struct.SqliteDbConfiguration.html" title="struct bdk::database::any::SqliteDbConfiguration">SqliteDbConfiguration</a></h4></section></div></details></div><script src="../../implementors/bdk/database/trait.ConfigurableDatabase.js" data-ignore-extern-crates="sled" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for reading data from a database"><meta name="keywords" content="rust, rustlang, rust-lang, Database"><title>Database in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Database</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.check_descriptor_checksum">check_descriptor_checksum</a><a href="#tymethod.get_last_index">get_last_index</a><a href="#tymethod.get_path_from_script_pubkey">get_path_from_script_pubkey</a><a href="#tymethod.get_raw_tx">get_raw_tx</a><a href="#tymethod.get_script_pubkey_from_path">get_script_pubkey_from_path</a><a href="#tymethod.get_sync_time">get_sync_time</a><a href="#tymethod.get_tx">get_tx</a><a href="#tymethod.get_utxo">get_utxo</a><a href="#tymethod.increment_last_index">increment_last_index</a><a href="#tymethod.iter_raw_txs">iter_raw_txs</a><a href="#tymethod.iter_script_pubkeys">iter_script_pubkeys</a><a href="#tymethod.iter_txs">iter_txs</a><a href="#tymethod.iter_utxos">iter_utxos</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-Database-for-Tree">Tree</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a></h2><div id="sidebar-vars" data-name="Database" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">Database</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#114-161" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Database: <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> {
-<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 13 methods</span></summary> fn <a href="#tymethod.check_descriptor_checksum" class="fnname">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> bytes: B<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.iter_script_pubkeys" class="fnname">iter_script_pubkeys</a>(<br> &self, <br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.iter_utxos" class="fnname">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.iter_raw_txs" class="fnname">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.iter_txs" class="fnname">iter_txs</a>(<br> &self, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_script_pubkey_from_path" class="fnname">get_script_pubkey_from_path</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_path_from_script_pubkey" class="fnname">get_path_from_script_pubkey</a>(<br> &self, <br> script: &Script<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_raw_tx" class="fnname">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_last_index" class="fnname">get_last_index</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.get_sync_time" class="fnname">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.increment_last_index" class="fnname">increment_last_index</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for reading data from a database"><meta name="keywords" content="rust, rustlang, rust-lang, Database"><title>Database in bdk::database - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Database</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.check_descriptor_checksum">check_descriptor_checksum</a></li><li><a href="#tymethod.get_last_index">get_last_index</a></li><li><a href="#tymethod.get_path_from_script_pubkey">get_path_from_script_pubkey</a></li><li><a href="#tymethod.get_raw_tx">get_raw_tx</a></li><li><a href="#tymethod.get_script_pubkey_from_path">get_script_pubkey_from_path</a></li><li><a href="#tymethod.get_sync_time">get_sync_time</a></li><li><a href="#tymethod.get_tx">get_tx</a></li><li><a href="#tymethod.get_utxo">get_utxo</a></li><li><a href="#tymethod.increment_last_index">increment_last_index</a></li><li><a href="#tymethod.iter_raw_txs">iter_raw_txs</a></li><li><a href="#tymethod.iter_script_pubkeys">iter_script_pubkeys</a></li><li><a href="#tymethod.iter_txs">iter_txs</a></li><li><a href="#tymethod.iter_utxos">iter_utxos</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Database-for-Tree">Tree</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::database</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">database</a>::<wbr><a class="trait" href="#">Database</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/database/mod.rs.html#114-161">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait Database: <a class="trait" href="trait.BatchOperations.html" title="trait bdk::database::BatchOperations">BatchOperations</a> {
+<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 13 methods</span></summary> fn <a href="#tymethod.check_descriptor_checksum" class="fn">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> bytes: B<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.iter_script_pubkeys" class="fn">iter_script_pubkeys</a>(<br> &self,<br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.iter_utxos" class="fn">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.iter_raw_txs" class="fn">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.iter_txs" class="fn">iter_txs</a>(<br> &self,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_script_pubkey_from_path" class="fn">get_script_pubkey_from_path</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_path_from_script_pubkey" class="fn">get_path_from_script_pubkey</a>(<br> &self,<br> script: &Script<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_utxo" class="fn">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_raw_tx" class="fn">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_last_index" class="fn">get_last_index</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.get_sync_time" class="fn">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.increment_last_index" class="fn">increment_last_index</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>>;
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for reading data from a database</p>
<p>This traits defines the operations that can be used to read data out of a database</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.check_descriptor_checksum" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#120-124" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.check_descriptor_checksum" class="fnname">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Read and checks the descriptor checksum for a given keychain.</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.check_descriptor_checksum" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#120-124">source</a><h4 class="code-header">fn <a href="#tymethod.check_descriptor_checksum" class="fn">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Read and checks the descriptor checksum for a given keychain.</p>
<p>Should return <a href="../enum.Error.html#variant.ChecksumMismatch"><code>Error::ChecksumMismatch</code></a> if the
checksum doesn’t match. If there’s no checksum in the database, simply store it for the
next time.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.iter_script_pubkeys" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#127" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.iter_script_pubkeys" class="fnname">iter_script_pubkeys</a>(<br> &self, <br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the list of script_pubkeys</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.iter_utxos" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#129" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.iter_utxos" class="fnname">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the list of <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.iter_raw_txs" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#131" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.iter_raw_txs" class="fnname">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the list of raw transactions</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.iter_txs" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#133" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.iter_txs" class="fnname">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the list of transactions metadata</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_script_pubkey_from_path" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#136-140" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_script_pubkey_from_path" class="fnname">get_script_pubkey_from_path</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Fetch a script_pubkey given the child number of a keychain.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_path_from_script_pubkey" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#142-145" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_path_from_script_pubkey" class="fnname">get_path_from_script_pubkey</a>(<br> &self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Fetch the keychain and child number of a given script_pubkey</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#147" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Fetch a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_raw_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#149" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_raw_tx" class="fnname">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Fetch a raw transaction given its [<code>Txid</code>]</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#151" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Fetch the transaction metadata and optionally also the raw transaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_last_index" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#153" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_last_index" class="fnname">get_last_index</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the last derivation index for a keychain.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_sync_time" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#155" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_sync_time" class="fnname">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the sync time, if present</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.increment_last_index" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/mod.rs.html#160" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.increment_last_index" class="fnname">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Increment the last derivation index for a keychain and return it</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.iter_script_pubkeys" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#127">source</a><h4 class="code-header">fn <a href="#tymethod.iter_script_pubkeys" class="fn">iter_script_pubkeys</a>(<br> &self,<br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the list of script_pubkeys</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.iter_utxos" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#129">source</a><h4 class="code-header">fn <a href="#tymethod.iter_utxos" class="fn">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the list of <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a>s</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.iter_raw_txs" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#131">source</a><h4 class="code-header">fn <a href="#tymethod.iter_raw_txs" class="fn">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the list of raw transactions</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.iter_txs" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#133">source</a><h4 class="code-header">fn <a href="#tymethod.iter_txs" class="fn">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the list of transactions metadata</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_script_pubkey_from_path" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#136-140">source</a><h4 class="code-header">fn <a href="#tymethod.get_script_pubkey_from_path" class="fn">get_script_pubkey_from_path</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> child: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Fetch a script_pubkey given the child number of a keychain.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_path_from_script_pubkey" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#142-145">source</a><h4 class="code-header">fn <a href="#tymethod.get_path_from_script_pubkey" class="fn">get_path_from_script_pubkey</a>(<br> &self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Fetch the keychain and child number of a given script_pubkey</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_utxo" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#147">source</a><h4 class="code-header">fn <a href="#tymethod.get_utxo" class="fn">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Fetch a <a href="../struct.LocalUtxo.html" title="LocalUtxo"><code>LocalUtxo</code></a> given its [<code>OutPoint</code>]</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_raw_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#149">source</a><h4 class="code-header">fn <a href="#tymethod.get_raw_tx" class="fn">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Fetch a raw transaction given its [<code>Txid</code>]</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#151">source</a><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Fetch the transaction metadata and optionally also the raw transaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_last_index" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#153">source</a><h4 class="code-header">fn <a href="#tymethod.get_last_index" class="fn">get_last_index</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the last derivation index for a keychain.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_sync_time" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#155">source</a><h4 class="code-header">fn <a href="#tymethod.get_sync_time" class="fn">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the sync time, if present</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.increment_last_index" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/database/mod.rs.html#160">source</a><h4 class="code-header">fn <a href="#tymethod.increment_last_index" class="fn">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Increment the last derivation index for a keychain and return it</p>
<p>It should insert and return <code>0</code> if not present in the database</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Database-for-Tree" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#203-382" title="goto source code">source</a></div><a href="#impl-Database-for-Tree" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for Tree</h3></div></summary><div class="impl-items"><div id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#204-222" title="goto source code">source</a></div><a href="#method.check_descriptor_checksum" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.check_descriptor_checksum" class="fnname">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#224-232" title="goto source code">source</a></div><a href="#method.iter_script_pubkeys" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.iter_script_pubkeys" class="fnname">iter_script_pubkeys</a>(<br> &self, <br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.iter_utxos" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#234-257" title="goto source code">source</a></div><a href="#method.iter_utxos" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.iter_utxos" class="fnname">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.iter_raw_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#259-267" title="goto source code">source</a></div><a href="#method.iter_raw_txs" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.iter_raw_txs" class="fnname">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.iter_txs" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#269-283" title="goto source code">source</a></div><a href="#method.iter_txs" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.iter_txs" class="fnname">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#285-292" title="goto source code">source</a></div><a href="#method.get_script_pubkey_from_path" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_script_pubkey_from_path" class="fnname">get_script_pubkey_from_path</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#294-308" title="goto source code">source</a></div><a href="#method.get_path_from_script_pubkey" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_path_from_script_pubkey" class="fnname">get_path_from_script_pubkey</a>(<br> &self, <br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_utxo" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#310-330" title="goto source code">source</a></div><a href="#method.get_utxo" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_raw_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#332-335" title="goto source code">source</a></div><a href="#method.get_raw_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_raw_tx" class="fnname">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_tx" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#337-349" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#351-354" title="goto source code">source</a></div><a href="#method.get_last_index" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_last_index" class="fnname">get_last_index</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.get_sync_time" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#356-362" title="goto source code">source</a></div><a href="#method.get_sync_time" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_sync_time" class="fnname">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div id="method.increment_last_index" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/keyvalue.rs.html#365-381" title="goto source code">source</a></div><a href="#method.increment_last_index" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.increment_last_index" class="fnname">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-Database" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/any.rs.html#192-258" title="goto source code">source</a></div><a href="#impl-Database" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></div><div id="impl-Database-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/memory.rs.html#294-452" title="goto source code">source</a></div><a href="#impl-Database-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></div><div id="impl-Database-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/database/sqlite.rs.html#800-916" title="goto source code">source</a></div><a href="#impl-Database-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></div></div><script type="text/javascript" src="../../implementors/bdk/database/trait.Database.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Database-for-Tree" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#203-382">source</a><a href="#impl-Database-for-Tree" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for Tree</h3></section></summary><div class="impl-items"><section id="method.check_descriptor_checksum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#204-222">source</a><a href="#method.check_descriptor_checksum" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.check_descriptor_checksum" class="fn">check_descriptor_checksum</a><B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> bytes: B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.iter_script_pubkeys" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#224-232">source</a><a href="#method.iter_script_pubkeys" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.iter_script_pubkeys" class="fn">iter_script_pubkeys</a>(<br> &self,<br> keychain: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.iter_utxos" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#234-257">source</a><a href="#method.iter_utxos" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.iter_utxos" class="fn">iter_utxos</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.iter_raw_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#259-267">source</a><a href="#method.iter_raw_txs" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.iter_raw_txs" class="fn">iter_raw_txs</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.iter_txs" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#269-283">source</a><a href="#method.iter_txs" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.iter_txs" class="fn">iter_txs</a>(&self, include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_script_pubkey_from_path" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#285-292">source</a><a href="#method.get_script_pubkey_from_path" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_script_pubkey_from_path" class="fn">get_script_pubkey_from_path</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> path: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Script>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_path_from_script_pubkey" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#294-308">source</a><a href="#method.get_path_from_script_pubkey" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_path_from_script_pubkey" class="fn">get_path_from_script_pubkey</a>(<br> &self,<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_utxo" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#310-330">source</a><a href="#method.get_utxo" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_utxo" class="fn">get_utxo</a>(&self, outpoint: &OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_raw_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#332-335">source</a><a href="#method.get_raw_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_raw_tx" class="fn">get_raw_tx</a>(&self, txid: &Txid) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_tx" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#337-349">source</a><a href="#method.get_tx" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#351-354">source</a><a href="#method.get_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_last_index" class="fn">get_last_index</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.get_sync_time" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#356-362">source</a><a href="#method.get_sync_time" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_sync_time" class="fn">get_sync_time</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.SyncTime.html" title="struct bdk::database::SyncTime">SyncTime</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><section id="method.increment_last_index" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/keyvalue.rs.html#365-381">source</a><a href="#method.increment_last_index" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.increment_last_index" class="fn">increment_last_index</a>(&mut self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Database-for-AnyDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/any.rs.html#192-258">source</a><a href="#impl-Database-for-AnyDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="enum" href="any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a></h3></section><section id="impl-Database-for-MemoryDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/memory.rs.html#294-452">source</a><a href="#impl-Database-for-MemoryDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="memory/struct.MemoryDatabase.html" title="struct bdk::database::memory::MemoryDatabase">MemoryDatabase</a></h3></section><section id="impl-Database-for-SqliteDatabase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/database/sqlite.rs.html#800-916">source</a><a href="#impl-Database-for-SqliteDatabase" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Database.html" title="trait bdk::database::Database">Database</a> for <a class="struct" href="struct.SqliteDatabase.html" title="struct bdk::database::SqliteDatabase">SqliteDatabase</a></h3></section></div><script src="../../implementors/bdk/database/trait.Database.js" data-ignore-extern-crates="sled" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation"><meta name="keywords" content="rust, rustlang, rust-lang, calc_checksum"><title>calc_checksum in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a></h2><div id="sidebar-vars" data-name="calc_checksum" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">calc_checksum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#103-107" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn calc_checksum(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation"><meta name="keywords" content="rust, rustlang, rust-lang, calc_checksum"><title>calc_checksum in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor::checksum</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">calc_checksum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#103-107">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn calc_checksum(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation"><meta name="keywords" content="rust, rustlang, rust-lang, calc_checksum_bytes"><title>calc_checksum_bytes in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a></h2><div id="sidebar-vars" data-name="calc_checksum_bytes" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">calc_checksum_bytes</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#98-100" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn calc_checksum_bytes(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 8]</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation"><meta name="keywords" content="rust, rustlang, rust-lang, calc_checksum_bytes"><title>calc_checksum_bytes in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor::checksum</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">calc_checksum_bytes</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#98-100">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn calc_checksum_bytes(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">8</a>], <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum of a descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, get_checksum"><title>get_checksum in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a></h2><div id="sidebar-vars" data-name="get_checksum" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">get_checksum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#126-130" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn get_checksum(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.24.0: <p>Use new <code>calc_checksum</code> function which excludes any existing checksum in the descriptor string before calculating the checksum hash. See https://github.com/bitcoindevkit/bdk/pull/765.</p>
-</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum of a descriptor</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum of a descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, get_checksum"><title>get_checksum in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor::checksum</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">get_checksum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#126-130">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn get_checksum(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.24.0: Use new <code>calc_checksum</code> function which excludes any existing checksum in the descriptor string before calculating the checksum hash. See https://github.com/bitcoindevkit/bdk/pull/765.</span></div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum of a descriptor</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum bytes of a descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, get_checksum_bytes"><title>get_checksum_bytes in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a></h2><div id="sidebar-vars" data-name="get_checksum_bytes" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">get_checksum_bytes</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#117-119" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn get_checksum_bytes(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 8]</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.24.0: <p>Use new <code>calc_checksum_bytes</code> function which excludes any existing checksum in the descriptor string before calculating the checksum hash bytes. See https://github.com/bitcoindevkit/bdk/pull/765.</p>
-</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum bytes of a descriptor</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the checksum bytes of a descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, get_checksum_bytes"><title>get_checksum_bytes in bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor::checksum</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">checksum</a>::<wbr><a class="fn" href="#">get_checksum_bytes</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#117-119">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn get_checksum_bytes(desc: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">8</a>], <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></code></pre></div><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.24.0: Use new <code>calc_checksum_bytes</code> function which excludes any existing checksum in the descriptor string before calculating the checksum hash bytes. See https://github.com/bitcoindevkit/bdk/pull/765.</span></div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the checksum bytes of a descriptor</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor checksum"><meta name="keywords" content="rust, rustlang, rust-lang, checksum"><title>bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module checksum</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#functions">Functions</a></li></ul></div><div id="sidebar-vars" data-name="checksum" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">checksum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#12-180" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor checksum</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor checksum"><meta name="keywords" content="rust, rustlang, rust-lang, checksum"><title>bdk::descriptor::checksum - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module checksum</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">checksum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/checksum.rs.html#12-180">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor checksum</p>
<p>This module contains a re-implementation of the function used by Bitcoin Core to calculate the
checksum of a descriptor</p>
-</div></details><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.calc_checksum.html" title="bdk::descriptor::checksum::calc_checksum fn">calc_checksum</a></div><div class="item-right docblock-short"><p>Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.calc_checksum_bytes.html" title="bdk::descriptor::checksum::calc_checksum_bytes fn">calc_checksum_bytes</a></div><div class="item-right docblock-short"><p>Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_checksum.html" title="bdk::descriptor::checksum::get_checksum fn">get_checksum</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short"><p>Compute the checksum of a descriptor</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_checksum_bytes.html" title="bdk::descriptor::checksum::get_checksum_bytes fn">get_checksum_bytes</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short"><p>Compute the checksum bytes of a descriptor</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.calc_checksum.html" title="bdk::descriptor::checksum::calc_checksum fn">calc_checksum</a></div><div class="item-right docblock-short">Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.calc_checksum_bytes.html" title="bdk::descriptor::checksum::calc_checksum_bytes fn">calc_checksum_bytes</a></div><div class="item-right docblock-short">Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_checksum.html" title="bdk::descriptor::checksum::get_checksum fn">get_checksum</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short">Compute the checksum of a descriptor</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_checksum_bytes.html" title="bdk::descriptor::checksum::get_checksum_bytes fn">get_checksum_bytes</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short">Compute the checksum bytes of a descriptor</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"fn":[["calc_checksum","Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation"],["calc_checksum_bytes","Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation"],["get_checksum","Compute the checksum of a descriptor"],["get_checksum_bytes","Compute the checksum bytes of a descriptor"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"fn":[["calc_checksum","Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation"],["calc_checksum_bytes","Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation"],["get_checksum","Compute the checksum of a descriptor"],["get_checksum_bytes","Compute the checksum bytes of a descriptor"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Script descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, Descriptor"><title>Descriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Descriptor</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Bare">Bare</a><a href="#variant.Pkh">Pkh</a><a href="#variant.Sh">Sh</a><a href="#variant.Tr">Tr</a><a href="#variant.Wpkh">Wpkh</a><a href="#variant.Wsh">Wsh</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.address">address</a><a href="#method.at_derivation_index">at_derivation_index</a><a href="#method.derive">derive</a><a href="#method.derived_descriptor">derived_descriptor</a><a href="#method.derived_descriptor-1">derived_descriptor</a><a href="#method.desc_type">desc_type</a><a href="#method.explicit_script">explicit_script</a><a href="#method.find_derivation_index_for_spk">find_derivation_index_for_spk</a><a href="#method.get_satisfaction">get_satisfaction</a><a href="#method.get_satisfaction_mall">get_satisfaction_mall</a><a href="#method.has_wildcard">has_wildcard</a><a href="#method.is_deriveable">is_deriveable</a><a href="#method.max_satisfaction_weight">max_satisfaction_weight</a><a href="#method.new_bare">new_bare</a><a href="#method.new_pk">new_pk</a><a href="#method.new_pkh">new_pkh</a><a href="#method.new_sh">new_sh</a><a href="#method.new_sh_sortedmulti">new_sh_sortedmulti</a><a href="#method.new_sh_with_wpkh">new_sh_with_wpkh</a><a href="#method.new_sh_with_wsh">new_sh_with_wsh</a><a href="#method.new_sh_wpkh">new_sh_wpkh</a><a href="#method.new_sh_wsh">new_sh_wsh</a><a href="#method.new_sh_wsh_sortedmulti">new_sh_wsh_sortedmulti</a><a href="#method.new_tr">new_tr</a><a href="#method.new_wpkh">new_wpkh</a><a href="#method.new_wsh">new_wsh</a><a href="#method.new_wsh_sortedmulti">new_wsh_sortedmulti</a><a href="#method.parse_descriptor">parse_descriptor</a><a href="#method.sanity_check">sanity_check</a><a href="#method.satisfy">satisfy</a><a href="#method.script_code">script_code</a><a href="#method.script_pubkey">script_pubkey</a><a href="#method.to_string_with_secret">to_string_with_secret</a><a href="#method.unsigned_script_sig">unsigned_script_sig</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-ExtractPolicy">ExtractPolicy</a><a href="#impl-ForEachKey%3CPk%3E">ForEachKey<Pk></a><a href="#impl-From%3CBare%3CPk%3E%3E">From<Bare<Pk>></a><a href="#impl-From%3CPkh%3CPk%3E%3E">From<Pkh<Pk>></a><a href="#impl-From%3CSh%3CPk%3E%3E">From<Sh<Pk>></a><a href="#impl-From%3CTr%3CPk%3E%3E">From<Tr<Pk>></a><a href="#impl-From%3CWpkh%3CPk%3E%3E">From<Wpkh<Pk>></a><a href="#impl-From%3CWsh%3CPk%3E%3E">From<Wsh<Pk>></a><a href="#impl-FromStr">FromStr</a><a href="#impl-FromTree">FromTree</a><a href="#impl-Hash">Hash</a><a href="#impl-Liftable%3CPk%3E">Liftable<Pk></a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CDescriptor%3CPk%3E%3E">PartialEq<Descriptor<Pk>></a><a href="#impl-PartialOrd%3CDescriptor%3CPk%3E%3E">PartialOrd<Descriptor<Pk>></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a><a href="#impl-TranslatePk%3CP%2C%20Q%3E">TranslatePk<P, Q></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="Descriptor" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Descriptor<Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Script descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, Descriptor"><title>Descriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Descriptor</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Bare">Bare</a></li><li><a href="#variant.Pkh">Pkh</a></li><li><a href="#variant.Sh">Sh</a></li><li><a href="#variant.Tr">Tr</a></li><li><a href="#variant.Wpkh">Wpkh</a></li><li><a href="#variant.Wsh">Wsh</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.address">address</a></li><li><a href="#method.at_derivation_index">at_derivation_index</a></li><li><a href="#method.derive">derive</a></li><li><a href="#method.derived_descriptor">derived_descriptor</a></li><li><a href="#method.derived_descriptor-1">derived_descriptor</a></li><li><a href="#method.desc_type">desc_type</a></li><li><a href="#method.explicit_script">explicit_script</a></li><li><a href="#method.find_derivation_index_for_spk">find_derivation_index_for_spk</a></li><li><a href="#method.get_satisfaction">get_satisfaction</a></li><li><a href="#method.get_satisfaction_mall">get_satisfaction_mall</a></li><li><a href="#method.has_wildcard">has_wildcard</a></li><li><a href="#method.is_deriveable">is_deriveable</a></li><li><a href="#method.max_satisfaction_weight">max_satisfaction_weight</a></li><li><a href="#method.new_bare">new_bare</a></li><li><a href="#method.new_pk">new_pk</a></li><li><a href="#method.new_pkh">new_pkh</a></li><li><a href="#method.new_sh">new_sh</a></li><li><a href="#method.new_sh_sortedmulti">new_sh_sortedmulti</a></li><li><a href="#method.new_sh_with_wpkh">new_sh_with_wpkh</a></li><li><a href="#method.new_sh_with_wsh">new_sh_with_wsh</a></li><li><a href="#method.new_sh_wpkh">new_sh_wpkh</a></li><li><a href="#method.new_sh_wsh">new_sh_wsh</a></li><li><a href="#method.new_sh_wsh_sortedmulti">new_sh_wsh_sortedmulti</a></li><li><a href="#method.new_tr">new_tr</a></li><li><a href="#method.new_wpkh">new_wpkh</a></li><li><a href="#method.new_wsh">new_wsh</a></li><li><a href="#method.new_wsh_sortedmulti">new_wsh_sortedmulti</a></li><li><a href="#method.parse_descriptor">parse_descriptor</a></li><li><a href="#method.sanity_check">sanity_check</a></li><li><a href="#method.satisfy">satisfy</a></li><li><a href="#method.script_code">script_code</a></li><li><a href="#method.script_pubkey">script_pubkey</a></li><li><a href="#method.to_string_with_secret">to_string_with_secret</a></li><li><a href="#method.unsigned_script_sig">unsigned_script_sig</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Descriptor%3CPk%3E">Clone</a></li><li><a href="#impl-Debug-for-Descriptor%3CPk%3E">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-Descriptor%3CPk%3E">Deserialize<'de></a></li><li><a href="#impl-Display-for-Descriptor%3CPk%3E">Display</a></li><li><a href="#impl-Eq-for-Descriptor%3CPk%3E">Eq</a></li><li><a href="#impl-ExtractPolicy-for-Descriptor%3CDescriptorPublicKey%3E">ExtractPolicy</a></li><li><a href="#impl-ForEachKey%3CPk%3E-for-Descriptor%3CPk%3E">ForEachKey<Pk></a></li><li><a href="#impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E">From<Bare<Pk>></a></li><li><a href="#impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E">From<Pkh<Pk>></a></li><li><a href="#impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E">From<Sh<Pk>></a></li><li><a href="#impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E">From<Tr<Pk>></a></li><li><a href="#impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E">From<Wpkh<Pk>></a></li><li><a href="#impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E">From<Wsh<Pk>></a></li><li><a href="#impl-FromStr-for-Descriptor%3CPk%3E">FromStr</a></li><li><a href="#impl-FromTree-for-Descriptor%3CPk%3E">FromTree</a></li><li><a href="#impl-Hash-for-Descriptor%3CPk%3E">Hash</a></li><li><a href="#impl-Liftable%3CPk%3E-for-Descriptor%3CPk%3E">Liftable<Pk></a></li><li><a href="#impl-Ord-for-Descriptor%3CPk%3E">Ord</a></li><li><a href="#impl-PartialEq%3CDescriptor%3CPk%3E%3E-for-Descriptor%3CPk%3E">PartialEq<Descriptor<Pk>></a></li><li><a href="#impl-PartialOrd%3CDescriptor%3CPk%3E%3E-for-Descriptor%3CPk%3E">PartialOrd<Descriptor<Pk>></a></li><li><a href="#impl-Serialize-for-Descriptor%3CPk%3E">Serialize</a></li><li><a href="#impl-StructuralEq-for-Descriptor%3CPk%3E">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Descriptor%3CPk%3E">StructuralPartialEq</a></li><li><a href="#impl-TranslatePk%3CP%2C%20Q%3E-for-Descriptor%3CP%3E">TranslatePk<P, Q></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Descriptor%3CPk%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Descriptor%3CPk%3E">Send</a></li><li><a href="#impl-Sync-for-Descriptor%3CPk%3E">Sync</a></li><li><a href="#impl-Unpin-for-Descriptor%3CPk%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Descriptor%3CPk%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Descriptor%3CPk%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Descriptor%3CPk%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Descriptor%3CPk%3E">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Descriptor%3CPk%3E">CallHasher</a></li><li><a href="#impl-DeserializeOwned-for-Descriptor%3CPk%3E">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-Descriptor%3CPk%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Descriptor%3CPk%3E">Into<U></a></li><li><a href="#impl-Pointable-for-Descriptor%3CPk%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-Descriptor%3CPk%3E">ToOwned</a></li><li><a href="#impl-ToString-for-Descriptor%3CPk%3E">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Descriptor%3CPk%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Descriptor%3CPk%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Descriptor%3CPk%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Descriptor<Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span>{
Bare(Bare<Pk>),
Pkh(Pkh<Pk>),
Wpkh(Wpkh<Pk>),
Wsh(Wsh<Pk>),
Tr(Tr<Pk>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Script descriptor</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Bare" class="variant small-section-header"><a href="#variant.Bare" class="anchor field"></a><code>Bare(Bare<Pk>)</code></h3><div class="docblock"><p>A raw scriptpubkey (including pay-to-pubkey) under Legacy context</p>
-</div><h3 id="variant.Pkh" class="variant small-section-header"><a href="#variant.Pkh" class="anchor field"></a><code>Pkh(Pkh<Pk>)</code></h3><div class="docblock"><p>Pay-to-PubKey-Hash</p>
-</div><h3 id="variant.Wpkh" class="variant small-section-header"><a href="#variant.Wpkh" class="anchor field"></a><code>Wpkh(Wpkh<Pk>)</code></h3><div class="docblock"><p>Pay-to-Witness-PubKey-Hash</p>
-</div><h3 id="variant.Sh" class="variant small-section-header"><a href="#variant.Sh" class="anchor field"></a><code>Sh(Sh<Pk>)</code></h3><div class="docblock"><p>Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)</p>
-</div><h3 id="variant.Wsh" class="variant small-section-header"><a href="#variant.Wsh" class="anchor field"></a><code>Wsh(Wsh<Pk>)</code></h3><div class="docblock"><p>Pay-to-Witness-ScriptHash with Segwitv0 context</p>
-</div><h3 id="variant.Tr" class="variant small-section-header"><a href="#variant.Tr" class="anchor field"></a><code>Tr(Tr<Pk>)</code></h3><div class="docblock"><p>Pay-to-Taproot</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_pk" class="method has-srclink"><div class="rightside"></div><a href="#method.new_pk" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_pk" class="fnname">new_pk</a>(pk: Pk) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class="docblock"><p>Create a new pk descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_pkh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_pkh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_pkh" class="fnname">new_pkh</a>(pk: Pk) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class="docblock"><p>Create a new PkH descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_wpkh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_wpkh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_wpkh" class="fnname">new_wpkh</a>(pk: Pk) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new Wpkh descriptor
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Bare" class="variant"><a href="#variant.Bare" class="anchor">§</a><h3 class="code-header">Bare(Bare<Pk>)</h3></section><div class="docblock"><p>A raw scriptpubkey (including pay-to-pubkey) under Legacy context</p>
+</div><section id="variant.Pkh" class="variant"><a href="#variant.Pkh" class="anchor">§</a><h3 class="code-header">Pkh(Pkh<Pk>)</h3></section><div class="docblock"><p>Pay-to-PubKey-Hash</p>
+</div><section id="variant.Wpkh" class="variant"><a href="#variant.Wpkh" class="anchor">§</a><h3 class="code-header">Wpkh(Wpkh<Pk>)</h3></section><div class="docblock"><p>Pay-to-Witness-PubKey-Hash</p>
+</div><section id="variant.Sh" class="variant"><a href="#variant.Sh" class="anchor">§</a><h3 class="code-header">Sh(Sh<Pk>)</h3></section><div class="docblock"><p>Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)</p>
+</div><section id="variant.Wsh" class="variant"><a href="#variant.Wsh" class="anchor">§</a><h3 class="code-header">Wsh(Wsh<Pk>)</h3></section><div class="docblock"><p>Pay-to-Witness-ScriptHash with Segwitv0 context</p>
+</div><section id="variant.Tr" class="variant"><a href="#variant.Tr" class="anchor">§</a><h3 class="code-header">Tr(Tr<Pk>)</h3></section><div class="docblock"><p>Pay-to-Taproot</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_pk" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_pk" class="fn">new_pk</a>(pk: Pk) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class="docblock"><p>Create a new pk descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_pkh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_pkh" class="fn">new_pkh</a>(pk: Pk) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class="docblock"><p>Create a new PkH descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_wpkh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_wpkh" class="fn">new_wpkh</a>(pk: Pk) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new Wpkh descriptor
Will return Err if uncompressed key is used</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh_wpkh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh_wpkh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh_wpkh" class="fnname">new_sh_wpkh</a>(pk: Pk) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new sh wrapped wpkh from <code>Pk</code>.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh_wpkh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh_wpkh" class="fn">new_sh_wpkh</a>(pk: Pk) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new sh wrapped wpkh from <code>Pk</code>.
Errors when uncompressed keys are supplied</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh" class="fnname">new_sh</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new sh for a given redeem script
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh" class="fn">new_sh</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new sh for a given redeem script
Errors when miniscript exceeds resource limits under p2sh context
or does not type check at the top level</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_wsh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_wsh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_wsh" class="fnname">new_wsh</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new wsh descriptor from witness script
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_wsh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_wsh" class="fn">new_wsh</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new wsh descriptor from witness script
Errors when miniscript exceeds resource limits under p2sh context
or does not type check at the top level</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh_wsh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh_wsh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh_wsh" class="fnname">new_sh_wsh</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new sh wrapped wsh descriptor with witness script
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh_wsh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh_wsh" class="fn">new_sh_wsh</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new sh wrapped wsh descriptor with witness script
Errors when miniscript exceeds resource limits under wsh context
or does not type check at the top level</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_bare" class="method has-srclink"><div class="rightside"></div><a href="#method.new_bare" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_bare" class="fnname">new_bare</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new bare descriptor from witness script
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_bare" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_bare" class="fn">new_bare</a>(ms: <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new bare descriptor from witness script
Errors when miniscript exceeds resource limits under bare context
or does not type check at the top level</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh_with_wpkh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh_with_wpkh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh_with_wpkh" class="fnname">new_sh_with_wpkh</a>(wpkh: Wpkh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class="docblock"><p>Create a new sh wrapper for the given wpkh descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh_with_wsh" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh_with_wsh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh_with_wsh" class="fnname">new_sh_with_wsh</a>(wsh: Wsh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class="docblock"><p>Create a new sh wrapper for the given wsh descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh_sortedmulti" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh_sortedmulti" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh_sortedmulti" class="fnname">new_sh_sortedmulti</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new sh sortedmulti descriptor with threshold <code>k</code>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh_with_wpkh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh_with_wpkh" class="fn">new_sh_with_wpkh</a>(wpkh: Wpkh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class="docblock"><p>Create a new sh wrapper for the given wpkh descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh_with_wsh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh_with_wsh" class="fn">new_sh_with_wsh</a>(wsh: Wsh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class="docblock"><p>Create a new sh wrapper for the given wsh descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh_sortedmulti" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh_sortedmulti" class="fn">new_sh_sortedmulti</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new sh sortedmulti descriptor with threshold <code>k</code>
and Vec of <code>pks</code>.
Errors when miniscript exceeds resource limits under p2sh context</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_sh_wsh_sortedmulti" class="method has-srclink"><div class="rightside"></div><a href="#method.new_sh_wsh_sortedmulti" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_sh_wsh_sortedmulti" class="fnname">new_sh_wsh_sortedmulti</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new sh wrapped wsh sortedmulti descriptor from threshold
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_sh_wsh_sortedmulti" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_sh_wsh_sortedmulti" class="fn">new_sh_wsh_sortedmulti</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new sh wrapped wsh sortedmulti descriptor from threshold
<code>k</code> and Vec of <code>pks</code>
Errors when miniscript exceeds resource limits under segwit context</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_wsh_sortedmulti" class="method has-srclink"><div class="rightside"></div><a href="#method.new_wsh_sortedmulti" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_wsh_sortedmulti" class="fnname">new_wsh_sortedmulti</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create a new wsh sorted multi descriptor
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_wsh_sortedmulti" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_wsh_sortedmulti" class="fn">new_wsh_sortedmulti</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create a new wsh sorted multi descriptor
Errors when miniscript exceeds resource limits under p2sh context</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_tr" class="method has-srclink"><div class="rightside"></div><a href="#method.new_tr" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_tr" class="fnname">new_tr</a>(<br> key: Pk, <br> script: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TapTree<Pk>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Create new tr descriptor
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_tr" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new_tr" class="fn">new_tr</a>(<br> key: Pk,<br> script: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TapTree<Pk>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Create new tr descriptor
Errors when miniscript exceeds resource limits under Tap context</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.desc_type" class="method has-srclink"><div class="rightside"></div><a href="#method.desc_type" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.desc_type" class="fnname">desc_type</a>(&self) -> DescriptorType</h4></div></summary><div class="docblock"><p>Get the [DescriptorType] of <a href="enum.Descriptor.html" title="Descriptor">Descriptor</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sanity_check" class="method has-srclink"><div class="rightside"></div><a href="#method.sanity_check" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sanity_check" class="fnname">sanity_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error></h4></div></summary><div class="docblock"><p>Checks whether the descriptor is safe.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.desc_type" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.desc_type" class="fn">desc_type</a>(&self) -> DescriptorType</h4></section></summary><div class="docblock"><p>Get the [DescriptorType] of <a href="enum.Descriptor.html" title="Descriptor">Descriptor</a></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sanity_check" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.sanity_check" class="fn">sanity_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error></h4></section></summary><div class="docblock"><p>Checks whether the descriptor is safe.</p>
<p>Checks whether all the spend paths in the descriptor are possible on the
bitcoin network under the current standardness and consensus rules. Also
checks whether the descriptor requires signatures on all spend paths and
whether the script is malleable.</p>
<p>In general, all the guarantees of miniscript hold only for safe scripts.
The signer may not be able to find satisfactions even if one exists.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_weight" class="method has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_weight" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.max_satisfaction_weight" class="fnname">max_satisfaction_weight</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Error></h4></div></summary><div class="docblock"><p>Computes an upper bound on the weight of a satisfying witness to the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_weight" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.max_satisfaction_weight" class="fn">max_satisfaction_weight</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Error></h4></section></summary><div class="docblock"><p>Computes an upper bound on the weight of a satisfying witness to the
transaction.</p>
<p>Assumes all ec-signatures are 73 bytes, including push opcode and
sighash suffix. Includes the weight of the VarInts encoding the
scriptSig and witness stack length.</p>
-<h5 id="errors" class="section-header"><a href="#errors">Errors</a></h5>
+<h5 id="errors"><a href="#errors">Errors</a></h5>
<p>When the descriptor is impossible to safisfy (ex: sh(OP_FALSE)).</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-1" class="impl has-srclink"><div class="rightside"></div><a href="#impl-1" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + ToPublicKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.address" class="method has-srclink"><div class="rightside"></div><a href="#method.address" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.address" class="fnname">address</a>(&self, network: Network) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Address, Error></h4></div></summary><div class="docblock"><p>Computes the Bitcoin address of the descriptor, if one exists</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Descriptor%3CPk%3E-1" class="impl has-srclink"><a href="#impl-Descriptor%3CPk%3E-1" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey + ToPublicKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.address" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.address" class="fn">address</a>(&self, network: Network) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Address, Error></h4></section></summary><div class="docblock"><p>Computes the Bitcoin address of the descriptor, if one exists</p>
<p>Some descriptors like pk() don’t have an address.</p>
-<h5 id="errors-1" class="section-header"><a href="#errors-1">Errors</a></h5>
+<h5 id="errors-1"><a href="#errors-1">Errors</a></h5>
<p>For raw/bare descriptors that don’t have an address.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.script_pubkey" class="method has-srclink"><div class="rightside"></div><a href="#method.script_pubkey" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.script_pubkey" class="fnname">script_pubkey</a>(&self) -> Script</h4></div></summary><div class="docblock"><p>Computes the scriptpubkey of the descriptor.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.unsigned_script_sig" class="method has-srclink"><div class="rightside"></div><a href="#method.unsigned_script_sig" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.unsigned_script_sig" class="fnname">unsigned_script_sig</a>(&self) -> Script</h4></div></summary><div class="docblock"><p>Computes the scriptSig that will be in place for an unsigned input
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.script_pubkey" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.script_pubkey" class="fn">script_pubkey</a>(&self) -> Script</h4></section></summary><div class="docblock"><p>Computes the scriptpubkey of the descriptor.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.unsigned_script_sig" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.unsigned_script_sig" class="fn">unsigned_script_sig</a>(&self) -> Script</h4></section></summary><div class="docblock"><p>Computes the scriptSig that will be in place for an unsigned input
spending an output with this descriptor. For pre-segwit descriptors,
which use the scriptSig for signatures, this returns the empty script.</p>
<p>This is used in Segwit transactions to produce an unsigned transaction
whose txid will not change during signing (since only the witness data
will change).</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.explicit_script" class="method has-srclink"><div class="rightside"></div><a href="#method.explicit_script" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.explicit_script" class="fnname">explicit_script</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Script, Error></h4></div></summary><div class="docblock"><p>Computes the the underlying script before any hashing is done. For
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.explicit_script" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.explicit_script" class="fn">explicit_script</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Script, Error></h4></section></summary><div class="docblock"><p>Computes the the underlying script before any hashing is done. For
<code>Bare</code>, <code>Pkh</code> and <code>Wpkh</code> this is the scriptPubkey; for <code>ShWpkh</code> and <code>Sh</code>
this is the redeemScript; for the others it is the witness script.</p>
-<h5 id="errors-2" class="section-header"><a href="#errors-2">Errors</a></h5>
+<h5 id="errors-2"><a href="#errors-2">Errors</a></h5>
<p>If the descriptor is a taproot descriptor.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.script_code" class="method has-srclink"><div class="rightside"></div><a href="#method.script_code" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.script_code" class="fnname">script_code</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Script, Error></h4></div></summary><div class="docblock"><p>Computes the <code>scriptCode</code> of a transaction output.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.script_code" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.script_code" class="fn">script_code</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Script, Error></h4></section></summary><div class="docblock"><p>Computes the <code>scriptCode</code> of a transaction output.</p>
<p>The <code>scriptCode</code> is the Script of the previous transaction output being
serialized in the sighash when evaluating a <code>CHECKSIG</code> & co. OP code.</p>
-<h5 id="errors-3" class="section-header"><a href="#errors-3">Errors</a></h5>
+<h5 id="errors-3"><a href="#errors-3">Errors</a></h5>
<p>If the descriptor is a taproot descriptor.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_satisfaction" class="method has-srclink"><div class="rightside"></div><a href="#method.get_satisfaction" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_satisfaction" class="fnname">get_satisfaction</a><S>(<br> &self, <br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Script<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, Error> <span class="where fmt-newline">where<br> S: Satisfier<Pk>, </span></h4></div></summary><div class="docblock"><p>Returns satisfying non-malleable witness and scriptSig to spend an
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_satisfaction" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_satisfaction" class="fn">get_satisfaction</a><S>(<br> &self,<br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Script), Error><span class="where fmt-newline">where<br> S: Satisfier<Pk>,</span></h4></section></summary><div class="docblock"><p>Returns satisfying non-malleable witness and scriptSig to spend an
output controlled by the given descriptor if it possible to
construct one using the satisfier S.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_satisfaction_mall" class="method has-srclink"><div class="rightside"></div><a href="#method.get_satisfaction_mall" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_satisfaction_mall" class="fnname">get_satisfaction_mall</a><S>(<br> &self, <br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Script<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, Error> <span class="where fmt-newline">where<br> S: Satisfier<Pk>, </span></h4></div></summary><div class="docblock"><p>Returns a possilbly mallable satisfying non-malleable witness and scriptSig to spend an
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_satisfaction_mall" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_satisfaction_mall" class="fn">get_satisfaction_mall</a><S>(<br> &self,<br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Script), Error><span class="where fmt-newline">where<br> S: Satisfier<Pk>,</span></h4></section></summary><div class="docblock"><p>Returns a possilbly mallable satisfying non-malleable witness and scriptSig to spend an
output controlled by the given descriptor if it possible to
construct one using the satisfier S.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.satisfy" class="method has-srclink"><div class="rightside"></div><a href="#method.satisfy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.satisfy" class="fnname">satisfy</a><S>(&self, txin: &mut TxIn, satisfier: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> S: Satisfier<Pk>, </span></h4></div></summary><div class="docblock"><p>Attempts to produce a non-malleable satisfying witness and scriptSig to spend an
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.satisfy" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.satisfy" class="fn">satisfy</a><S>(&self, txin: &mut TxIn, satisfier: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> S: Satisfier<Pk>,</span></h4></section></summary><div class="docblock"><p>Attempts to produce a non-malleable satisfying witness and scriptSig to spend an
output controlled by the given descriptor; add the data to a given
<code>TxIn</code> output.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-2" class="impl has-srclink"><div class="rightside"></div><a href="#impl-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_deriveable" class="method has-srclink"><div class="rightside"></div><a href="#method.is_deriveable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_deriveable" class="fnname">is_deriveable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>use has_wildcards instead</p>
-</div></div></summary><div class="docblock"><p>Whether or not the descriptor has any wildcards</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_wildcard" class="method has-srclink"><div class="rightside"></div><a href="#method.has_wildcard" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_wildcard" class="fnname">has_wildcard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether or not the descriptor has any wildcards i.e. <code>/*</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.at_derivation_index" class="method has-srclink"><div class="rightside"></div><a href="#method.at_derivation_index" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.at_derivation_index" class="fnname">at_derivation_index</a>(<br> &self, <br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey></h4></div></summary><div class="docblock"><p>Replaces all wildcards (i.e. <code>/*</code>) in the descriptor with a particular derivation index,
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Descriptor%3CDescriptorPublicKey%3E" class="impl has-srclink"><a href="#impl-Descriptor%3CDescriptorPublicKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_deriveable" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_deriveable" class="fn">is_deriveable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: use has_wildcards instead</span></div></span></summary><div class="docblock"><p>Whether or not the descriptor has any wildcards</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_wildcard" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.has_wildcard" class="fn">has_wildcard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether or not the descriptor has any wildcards i.e. <code>/*</code>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.at_derivation_index" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.at_derivation_index" class="fn">at_derivation_index</a>(<br> &self,<br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey></h4></section></summary><div class="docblock"><p>Replaces all wildcards (i.e. <code>/*</code>) in the descriptor with a particular derivation index,
turning it into a <em>definite</em> descriptor.</p>
-<h5 id="panics" class="section-header"><a href="#panics">Panics</a></h5>
+<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>If index ≥ 2^31</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.derive" class="method has-srclink"><div class="rightside"></div><a href="#method.derive" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.derive" class="fnname">derive</a>(&self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>use at_derivation_index instead</p>
-</div></div></summary><div class="docblock"><p>Deprecated name for [<code>at_derivation_index</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.derived_descriptor" class="method has-srclink"><div class="rightside"></div><a href="#method.derived_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.derived_descriptor" class="fnname">derived_descriptor</a><C>(<br> &self, <br> secp: &Secp256k1<C>, <br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><PublicKey>, ConversionError> <span class="where fmt-newline">where<br> C: Verification, </span></h4></div></summary><div class="docblock"><p>Convert all the public keys in the descriptor to [<code>bitcoin::PublicKey</code>] by deriving them or
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.derive" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.derive" class="fn">derive</a>(&self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: use at_derivation_index instead</span></div></span></summary><div class="docblock"><p>Deprecated name for [<code>at_derivation_index</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.derived_descriptor" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.derived_descriptor" class="fn">derived_descriptor</a><C>(<br> &self,<br> secp: &Secp256k1<C>,<br> index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><PublicKey>, ConversionError><span class="where fmt-newline">where<br> C: Verification,</span></h4></section></summary><div class="docblock"><p>Convert all the public keys in the descriptor to [<code>bitcoin::PublicKey</code>] by deriving them or
otherwise converting them. All [<code>bitcoin::XOnlyPublicKey</code>]s are converted to by adding a
default(0x02) y-coordinate.</p>
<p>This is a shorthand for:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code> .<span class="ident">expect</span>(<span class="string">"Valid ranged descriptor"</span>);
-<span class="kw">let</span> <span class="ident">derived_descriptor</span> <span class="op">=</span> <span class="ident">descriptor</span>.<span class="ident">at_derivation_index</span>(<span class="ident">index</span>).<span class="ident">derived_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>);</code></pre></div>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code> .expect(<span class="string">"Valid ranged descriptor"</span>);
+<span class="kw">let </span>derived_descriptor = descriptor.at_derivation_index(index).derived_descriptor(<span class="kw-2">&</span>secp);</code></pre></div>
<p>and is only here really here for backwards compatbility.
See <a href="enum.Descriptor.html#method.at_derivation_index"><code>at_derivation_index</code></a> and <code>[derived_descriptor</code>] for more documentation.</p>
-<h5 id="errors-4" class="section-header"><a href="#errors-4">Errors</a></h5>
+<h5 id="errors-4"><a href="#errors-4">Errors</a></h5>
<p>This function will return an error if hardened derivation is attempted.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse_descriptor" class="method has-srclink"><div class="rightside"></div><a href="#method.parse_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse_descriptor" class="fnname">parse_descriptor</a><C>(<br> secp: &Secp256k1<C>, <br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, Error> <span class="where fmt-newline">where<br> C: Signing, </span></h4></div></summary><div class="docblock"><p>Parse a descriptor that may contain secret keys</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse_descriptor" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse_descriptor" class="fn">parse_descriptor</a><C>(<br> secp: &Secp256k1<C>,<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), Error><span class="where fmt-newline">where<br> C: Signing,</span></h4></section></summary><div class="docblock"><p>Parse a descriptor that may contain secret keys</p>
<p>Internally turns every secret key found into the corresponding public key and then returns a
a descriptor that only contains public keys and a map to lookup the secret key given a public key.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string_with_secret" class="method has-srclink"><div class="rightside"></div><a href="#method.to_string_with_secret" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_string_with_secret" class="fnname">to_string_with_secret</a>(<br> &self, <br> key_map: &<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><br>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Serialize a descriptor to string with its secret keys</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.find_derivation_index_for_spk" class="method has-srclink"><div class="rightside"></div><a href="#method.find_derivation_index_for_spk" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.find_derivation_index_for_spk" class="fnname">find_derivation_index_for_spk</a><C>(<br> &self, <br> secp: &Secp256k1<C>, <br> script_pubkey: &Script, <br> range: <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><PublicKey><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, ConversionError> <span class="where fmt-newline">where<br> C: Verification, </span></h4></div></summary><div class="docblock"><p>Utility method for deriving the descriptor at each index in a range to find one matching
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string_with_secret" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_string_with_secret" class="fn">to_string_with_secret</a>(<br> &self,<br> key_map: &<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><br>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>Serialize a descriptor to string with its secret keys</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.find_derivation_index_for_spk" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.find_derivation_index_for_spk" class="fn">find_derivation_index_for_spk</a><C>(<br> &self,<br> secp: &Secp256k1<C>,<br> script_pubkey: &Script,<br> range: <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><PublicKey>)>, ConversionError><span class="where fmt-newline">where<br> C: Verification,</span></h4></section></summary><div class="docblock"><p>Utility method for deriving the descriptor at each index in a range to find one matching
<code>script_pubkey</code>.</p>
<p>If it finds a match then it returns the index it was derived at and the concrete
descriptor at that index. If the descriptor is non-derivable then it will simply check the
script pubkey against the descriptor and return it if it matches (in this case the index
returned will be meaningless).</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-3" class="impl has-srclink"><div class="rightside"></div><a href="#impl-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.derived_descriptor-1" class="method has-srclink"><div class="rightside"></div><a href="#method.derived_descriptor-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.derived_descriptor-1" class="fnname">derived_descriptor</a><C>(<br> &self, <br> secp: &Secp256k1<C><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><PublicKey>, ConversionError> <span class="where fmt-newline">where<br> C: Verification, </span></h4></div></summary><div class="docblock"><p>Convert all the public keys in the descriptor to [<code>bitcoin::PublicKey</code>] by deriving them or
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Descriptor%3CDefiniteDescriptorKey%3E" class="impl has-srclink"><a href="#impl-Descriptor%3CDefiniteDescriptorKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.derived_descriptor-1" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.derived_descriptor-1" class="fn">derived_descriptor</a><C>(<br> &self,<br> secp: &Secp256k1<C><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><PublicKey>, ConversionError><span class="where fmt-newline">where<br> C: Verification,</span></h4></section></summary><div class="docblock"><p>Convert all the public keys in the descriptor to [<code>bitcoin::PublicKey</code>] by deriving them or
otherwise converting them. All [<code>bitcoin::XOnlyPublicKey</code>]s are converted to by adding a
default(0x02) y-coordinate.</p>
-<h5 id="examples" class="section-header"><a href="#examples">Examples</a></h5>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
-<span class="kw">use</span> <span class="ident">miniscript::bitcoin::secp256k1</span>;
-<span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<h5 id="examples"><a href="#examples">Examples</a></h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>miniscript::descriptor::{Descriptor, DescriptorPublicKey};
+<span class="kw">use </span>miniscript::bitcoin::secp256k1;
+<span class="kw">use </span>std::str::FromStr;
-<span class="comment">// test from bip 86</span>
-<span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">secp256k1::Secp256k1::verification_only</span>();
-<span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::from_str</span>(<span class="string">"tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)"</span>)
- .<span class="ident">expect</span>(<span class="string">"Valid ranged descriptor"</span>);
-<span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">descriptor</span>.<span class="ident">at_derivation_index</span>(<span class="number">0</span>).<span class="ident">derived_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>).<span class="ident">expect</span>(<span class="string">"Non-hardened derivation"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">to_string</span>(), <span class="string">"tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym"</span>);</code></pre></div>
-<h5 id="errors-5" class="section-header"><a href="#errors-5">Errors</a></h5>
+<span class="comment">// test from bip 86
+</span><span class="kw">let </span>secp = secp256k1::Secp256k1::verification_only();
+<span class="kw">let </span>descriptor = Descriptor::<DescriptorPublicKey>::from_str(<span class="string">"tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)"</span>)
+ .expect(<span class="string">"Valid ranged descriptor"</span>);
+<span class="kw">let </span>result = descriptor.at_derivation_index(<span class="number">0</span>).derived_descriptor(<span class="kw-2">&</span>secp).expect(<span class="string">"Non-hardened derivation"</span>);
+<span class="macro">assert_eq!</span>(result.to_string(), <span class="string">"tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym"</span>);</code></pre></div>
+<h5 id="errors-5"><a href="#errors-5">Errors</a></h5>
<p>This function will return an error if hardened derivation is attempted.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de, Pk> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">pub fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><D>(<br> deserializer: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, <D as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ExtractPolicy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/policy.rs.html#1050-1131" title="goto source code">source</a></div><a href="#impl-ExtractPolicy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.extract_policy" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/policy.rs.html#1051-1130" title="goto source code">source</a></div><a href="#method.extract_policy" class="anchor"></a><h4 class="code-header">fn <a href="trait.ExtractPolicy.html#tymethod.extract_policy" class="fnname">extract_policy</a>(<br> &self, <br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>, <br> build_sat: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ForEachKey%3CPk%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ForEachKey%3CPk%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> ForEachKey<Pk> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.for_each_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.for_each_key" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">for_each_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a, </span></h4></div></summary><div class='docblock'><p>Run a predicate on every key in the descriptor, returning whether
-the predicate returned true for every key <a href="#tymethod.for_each_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.for_any_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.for_any_key" class="anchor"></a><h4 class="code-header">fn <a href="#method.for_any_key" class="fnname">for_any_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a, </span></h4></div></summary><div class='docblock'><p>Run a predicate on every key in the descriptor, returning whether
-the predicate returned true for any key <a href="#method.for_any_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CBare%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CBare%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Bare<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Bare<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CPkh%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CPkh%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Pkh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Pkh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSh%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CSh%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Sh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-5" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-5" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Sh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CTr%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CTr%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Tr<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Tr<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CWpkh%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CWpkh%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Wpkh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Wpkh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CWsh%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CWsh%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Wsh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(inner: Wsh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = Error</h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class='docblock'><p>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromTree" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromTree" class="anchor"></a><h3 class="code-header in-band">impl<Pk> FromTree for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_tree" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_tree" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">from_tree</a>(top: &Tree<'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></div></summary><div class="docblock"><p>Parse an expression tree into a descriptor.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Liftable%3CPk%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Liftable%3CPk%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> Liftable<Pk> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lift" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.lift" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">lift</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Policy<Pk>, Error></h4></div></summary><div class='docblock'><p>Convert the object into an abstract policy</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CDescriptor%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CDescriptor%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Pk> + MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CDescriptor%3CPk%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CDescriptor%3CPk%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Pk> + MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl<'de, Pk> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">pub fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><S>(<br> &self, <br> serializer: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<S as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, <S as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TranslatePk%3CP%2C%20Q%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-TranslatePk%3CP%2C%20Q%3E" class="anchor"></a><h3 class="code-header in-band">impl<P, Q> TranslatePk<P, Q> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><P> <span class="where fmt-newline">where<br> P: MiniscriptKey,<br> Q: MiniscriptKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.translate_pk" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.translate_pk" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">translate_pk</a><T, E>(<br> &self, <br> t: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><P> as TranslatePk<P, Q>>::Output, E> <span class="where fmt-newline">where<br> T: Translator<P, Q, E>, </span></h4></div></summary><div class="docblock"><p>Converts a descriptor using abstract keys to one using specific keys.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Output" class="type trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Output" class="associatedtype">Output</a> = <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Q></h4></div></summary><div class='docblock'><p>The associated output type. This must be <code>Self<Q></code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + MiniscriptKey, </span></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-6" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-6" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Clone-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Debug-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Deserialize%3C%27de%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<'de, Pk> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><D>(<br> deserializer: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, <D as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Display-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ExtractPolicy-for-Descriptor%3CDescriptorPublicKey%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/policy.rs.html#1050-1131">source</a><a href="#impl-ExtractPolicy-for-Descriptor%3CDescriptorPublicKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.extract_policy" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/policy.rs.html#1051-1130">source</a><a href="#method.extract_policy" class="anchor">§</a><h4 class="code-header">fn <a href="trait.ExtractPolicy.html#tymethod.extract_policy" class="fn">extract_policy</a>(<br> &self,<br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>,<br> build_sat: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ForEachKey%3CPk%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-ForEachKey%3CPk%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> ForEachKey<Pk> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_each_key" class="method trait-impl has-srclink"><a href="#method.for_each_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">for_each_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a,</span></h4></section></summary><div class='docblock'>Run a predicate on every key in the descriptor, returning whether
+the predicate returned true for every key <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_any_key" class="method trait-impl has-srclink"><a href="#method.for_any_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">for_any_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a,</span></h4></section></summary><div class='docblock'>Run a predicate on every key in the descriptor, returning whether
+the predicate returned true for any key <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Bare<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Bare<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Pkh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Pkh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Sh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Sh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Tr<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Tr<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Wpkh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Wpkh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Wsh<Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-5" class="method trait-impl has-srclink"><a href="#method.from-5" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(inner: Wsh<Pk>) -> <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-FromStr-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = Error</h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromTree-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-FromTree-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> FromTree for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_tree" class="method trait-impl has-srclink"><a href="#method.from_tree" class="anchor">§</a><h4 class="code-header">fn <a class="fn">from_tree</a>(top: &Tree<'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>, Error></h4></section></summary><div class="docblock"><p>Parse an expression tree into a descriptor.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Hash-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Liftable%3CPk%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Liftable%3CPk%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> Liftable<Pk> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lift" class="method trait-impl has-srclink"><a href="#method.lift" class="anchor">§</a><h4 class="code-header">fn <a class="fn">lift</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Policy<Pk>, Error></h4></section></summary><div class='docblock'>Convert the object into an abstract policy</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Ord-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CDescriptor%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-PartialEq%3CDescriptor%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Pk> + MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CDescriptor%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-PartialOrd%3CDescriptor%3CPk%3E%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Pk> + MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Serialize-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<'de, Pk> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><S>(<br> &self,<br> serializer: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<S as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, <S as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TranslatePk%3CP%2C%20Q%3E-for-Descriptor%3CP%3E" class="impl has-srclink"><a href="#impl-TranslatePk%3CP%2C%20Q%3E-for-Descriptor%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P, Q> TranslatePk<P, Q> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><P><span class="where fmt-newline">where<br> P: MiniscriptKey,<br> Q: MiniscriptKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.translate_pk" class="method trait-impl has-srclink"><a href="#method.translate_pk" class="anchor">§</a><h4 class="code-header">fn <a class="fn">translate_pk</a><T, E>(<br> &self,<br> t: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<<a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><P> as TranslatePk<P, Q>>::Output, E><span class="where fmt-newline">where<br> T: Translator<P, Q, E>,</span></h4></section></summary><div class="docblock"><p>Converts a descriptor using abstract keys to one using specific keys.</p>
+</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Output</a> = <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Q></h4></section></summary><div class='docblock'>The associated output type. This must be <code>Self<Q></code>.</div></details></div></details><section id="impl-Eq-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Eq-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + MiniscriptKey,</span></h3></section><section id="impl-StructuralEq-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-StructuralEq-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section><section id="impl-StructuralPartialEq-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Send-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Sync-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Sync-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<Pk> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><Pk><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-CallHasher-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-6" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-6" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Descriptor%3CPk%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-Descriptor%3CPk%3E" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-Descriptor%3CPk%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The descriptor pubkey, either a single pubkey or an xpub."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorPublicKey"><title>DescriptorPublicKey in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorPublicKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Single">Single</a><a href="#variant.XPub">XPub</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.at_derivation_index">at_derivation_index</a><a href="#method.derive">derive</a><a href="#method.full_derivation_path">full_derivation_path</a><a href="#method.has_wildcard">has_wildcard</a><a href="#method.is_deriveable">is_deriveable</a><a href="#method.master_fingerprint">master_fingerprint</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CDefiniteDescriptorKey%3E">From<DefiniteDescriptorKey></a><a href="#impl-FromStr">FromStr</a><a href="#impl-Hash">Hash</a><a href="#impl-IntoDescriptorKey%3CCtx%3E">IntoDescriptorKey<Ctx></a><a href="#impl-MiniscriptKey">MiniscriptKey</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CDescriptorPublicKey%3E">PartialEq<DescriptorPublicKey></a><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E">PartialOrd<DescriptorPublicKey></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="DescriptorPublicKey" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">DescriptorPublicKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum DescriptorPublicKey {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The descriptor pubkey, either a single pubkey or an xpub."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorPublicKey"><title>DescriptorPublicKey in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorPublicKey</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Single">Single</a></li><li><a href="#variant.XPub">XPub</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.at_derivation_index">at_derivation_index</a></li><li><a href="#method.derive">derive</a></li><li><a href="#method.full_derivation_path">full_derivation_path</a></li><li><a href="#method.has_wildcard">has_wildcard</a></li><li><a href="#method.is_deriveable">is_deriveable</a></li><li><a href="#method.master_fingerprint">master_fingerprint</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-DescriptorPublicKey">Clone</a></li><li><a href="#impl-Debug-for-DescriptorPublicKey">Debug</a></li><li><a href="#impl-Display-for-DescriptorPublicKey">Display</a></li><li><a href="#impl-Eq-for-DescriptorPublicKey">Eq</a></li><li><a href="#impl-From%3CDefiniteDescriptorKey%3E-for-DescriptorPublicKey">From<DefiniteDescriptorKey></a></li><li><a href="#impl-FromStr-for-DescriptorPublicKey">FromStr</a></li><li><a href="#impl-Hash-for-DescriptorPublicKey">Hash</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey">IntoDescriptorKey<Ctx></a></li><li><a href="#impl-MiniscriptKey-for-DescriptorPublicKey">MiniscriptKey</a></li><li><a href="#impl-Ord-for-DescriptorPublicKey">Ord</a></li><li><a href="#impl-PartialEq%3CDescriptorPublicKey%3E-for-DescriptorPublicKey">PartialEq<DescriptorPublicKey></a></li><li><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E-for-DescriptorPublicKey">PartialOrd<DescriptorPublicKey></a></li><li><a href="#impl-StructuralEq-for-DescriptorPublicKey">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-DescriptorPublicKey">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-DescriptorPublicKey">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DescriptorPublicKey">Send</a></li><li><a href="#impl-Sync-for-DescriptorPublicKey">Sync</a></li><li><a href="#impl-Unpin-for-DescriptorPublicKey">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DescriptorPublicKey">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-DescriptorPublicKey">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-DescriptorPublicKey">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-DescriptorPublicKey">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-DescriptorPublicKey">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-DescriptorPublicKey">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-DescriptorPublicKey">Into<U></a></li><li><a href="#impl-Pointable-for-DescriptorPublicKey">Pointable</a></li><li><a href="#impl-ToOwned-for-DescriptorPublicKey">ToOwned</a></li><li><a href="#impl-ToString-for-DescriptorPublicKey">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-DescriptorPublicKey">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-DescriptorPublicKey">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-DescriptorPublicKey">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">DescriptorPublicKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum DescriptorPublicKey {
Single(<a class="struct" href="../keys/struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>),
XPub(<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPubKey>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The descriptor pubkey, either a single pubkey or an xpub.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Single" class="variant small-section-header"><a href="#variant.Single" class="anchor field"></a><code>Single(<a class="struct" href="../keys/struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>)</code></h3><div class="docblock"><p>Single public key.</p>
-</div><h3 id="variant.XPub" class="variant small-section-header"><a href="#variant.XPub" class="anchor field"></a><code>XPub(<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPubKey>)</code></h3><div class="docblock"><p>Extended public key (xpub).</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.master_fingerprint" class="method has-srclink"><div class="rightside"></div><a href="#method.master_fingerprint" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.master_fingerprint" class="fnname">master_fingerprint</a>(&self) -> Fingerprint</h4></div></summary><div class="docblock"><p>The fingerprint of the master key associated with this key, <code>0x00000000</code> if none.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.full_derivation_path" class="method has-srclink"><div class="rightside"></div><a href="#method.full_derivation_path" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.full_derivation_path" class="fnname">full_derivation_path</a>(&self) -> DerivationPath</h4></div></summary><div class="docblock"><p>Full path, from the master key</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Single" class="variant"><a href="#variant.Single" class="anchor">§</a><h3 class="code-header">Single(<a class="struct" href="../keys/struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>)</h3></section><div class="docblock"><p>Single public key.</p>
+</div><section id="variant.XPub" class="variant"><a href="#variant.XPub" class="anchor">§</a><h3 class="code-header">XPub(<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPubKey>)</h3></section><div class="docblock"><p>Extended public key (xpub).</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.master_fingerprint" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.master_fingerprint" class="fn">master_fingerprint</a>(&self) -> Fingerprint</h4></section></summary><div class="docblock"><p>The fingerprint of the master key associated with this key, <code>0x00000000</code> if none.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.full_derivation_path" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.full_derivation_path" class="fn">full_derivation_path</a>(&self) -> DerivationPath</h4></section></summary><div class="docblock"><p>Full path, from the master key</p>
<p>For wildcard keys this will return the path up to the wildcard, so you
can get full paths by appending one additional derivation step, according
to the wildcard type (hardened or normal)</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_deriveable" class="method has-srclink"><div class="rightside"></div><a href="#method.is_deriveable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_deriveable" class="fnname">is_deriveable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>use has_wildcard instead</p>
-</div></div></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_wildcard" class="method has-srclink"><div class="rightside"></div><a href="#method.has_wildcard" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_wildcard" class="fnname">has_wildcard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.derive" class="method has-srclink"><div class="rightside"></div><a href="#method.derive" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.derive" class="fnname">derive</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>use at_derivation_index instead</p>
-</div></div></summary><div class="docblock"><p>Deprecated name of [<code>at_derivation_index</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.at_derivation_index" class="method has-srclink"><div class="rightside"></div><a href="#method.at_derivation_index" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.at_derivation_index" class="fnname">at_derivation_index</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></div></summary><div class="docblock"><p>Replaces any wildcard (i.e. <code>/*</code>) in the key with a particular derivation index, turning it into a
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_deriveable" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_deriveable" class="fn">is_deriveable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: use has_wildcard instead</span></div></span></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_wildcard" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.has_wildcard" class="fn">has_wildcard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.derive" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.derive" class="fn">derive</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: use at_derivation_index instead</span></div></span></summary><div class="docblock"><p>Deprecated name of [<code>at_derivation_index</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.at_derivation_index" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.at_derivation_index" class="fn">at_derivation_index</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></section></summary><div class="docblock"><p>Replaces any wildcard (i.e. <code>/*</code>) in the key with a particular derivation index, turning it into a
<em>definite</em> key (i.e. one where all the derivation paths are set).</p>
-<h5 id="returns" class="section-header"><a href="#returns">Returns</a></h5>
+<h5 id="returns"><a href="#returns">Returns</a></h5>
<ul>
<li>If this key is not an xpub, returns <code>self</code>.</li>
<li>If this key is an xpub but does not have a wildcard, returns <code>self</code>.</li>
<li>Otherwise, returns the xpub at derivation <code>index</code> (removing the wildcard).</li>
</ul>
-<h5 id="panics" class="section-header"><a href="#panics">Panics</a></h5>
+<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>If <code>index</code> ≥ 2^31</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CDefiniteDescriptorKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CDefiniteDescriptorKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><DefiniteDescriptorKey> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(d: DefiniteDescriptorKey) -> <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = DescriptorKeyParseError</h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></div></summary><div class='docblock'><p>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoDescriptorKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#842-856" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#843-855" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../keys/enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Turn the key into a <a href="../keys/enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="../keys/trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-MiniscriptKey" class="impl has-srclink"><div class="rightside"></div><a href="#impl-MiniscriptKey" class="anchor"></a><h3 class="code-header in-band">impl MiniscriptKey for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Sha256" class="type trait-impl has-srclink"><a href="#associatedtype.Sha256" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Sha256" class="associatedtype">Sha256</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>sha256::Hash</code>] for this [<code>MiniscriptKey</code>],
-used in the hash256 fragment. <a href="#associatedtype.Sha256">Read more</a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Hash256" class="type trait-impl has-srclink"><a href="#associatedtype.Hash256" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Hash256" class="associatedtype">Hash256</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>hash256::Hash</code>] for this [<code>MiniscriptKey</code>],
-used in the hash256 fragment. <a href="#associatedtype.Hash256">Read more</a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Ripemd160" class="type trait-impl has-srclink"><a href="#associatedtype.Ripemd160" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Ripemd160" class="associatedtype">Ripemd160</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>ripedmd160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
-used in the ripemd160 fragment <a href="#associatedtype.Ripemd160">Read more</a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Hash160" class="type trait-impl has-srclink"><a href="#associatedtype.Hash160" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Hash160" class="associatedtype">Hash160</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>hash160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
-used in the hash160 fragment <a href="#associatedtype.Hash160">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_uncompressed" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.is_uncompressed" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_uncompressed" class="fnname">is_uncompressed</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns true if the pubkey is uncompressed. Defaults to <code>false</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_x_only_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.is_x_only_key" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_x_only_key" class="fnname">is_x_only_key</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns true if the pubkey is an x-only pubkey. Defaults to <code>false</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CDescriptorPublicKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CDescriptorPublicKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CDescriptorPublicKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Clone-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Debug-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Display-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CDefiniteDescriptorKey%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-From%3CDefiniteDescriptorKey%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><DefiniteDescriptorKey> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(d: DefiniteDescriptorKey) -> <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-FromStr-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = DescriptorKeyParseError</h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Hash-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#842-856">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#843-855">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../keys/enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Turn the key into a <a href="../keys/enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="../keys/trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-MiniscriptKey-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-MiniscriptKey-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl MiniscriptKey for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Sha256" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Sha256" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Sha256</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>sha256::Hash</code>] for this [<code>MiniscriptKey</code>],
+used in the hash256 fragment. <a>Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Hash256" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Hash256" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Hash256</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>hash256::Hash</code>] for this [<code>MiniscriptKey</code>],
+used in the hash256 fragment. <a>Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Ripemd160" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Ripemd160" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Ripemd160</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>ripedmd160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
+used in the ripemd160 fragment <a>Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Hash160" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Hash160" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Hash160</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>hash160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
+used in the hash160 fragment <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_uncompressed" class="method trait-impl has-srclink"><a href="#method.is_uncompressed" class="anchor">§</a><h4 class="code-header">fn <a class="fn">is_uncompressed</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns true if the pubkey is uncompressed. Defaults to <code>false</code>.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_x_only_key" class="method trait-impl has-srclink"><a href="#method.is_x_only_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">is_x_only_key</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns true if the pubkey is an x-only pubkey. Defaults to <code>false</code>.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Ord-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-PartialEq%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Eq-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-StructuralEq-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-StructuralEq-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-StructuralPartialEq-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-Send-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Send-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-Sync-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Sync-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-Unpin-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Unpin-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-UnwindSafe-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-UnwindSafe-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-CallHasher-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Pointable-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"><meta name="keywords" content="rust, rustlang, rust-lang, Legacy"><title>Legacy in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Legacy</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CLegacy%3E">PartialEq<Legacy></a><a href="#impl-PartialOrd%3CLegacy%3E">PartialOrd<Legacy></a><a href="#impl-ScriptContext">ScriptContext</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-ExtScriptContext">ExtScriptContext</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="Legacy" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Legacy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Legacy {}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Legacy ScriptContext
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"><meta name="keywords" content="rust, rustlang, rust-lang, Legacy"><title>Legacy in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Legacy</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Legacy">Clone</a></li><li><a href="#impl-Debug-for-Legacy">Debug</a></li><li><a href="#impl-Eq-for-Legacy">Eq</a></li><li><a href="#impl-Hash-for-Legacy">Hash</a></li><li><a href="#impl-Ord-for-Legacy">Ord</a></li><li><a href="#impl-PartialEq%3CLegacy%3E-for-Legacy">PartialEq<Legacy></a></li><li><a href="#impl-PartialOrd%3CLegacy%3E-for-Legacy">PartialOrd<Legacy></a></li><li><a href="#impl-ScriptContext-for-Legacy">ScriptContext</a></li><li><a href="#impl-StructuralEq-for-Legacy">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Legacy">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Legacy">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Legacy">Send</a></li><li><a href="#impl-Sync-for-Legacy">Sync</a></li><li><a href="#impl-Unpin-for-Legacy">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Legacy">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Legacy">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Legacy">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Legacy">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Legacy">CallHasher</a></li><li><a href="#impl-ExtScriptContext-for-Legacy">ExtScriptContext</a></li><li><a href="#impl-From%3CT%3E-for-Legacy">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Legacy">Into<U></a></li><li><a href="#impl-Pointable-for-Legacy">Pointable</a></li><li><a href="#impl-ToOwned-for-Legacy">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Legacy">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Legacy">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Legacy">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Legacy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Legacy {}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Legacy ScriptContext
To be used as P2SH scripts
For creation of Bare scriptpubkeys, construct the Miniscript
under <code>Bare</code> ScriptContext</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CLegacy%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CLegacy%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CLegacy%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CLegacy%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ScriptContext" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Key" class="type trait-impl has-srclink"><a href="#associatedtype.Key" class="anchor"></a><h4 class="code-header">type <a href="../keys/trait.ScriptContext.html#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div></summary><div class='docblock'><p>The consensus key associated with the type. Must be a parseable key</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_terminal_non_malleable" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_terminal_non_malleable" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> frag: &Terminal<Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on ScriptContext, fragments can be malleable. For Example,
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Legacy" class="impl has-srclink"><a href="#impl-Clone-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Legacy" class="impl has-srclink"><a href="#impl-Debug-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Legacy" class="impl has-srclink"><a href="#impl-Hash-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Legacy" class="impl has-srclink"><a href="#impl-Ord-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CLegacy%3E-for-Legacy" class="impl has-srclink"><a href="#impl-PartialEq%3CLegacy%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CLegacy%3E-for-Legacy" class="impl has-srclink"><a href="#impl-PartialOrd%3CLegacy%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ScriptContext-for-Legacy" class="impl has-srclink"><a href="#impl-ScriptContext-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Key" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key" class="anchor">§</a><h4 class="code-header">type <a href="../keys/trait.ScriptContext.html#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></summary><div class='docblock'>The consensus key associated with the type. Must be a parseable key</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_terminal_non_malleable" class="method trait-impl has-srclink"><a href="#method.check_terminal_non_malleable" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable" class="fn">check_terminal_non_malleable</a><Pk>(<br> frag: &Terminal<Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on ScriptContext, fragments can be malleable. For Example,
under Legacy context, PkH is malleable because it is possible to
estimate the cost of satisfaction because of compressed keys
This is currently only used in compiler code for removing malleable
compilations.
This does NOT recursively check if the children of the fragment are
valid or not. Since the compilation proceeds in a leaf to root fashion,
-a recursive check is unnecessary. <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_witness" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_witness" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_witness" class="fnname">check_witness</a><Pk>(<br> witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check whether the given satisfaction is valid under the ScriptContext
+a recursive check is unnecessary. <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_witness" class="method trait-impl has-srclink"><a href="#method.check_witness" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_witness" class="fn">check_witness</a><Pk>(<br> witness: &[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>]<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check whether the given satisfaction is valid under the ScriptContext
For example, segwit satisfactions may fail if the witness len is more
-3600 or number of stack elements are more than 100. <a href="../keys/trait.ScriptContext.html#method.check_witness">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_global_consensus_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_consensus_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on script Context, some of the Terminals might not
+3600 or number of stack elements are more than 100. <a href="../keys/trait.ScriptContext.html#method.check_witness">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_consensus_validity" class="method trait-impl has-srclink"><a href="#method.check_global_consensus_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity" class="fn">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on script Context, some of the Terminals might not
be valid under the current consensus rules.
Or some of the script resource limits may have been exceeded.
These miniscripts would never be accepted by the Bitcoin network and hence
uncompressed public keys are non-standard and thus invalid.
In LegacyP2SH context, scripts above 520 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
-This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_local_consensus_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_consensus_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Consensus rules at the Miniscript satisfaction time.
+This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_consensus_validity" class="method trait-impl has-srclink"><a href="#method.check_local_consensus_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity" class="fn">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Consensus rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
-For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_local_policy_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_policy_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Policy rules at the Miniscript satisfaction time.
+For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_policy_validity" class="method trait-impl has-srclink"><a href="#method.check_local_policy_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity" class="fn">check_local_policy_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Policy rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
For example, satisfaction path in Legacy context scriptSig more
-than 1650 bytes <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_size" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on script context, the size of a satifaction witness may slightly differ.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.pk_len" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.pk_len" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Get the len of public key when serialized based on context
+than 1650 bytes <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_size" class="method trait-impl has-srclink"><a href="#method.max_satisfaction_size" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.max_satisfaction_size" class="fn">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on script context, the size of a satifaction witness may slightly differ.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.pk_len" class="method trait-impl has-srclink"><a href="#method.pk_len" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.pk_len" class="fn">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Get the len of public key when serialized based on context
Note that this includes the serialization prefix. Returns
34/66 for Bare/Legacy based on key compressedness
-34 for Segwitv0, 33 for Tap <a href="../keys/trait.ScriptContext.html#tymethod.pk_len">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.name_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.name_str" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class='docblock'><p>Local helper function to display error messages with context</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sig_type" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.sig_type" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div></summary><div class='docblock'><p>The type of signature required for satisfaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_global_policy_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_policy_validity" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on script Context, some of the script resource limits
+34 for Segwitv0, 33 for Tap <a href="../keys/trait.ScriptContext.html#tymethod.pk_len">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.name_str" class="method trait-impl has-srclink"><a href="#method.name_str" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.name_str" class="fn">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><div class='docblock'>Local helper function to display error messages with context</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sig_type" class="method trait-impl has-srclink"><a href="#method.sig_type" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.sig_type" class="fn">sig_type</a>() -> SigType</h4></section></summary><div class='docblock'>The type of signature required for satisfaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_policy_validity" class="method trait-impl has-srclink"><a href="#method.check_global_policy_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity" class="fn">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on script Context, some of the script resource limits
may have been exceeded under the current bitcoin core policy rules
These miniscripts would never be accepted by the Bitcoin network and hence
it is safe to discard them. (unless explicitly disabled by non-standard flag)
For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey
scripts over 3600 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
-This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_global_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_validity" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_validity" class="fnname">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check the consensus + policy(if not disabled) rules that are not based
-satisfaction <a href="../keys/trait.ScriptContext.html#method.check_global_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_local_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_validity" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_validity" class="fnname">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check the consensus + policy(if not disabled) rules including the
-ones for satisfaction <a href="../keys/trait.ScriptContext.html#method.check_local_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.top_level_type_check" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.top_level_type_check" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_type_check" class="fnname">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check whether the top-level is type B</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.other_top_level_checks" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.other_top_level_checks" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Other top level checks that are context specific</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.top_level_checks" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.top_level_checks" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_checks" class="fnname">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check top level consensus rules.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ExtScriptContext" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#172-181" title="goto source code">source</a></div><a href="#impl-ExtScriptContext" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="../keys/trait.ExtScriptContext.html" title="trait bdk::keys::ExtScriptContext">ExtScriptContext</a> for Ctx <span class="where fmt-newline">where<br> Ctx: 'static + <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_enum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#173-180" title="goto source code">source</a></div><a href="#method.as_enum" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ExtScriptContext.html#tymethod.as_enum" class="fnname">as_enum</a>() -> <a class="enum" href="../keys/enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></div></summary><div class='docblock'><p>Returns the <a href="../keys/trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> as a <a href="../keys/enum.ScriptContextEnum.html" title="ScriptContextEnum"><code>ScriptContextEnum</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_legacy" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#157-159" title="goto source code">source</a></div><a href="#method.is_legacy" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_legacy" class="fnname">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns whether the script context is <a href="enum.Legacy.html"><code>Legacy</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_segwit_v0" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#162-164" title="goto source code">source</a></div><a href="#method.is_segwit_v0" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_segwit_v0" class="fnname">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns whether the script context is <a href="enum.Segwitv0.html"><code>Segwitv0</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_taproot" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#167-169" title="goto source code">source</a></div><a href="#method.is_taproot" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_taproot" class="fnname">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns whether the script context is <a href="miniscript::Tap"><code>Tap</code></a>, aka Taproot or Segwit V1</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_validity" class="method trait-impl has-srclink"><a href="#method.check_global_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_validity" class="fn">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check the consensus + policy(if not disabled) rules that are not based
+satisfaction <a href="../keys/trait.ScriptContext.html#method.check_global_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_validity" class="method trait-impl has-srclink"><a href="#method.check_local_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_validity" class="fn">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check the consensus + policy(if not disabled) rules including the
+ones for satisfaction <a href="../keys/trait.ScriptContext.html#method.check_local_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_type_check" class="method trait-impl has-srclink"><a href="#method.top_level_type_check" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_type_check" class="fn">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check whether the top-level is type B</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.other_top_level_checks" class="method trait-impl has-srclink"><a href="#method.other_top_level_checks" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.other_top_level_checks" class="fn">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Other top level checks that are context specific</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_checks" class="method trait-impl has-srclink"><a href="#method.top_level_checks" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_checks" class="fn">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check top level consensus rules.</div></details></div></details><section id="impl-Eq-for-Legacy" class="impl has-srclink"><a href="#impl-Eq-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section><section id="impl-StructuralEq-for-Legacy" class="impl has-srclink"><a href="#impl-StructuralEq-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section><section id="impl-StructuralPartialEq-for-Legacy" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Legacy" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section><section id="impl-Send-for-Legacy" class="impl has-srclink"><a href="#impl-Send-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section><section id="impl-Sync-for-Legacy" class="impl has-srclink"><a href="#impl-Sync-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section><section id="impl-Unpin-for-Legacy" class="impl has-srclink"><a href="#impl-Unpin-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section><section id="impl-UnwindSafe-for-Legacy" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Legacy" class="impl has-srclink"><a href="#impl-CallHasher-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ExtScriptContext-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#172-181">source</a><a href="#impl-ExtScriptContext-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="../keys/trait.ExtScriptContext.html" title="trait bdk::keys::ExtScriptContext">ExtScriptContext</a> for Ctx<span class="where fmt-newline">where<br> Ctx: 'static + <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_enum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#173-180">source</a><a href="#method.as_enum" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#tymethod.as_enum" class="fn">as_enum</a>() -> <a class="enum" href="../keys/enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></section></summary><div class='docblock'>Returns the <a href="../keys/trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> as a <a href="../keys/enum.ScriptContextEnum.html" title="ScriptContextEnum"><code>ScriptContextEnum</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_legacy" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#157-159">source</a><a href="#method.is_legacy" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_legacy" class="fn">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns whether the script context is <a href="enum.Legacy.html"><code>Legacy</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_segwit_v0" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#162-164">source</a><a href="#method.is_segwit_v0" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_segwit_v0" class="fn">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns whether the script context is <a href="enum.Segwitv0.html"><code>Segwitv0</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_taproot" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#167-169">source</a><a href="#method.is_taproot" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_taproot" class="fn">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns whether the script context is <a href="miniscript::Tap"><code>Tap</code></a>, aka Taproot or Segwit V1</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Legacy" class="impl has-srclink"><a href="#impl-Pointable-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Legacy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Legacy" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Legacy" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Segwitv0 ScriptContext"><meta name="keywords" content="rust, rustlang, rust-lang, Segwitv0"><title>Segwitv0 in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Segwitv0</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CSegwitv0%3E">PartialEq<Segwitv0></a><a href="#impl-PartialOrd%3CSegwitv0%3E">PartialOrd<Segwitv0></a><a href="#impl-ScriptContext">ScriptContext</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-ExtScriptContext">ExtScriptContext</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="Segwitv0" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Segwitv0</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Segwitv0 {}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Segwitv0 ScriptContext</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSegwitv0%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CSegwitv0%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CSegwitv0%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CSegwitv0%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ScriptContext" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Key" class="type trait-impl has-srclink"><a href="#associatedtype.Key" class="anchor"></a><h4 class="code-header">type <a href="../keys/trait.ScriptContext.html#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div></summary><div class='docblock'><p>The consensus key associated with the type. Must be a parseable key</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_terminal_non_malleable" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_terminal_non_malleable" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on ScriptContext, fragments can be malleable. For Example,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Segwitv0 ScriptContext"><meta name="keywords" content="rust, rustlang, rust-lang, Segwitv0"><title>Segwitv0 in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Segwitv0</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Segwitv0">Clone</a></li><li><a href="#impl-Debug-for-Segwitv0">Debug</a></li><li><a href="#impl-Eq-for-Segwitv0">Eq</a></li><li><a href="#impl-Hash-for-Segwitv0">Hash</a></li><li><a href="#impl-Ord-for-Segwitv0">Ord</a></li><li><a href="#impl-PartialEq%3CSegwitv0%3E-for-Segwitv0">PartialEq<Segwitv0></a></li><li><a href="#impl-PartialOrd%3CSegwitv0%3E-for-Segwitv0">PartialOrd<Segwitv0></a></li><li><a href="#impl-ScriptContext-for-Segwitv0">ScriptContext</a></li><li><a href="#impl-StructuralEq-for-Segwitv0">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Segwitv0">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Segwitv0">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Segwitv0">Send</a></li><li><a href="#impl-Sync-for-Segwitv0">Sync</a></li><li><a href="#impl-Unpin-for-Segwitv0">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Segwitv0">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Segwitv0">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Segwitv0">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Segwitv0">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Segwitv0">CallHasher</a></li><li><a href="#impl-ExtScriptContext-for-Segwitv0">ExtScriptContext</a></li><li><a href="#impl-From%3CT%3E-for-Segwitv0">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Segwitv0">Into<U></a></li><li><a href="#impl-Pointable-for-Segwitv0">Pointable</a></li><li><a href="#impl-ToOwned-for-Segwitv0">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Segwitv0">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Segwitv0">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Segwitv0">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Segwitv0</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Segwitv0 {}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Segwitv0 ScriptContext</p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Segwitv0" class="impl has-srclink"><a href="#impl-Clone-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Segwitv0" class="impl has-srclink"><a href="#impl-Debug-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Segwitv0" class="impl has-srclink"><a href="#impl-Hash-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Segwitv0" class="impl has-srclink"><a href="#impl-Ord-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSegwitv0%3E-for-Segwitv0" class="impl has-srclink"><a href="#impl-PartialEq%3CSegwitv0%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CSegwitv0%3E-for-Segwitv0" class="impl has-srclink"><a href="#impl-PartialOrd%3CSegwitv0%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ScriptContext-for-Segwitv0" class="impl has-srclink"><a href="#impl-ScriptContext-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Key" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key" class="anchor">§</a><h4 class="code-header">type <a href="../keys/trait.ScriptContext.html#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></summary><div class='docblock'>The consensus key associated with the type. Must be a parseable key</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_terminal_non_malleable" class="method trait-impl has-srclink"><a href="#method.check_terminal_non_malleable" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable" class="fn">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on ScriptContext, fragments can be malleable. For Example,
under Legacy context, PkH is malleable because it is possible to
estimate the cost of satisfaction because of compressed keys
This is currently only used in compiler code for removing malleable
compilations.
This does NOT recursively check if the children of the fragment are
valid or not. Since the compilation proceeds in a leaf to root fashion,
-a recursive check is unnecessary. <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_witness" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_witness" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_witness" class="fnname">check_witness</a><Pk>(<br> witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check whether the given satisfaction is valid under the ScriptContext
+a recursive check is unnecessary. <a href="../keys/trait.ScriptContext.html#tymethod.check_terminal_non_malleable">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_witness" class="method trait-impl has-srclink"><a href="#method.check_witness" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_witness" class="fn">check_witness</a><Pk>(<br> witness: &[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>]<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check whether the given satisfaction is valid under the ScriptContext
For example, segwit satisfactions may fail if the witness len is more
-3600 or number of stack elements are more than 100. <a href="../keys/trait.ScriptContext.html#method.check_witness">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_global_consensus_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_consensus_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on script Context, some of the Terminals might not
+3600 or number of stack elements are more than 100. <a href="../keys/trait.ScriptContext.html#method.check_witness">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_consensus_validity" class="method trait-impl has-srclink"><a href="#method.check_global_consensus_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity" class="fn">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on script Context, some of the Terminals might not
be valid under the current consensus rules.
Or some of the script resource limits may have been exceeded.
These miniscripts would never be accepted by the Bitcoin network and hence
uncompressed public keys are non-standard and thus invalid.
In LegacyP2SH context, scripts above 520 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
-This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_local_consensus_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_consensus_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Consensus rules at the Miniscript satisfaction time.
+This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_consensus_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_consensus_validity" class="method trait-impl has-srclink"><a href="#method.check_local_consensus_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity" class="fn">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Consensus rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
-For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_global_policy_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_policy_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on script Context, some of the script resource limits
+For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. <a href="../keys/trait.ScriptContext.html#method.check_local_consensus_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_policy_validity" class="method trait-impl has-srclink"><a href="#method.check_global_policy_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity" class="fn">check_global_policy_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on script Context, some of the script resource limits
may have been exceeded under the current bitcoin core policy rules
These miniscripts would never be accepted by the Bitcoin network and hence
it is safe to discard them. (unless explicitly disabled by non-standard flag)
For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey
scripts over 3600 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
-This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_local_policy_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_policy_validity" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Policy rules at the Miniscript satisfaction time.
+This does <em>NOT</em> recursively check the miniscript fragments. <a href="../keys/trait.ScriptContext.html#method.check_global_policy_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_policy_validity" class="method trait-impl has-srclink"><a href="#method.check_local_policy_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity" class="fn">check_local_policy_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Policy rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
For example, satisfaction path in Legacy context scriptSig more
-than 1650 bytes <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_size" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Depending on script context, the size of a satifaction witness may slightly differ.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.pk_len" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.pk_len" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.pk_len" class="fnname">pk_len</a><Pk>(_pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Get the len of public key when serialized based on context
+than 1650 bytes <a href="../keys/trait.ScriptContext.html#method.check_local_policy_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_size" class="method trait-impl has-srclink"><a href="#method.max_satisfaction_size" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.max_satisfaction_size" class="fn">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Depending on script context, the size of a satifaction witness may slightly differ.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.pk_len" class="method trait-impl has-srclink"><a href="#method.pk_len" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.pk_len" class="fn">pk_len</a><Pk>(_pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Get the len of public key when serialized based on context
Note that this includes the serialization prefix. Returns
34/66 for Bare/Legacy based on key compressedness
-34 for Segwitv0, 33 for Tap <a href="../keys/trait.ScriptContext.html#tymethod.pk_len">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.name_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.name_str" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class='docblock'><p>Local helper function to display error messages with context</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sig_type" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.sig_type" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ScriptContext.html#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div></summary><div class='docblock'><p>The type of signature required for satisfaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_global_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_validity" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_validity" class="fnname">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check the consensus + policy(if not disabled) rules that are not based
-satisfaction <a href="../keys/trait.ScriptContext.html#method.check_global_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_local_validity" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_validity" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_validity" class="fnname">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check the consensus + policy(if not disabled) rules including the
-ones for satisfaction <a href="../keys/trait.ScriptContext.html#method.check_local_validity">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.top_level_type_check" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.top_level_type_check" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_type_check" class="fnname">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check whether the top-level is type B</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.other_top_level_checks" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.other_top_level_checks" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Other top level checks that are context specific</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.top_level_checks" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.top_level_checks" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_checks" class="fnname">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class='docblock'><p>Check top level consensus rules.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ExtScriptContext" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#172-181" title="goto source code">source</a></div><a href="#impl-ExtScriptContext" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="../keys/trait.ExtScriptContext.html" title="trait bdk::keys::ExtScriptContext">ExtScriptContext</a> for Ctx <span class="where fmt-newline">where<br> Ctx: 'static + <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_enum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#173-180" title="goto source code">source</a></div><a href="#method.as_enum" class="anchor"></a><h4 class="code-header">pub fn <a href="../keys/trait.ExtScriptContext.html#tymethod.as_enum" class="fnname">as_enum</a>() -> <a class="enum" href="../keys/enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></div></summary><div class='docblock'><p>Returns the <a href="../keys/trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> as a <a href="../keys/enum.ScriptContextEnum.html" title="ScriptContextEnum"><code>ScriptContextEnum</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_legacy" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#157-159" title="goto source code">source</a></div><a href="#method.is_legacy" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_legacy" class="fnname">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns whether the script context is <a href="enum.Legacy.html"><code>Legacy</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_segwit_v0" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#162-164" title="goto source code">source</a></div><a href="#method.is_segwit_v0" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_segwit_v0" class="fnname">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns whether the script context is <a href="enum.Segwitv0.html"><code>Segwitv0</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_taproot" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#167-169" title="goto source code">source</a></div><a href="#method.is_taproot" class="anchor"></a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_taproot" class="fnname">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns whether the script context is <a href="miniscript::Tap"><code>Tap</code></a>, aka Taproot or Segwit V1</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+34 for Segwitv0, 33 for Tap <a href="../keys/trait.ScriptContext.html#tymethod.pk_len">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.name_str" class="method trait-impl has-srclink"><a href="#method.name_str" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.name_str" class="fn">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><div class='docblock'>Local helper function to display error messages with context</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sig_type" class="method trait-impl has-srclink"><a href="#method.sig_type" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#tymethod.sig_type" class="fn">sig_type</a>() -> SigType</h4></section></summary><div class='docblock'>The type of signature required for satisfaction</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_validity" class="method trait-impl has-srclink"><a href="#method.check_global_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_global_validity" class="fn">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check the consensus + policy(if not disabled) rules that are not based
+satisfaction <a href="../keys/trait.ScriptContext.html#method.check_global_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_validity" class="method trait-impl has-srclink"><a href="#method.check_local_validity" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.check_local_validity" class="fn">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check the consensus + policy(if not disabled) rules including the
+ones for satisfaction <a href="../keys/trait.ScriptContext.html#method.check_local_validity">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_type_check" class="method trait-impl has-srclink"><a href="#method.top_level_type_check" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_type_check" class="fn">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check whether the top-level is type B</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.other_top_level_checks" class="method trait-impl has-srclink"><a href="#method.other_top_level_checks" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.other_top_level_checks" class="fn">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Other top level checks that are context specific</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_checks" class="method trait-impl has-srclink"><a href="#method.top_level_checks" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ScriptContext.html#method.top_level_checks" class="fn">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class='docblock'>Check top level consensus rules.</div></details></div></details><section id="impl-Eq-for-Segwitv0" class="impl has-srclink"><a href="#impl-Eq-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section><section id="impl-StructuralEq-for-Segwitv0" class="impl has-srclink"><a href="#impl-StructuralEq-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section><section id="impl-StructuralPartialEq-for-Segwitv0" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Segwitv0" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section><section id="impl-Send-for-Segwitv0" class="impl has-srclink"><a href="#impl-Send-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section><section id="impl-Sync-for-Segwitv0" class="impl has-srclink"><a href="#impl-Sync-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section><section id="impl-Unpin-for-Segwitv0" class="impl has-srclink"><a href="#impl-Unpin-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section><section id="impl-UnwindSafe-for-Segwitv0" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Segwitv0" class="impl has-srclink"><a href="#impl-CallHasher-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ExtScriptContext-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#172-181">source</a><a href="#impl-ExtScriptContext-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="../keys/trait.ExtScriptContext.html" title="trait bdk::keys::ExtScriptContext">ExtScriptContext</a> for Ctx<span class="where fmt-newline">where<br> Ctx: 'static + <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_enum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#173-180">source</a><a href="#method.as_enum" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#tymethod.as_enum" class="fn">as_enum</a>() -> <a class="enum" href="../keys/enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></section></summary><div class='docblock'>Returns the <a href="../keys/trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> as a <a href="../keys/enum.ScriptContextEnum.html" title="ScriptContextEnum"><code>ScriptContextEnum</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_legacy" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#157-159">source</a><a href="#method.is_legacy" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_legacy" class="fn">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns whether the script context is <a href="enum.Legacy.html"><code>Legacy</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_segwit_v0" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#162-164">source</a><a href="#method.is_segwit_v0" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_segwit_v0" class="fn">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns whether the script context is <a href="enum.Segwitv0.html"><code>Segwitv0</code></a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_taproot" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#167-169">source</a><a href="#method.is_taproot" class="anchor">§</a><h4 class="code-header">fn <a href="../keys/trait.ExtScriptContext.html#method.is_taproot" class="fn">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns whether the script context is <a href="miniscript::Tap"><code>Tap</code></a>, aka Taproot or Segwit V1</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Segwitv0" class="impl has-srclink"><a href="#impl-Pointable-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Segwitv0" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Segwitv0" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Whether a descriptor has a wildcard in it"><meta name="keywords" content="rust, rustlang, rust-lang, Wildcard"><title>Wildcard in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Wildcard</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Hardened">Hardened</a><a href="#variant.None">None</a><a href="#variant.Unhardened">Unhardened</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CWildcard%3E">PartialEq<Wildcard></a><a href="#impl-PartialOrd%3CWildcard%3E">PartialOrd<Wildcard></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="Wildcard" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Wildcard</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Wildcard {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Whether a descriptor has a wildcard in it"><meta name="keywords" content="rust, rustlang, rust-lang, Wildcard"><title>Wildcard in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Wildcard</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Hardened">Hardened</a></li><li><a href="#variant.None">None</a></li><li><a href="#variant.Unhardened">Unhardened</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Wildcard">Clone</a></li><li><a href="#impl-Copy-for-Wildcard">Copy</a></li><li><a href="#impl-Debug-for-Wildcard">Debug</a></li><li><a href="#impl-Eq-for-Wildcard">Eq</a></li><li><a href="#impl-Hash-for-Wildcard">Hash</a></li><li><a href="#impl-Ord-for-Wildcard">Ord</a></li><li><a href="#impl-PartialEq%3CWildcard%3E-for-Wildcard">PartialEq<Wildcard></a></li><li><a href="#impl-PartialOrd%3CWildcard%3E-for-Wildcard">PartialOrd<Wildcard></a></li><li><a href="#impl-StructuralEq-for-Wildcard">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Wildcard">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Wildcard">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Wildcard">Send</a></li><li><a href="#impl-Sync-for-Wildcard">Sync</a></li><li><a href="#impl-Unpin-for-Wildcard">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Wildcard">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Wildcard">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Wildcard">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Wildcard">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Wildcard">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-Wildcard">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Wildcard">Into<U></a></li><li><a href="#impl-Pointable-for-Wildcard">Pointable</a></li><li><a href="#impl-ToOwned-for-Wildcard">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Wildcard">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Wildcard">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Wildcard">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="enum" href="#">Wildcard</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Wildcard {
None,
Unhardened,
Hardened,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Whether a descriptor has a wildcard in it</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.None" class="variant small-section-header"><a href="#variant.None" class="anchor field"></a><code>None</code></h3><div class="docblock"><p>No wildcard</p>
-</div><h3 id="variant.Unhardened" class="variant small-section-header"><a href="#variant.Unhardened" class="anchor field"></a><code>Unhardened</code></h3><div class="docblock"><p>Unhardened wildcard, e.g. *</p>
-</div><h3 id="variant.Hardened" class="variant small-section-header"><a href="#variant.Hardened" class="anchor field"></a><code>Hardened</code></h3><div class="docblock"><p>Unhardened wildcard, e.g. *h</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CWildcard%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CWildcard%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CWildcard%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CWildcard%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.None" class="variant"><a href="#variant.None" class="anchor">§</a><h3 class="code-header">None</h3></section><div class="docblock"><p>No wildcard</p>
+</div><section id="variant.Unhardened" class="variant"><a href="#variant.Unhardened" class="anchor">§</a><h3 class="code-header">Unhardened</h3></section><div class="docblock"><p>Unhardened wildcard, e.g. *</p>
+</div><section id="variant.Hardened" class="variant"><a href="#variant.Hardened" class="anchor">§</a><h3 class="code-header">Hardened</h3></section><div class="docblock"><p>Unhardened wildcard, e.g. *h</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Wildcard" class="impl has-srclink"><a href="#impl-Clone-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Wildcard" class="impl has-srclink"><a href="#impl-Debug-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Wildcard" class="impl has-srclink"><a href="#impl-Hash-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Wildcard" class="impl has-srclink"><a href="#impl-Ord-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CWildcard%3E-for-Wildcard" class="impl has-srclink"><a href="#impl-PartialEq%3CWildcard%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CWildcard%3E-for-Wildcard" class="impl has-srclink"><a href="#impl-PartialOrd%3CWildcard%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Copy-for-Wildcard" class="impl has-srclink"><a href="#impl-Copy-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-Eq-for-Wildcard" class="impl has-srclink"><a href="#impl-Eq-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-StructuralEq-for-Wildcard" class="impl has-srclink"><a href="#impl-StructuralEq-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-StructuralPartialEq-for-Wildcard" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Wildcard" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-Send-for-Wildcard" class="impl has-srclink"><a href="#impl-Send-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-Sync-for-Wildcard" class="impl has-srclink"><a href="#impl-Sync-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-Unpin-for-Wildcard" class="impl has-srclink"><a href="#impl-Unpin-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section><section id="impl-UnwindSafe-for-Wildcard" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Wildcard" class="impl has-srclink"><a href="#impl-CallHasher-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Wildcard" class="impl has-srclink"><a href="#impl-Pointable-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Wildcard" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Wildcard" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Wildcard" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors related to the parsing and usage of descriptors"><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in bdk::descriptor::error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Base58">Base58</a><a href="#variant.Bip32">Bip32</a><a href="#variant.HardenedDerivationXpub">HardenedDerivationXpub</a><a href="#variant.Hex">Hex</a><a href="#variant.InvalidDescriptorCharacter">InvalidDescriptorCharacter</a><a href="#variant.InvalidDescriptorChecksum">InvalidDescriptorChecksum</a><a href="#variant.InvalidHdKeyPath">InvalidHdKeyPath</a><a href="#variant.Key">Key</a><a href="#variant.Miniscript">Miniscript</a><a href="#variant.Pk">Pk</a><a href="#variant.Policy">Policy</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Error">Error</a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CKeyError%3E">From<KeyError></a><a href="#impl-From%3CPolicyError%3E">From<PolicyError></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">error</a></h2><div id="sidebar-vars" data-name="Error" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">error</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#16-42" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Error {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors related to the parsing and usage of descriptors"><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in bdk::descriptor::error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Base58">Base58</a></li><li><a href="#variant.Bip32">Bip32</a></li><li><a href="#variant.HardenedDerivationXpub">HardenedDerivationXpub</a></li><li><a href="#variant.Hex">Hex</a></li><li><a href="#variant.InvalidDescriptorCharacter">InvalidDescriptorCharacter</a></li><li><a href="#variant.InvalidDescriptorChecksum">InvalidDescriptorChecksum</a></li><li><a href="#variant.InvalidHdKeyPath">InvalidHdKeyPath</a></li><li><a href="#variant.Key">Key</a></li><li><a href="#variant.Miniscript">Miniscript</a></li><li><a href="#variant.Pk">Pk</a></li><li><a href="#variant.Policy">Policy</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CError%3E-for-Error">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-1">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-2">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-3">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-4">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-5">From<Error></a></li><li><a href="#impl-From%3CKeyError%3E-for-Error">From<KeyError></a></li><li><a href="#impl-From%3CPolicyError%3E-for-Error">From<PolicyError></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Error">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Error">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Error">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Error">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Error">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Error">Into<U></a></li><li><a href="#impl-Pointable-for-Error">Pointable</a></li><li><a href="#impl-Provider-for-Error">Provider</a></li><li><a href="#impl-ToString-for-Error">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Error">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Error">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Error">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::error</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">error</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#16-42">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Error {
InvalidHdKeyPath,
InvalidDescriptorChecksum,
HardenedDerivationXpub,
Miniscript(Error),
Hex(Error),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Errors related to the parsing and usage of descriptors</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.InvalidHdKeyPath" class="variant small-section-header"><a href="#variant.InvalidHdKeyPath" class="anchor field"></a><code>InvalidHdKeyPath</code></h3><div class="docblock"><p>Invalid HD Key path, such as having a wildcard but a length != 1</p>
-</div><h3 id="variant.InvalidDescriptorChecksum" class="variant small-section-header"><a href="#variant.InvalidDescriptorChecksum" class="anchor field"></a><code>InvalidDescriptorChecksum</code></h3><div class="docblock"><p>The provided descriptor doesn’t match its checksum</p>
-</div><h3 id="variant.HardenedDerivationXpub" class="variant small-section-header"><a href="#variant.HardenedDerivationXpub" class="anchor field"></a><code>HardenedDerivationXpub</code></h3><div class="docblock"><p>The descriptor contains hardened derivation steps on public extended keys</p>
-</div><h3 id="variant.Key" class="variant small-section-header"><a href="#variant.Key" class="anchor field"></a><code>Key(<a class="enum" href="../../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>)</code></h3><div class="docblock"><p>Error thrown while working with <a href="../../keys/index.html"><code>keys</code></a></p>
-</div><h3 id="variant.Policy" class="variant small-section-header"><a href="#variant.Policy" class="anchor field"></a><code>Policy(<a class="enum" href="../policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>)</code></h3><div class="docblock"><p>Error while extracting and manipulating policies</p>
-</div><h3 id="variant.InvalidDescriptorCharacter" class="variant small-section-header"><a href="#variant.InvalidDescriptorCharacter" class="anchor field"></a><code>InvalidDescriptorCharacter(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>)</code></h3><div class="docblock"><p>Invalid byte found in the descriptor checksum</p>
-</div><h3 id="variant.Bip32" class="variant small-section-header"><a href="#variant.Bip32" class="anchor field"></a><code>Bip32(Error)</code></h3><div class="docblock"><p>BIP32 error</p>
-</div><h3 id="variant.Base58" class="variant small-section-header"><a href="#variant.Base58" class="anchor field"></a><code>Base58(Error)</code></h3><div class="docblock"><p>Error during base58 decoding</p>
-</div><h3 id="variant.Pk" class="variant small-section-header"><a href="#variant.Pk" class="anchor field"></a><code>Pk(Error)</code></h3><div class="docblock"><p>Key-related error</p>
-</div><h3 id="variant.Miniscript" class="variant small-section-header"><a href="#variant.Miniscript" class="anchor field"></a><code>Miniscript(Error)</code></h3><div class="docblock"><p>Miniscript error</p>
-</div><h3 id="variant.Hex" class="variant small-section-header"><a href="#variant.Hex" class="anchor field"></a><code>Hex(Error)</code></h3><div class="docblock"><p>Hex decoding error</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#15" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#15" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#54-58" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#55-57" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#60" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#191" title="goto source code">source</a></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#191" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#62" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#62" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#63" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#63" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#64" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#64" title="goto source code">source</a></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#65" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-5" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#65" title="goto source code">source</a></div><a href="#method.from-5" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-5" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#66" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-5" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-6" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#66" title="goto source code">source</a></div><a href="#method.from-6" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CKeyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#44-52" title="goto source code">source</a></div><a href="#impl-From%3CKeyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#45-51" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(key_error: <a class="enum" href="../../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CPolicyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#67" title="goto source code">source</a></div><a href="#impl-From%3CPolicyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-7" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#67" title="goto source code">source</a></div><a href="#method.from-7" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="../policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-8" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-8" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.InvalidHdKeyPath" class="variant"><a href="#variant.InvalidHdKeyPath" class="anchor">§</a><h3 class="code-header">InvalidHdKeyPath</h3></section><div class="docblock"><p>Invalid HD Key path, such as having a wildcard but a length != 1</p>
+</div><section id="variant.InvalidDescriptorChecksum" class="variant"><a href="#variant.InvalidDescriptorChecksum" class="anchor">§</a><h3 class="code-header">InvalidDescriptorChecksum</h3></section><div class="docblock"><p>The provided descriptor doesn’t match its checksum</p>
+</div><section id="variant.HardenedDerivationXpub" class="variant"><a href="#variant.HardenedDerivationXpub" class="anchor">§</a><h3 class="code-header">HardenedDerivationXpub</h3></section><div class="docblock"><p>The descriptor contains hardened derivation steps on public extended keys</p>
+</div><section id="variant.Key" class="variant"><a href="#variant.Key" class="anchor">§</a><h3 class="code-header">Key(<a class="enum" href="../../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>)</h3></section><div class="docblock"><p>Error thrown while working with <a href="../../keys/index.html"><code>keys</code></a></p>
+</div><section id="variant.Policy" class="variant"><a href="#variant.Policy" class="anchor">§</a><h3 class="code-header">Policy(<a class="enum" href="../policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>)</h3></section><div class="docblock"><p>Error while extracting and manipulating policies</p>
+</div><section id="variant.InvalidDescriptorCharacter" class="variant"><a href="#variant.InvalidDescriptorCharacter" class="anchor">§</a><h3 class="code-header">InvalidDescriptorCharacter(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>)</h3></section><div class="docblock"><p>Invalid byte found in the descriptor checksum</p>
+</div><section id="variant.Bip32" class="variant"><a href="#variant.Bip32" class="anchor">§</a><h3 class="code-header">Bip32(Error)</h3></section><div class="docblock"><p>BIP32 error</p>
+</div><section id="variant.Base58" class="variant"><a href="#variant.Base58" class="anchor">§</a><h3 class="code-header">Base58(Error)</h3></section><div class="docblock"><p>Error during base58 decoding</p>
+</div><section id="variant.Pk" class="variant"><a href="#variant.Pk" class="anchor">§</a><h3 class="code-header">Pk(Error)</h3></section><div class="docblock"><p>Key-related error</p>
+</div><section id="variant.Miniscript" class="variant"><a href="#variant.Miniscript" class="anchor">§</a><h3 class="code-header">Miniscript(Error)</h3></section><div class="docblock"><p>Miniscript error</p>
+</div><section id="variant.Hex" class="variant"><a href="#variant.Hex" class="anchor">§</a><h3 class="code-header">Hex(Error)</h3></section><div class="docblock"><p>Hex decoding error</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#15">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#15">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#54-58">source</a><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#55-57">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#60">source</a><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#191">source</a><a href="#impl-From%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#191">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-1" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#62">source</a><a href="#impl-From%3CError%3E-for-Error-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#62">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-2" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#63">source</a><a href="#impl-From%3CError%3E-for-Error-2" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#63">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-3" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#64">source</a><a href="#impl-From%3CError%3E-for-Error-3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#64">source</a><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-4" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#65">source</a><a href="#impl-From%3CError%3E-for-Error-4" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-5" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#65">source</a><a href="#method.from-5" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-5" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#66">source</a><a href="#impl-From%3CError%3E-for-Error-5" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-6" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#66">source</a><a href="#method.from-6" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CKeyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#44-52">source</a><a href="#impl-From%3CKeyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#45-51">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(key_error: <a class="enum" href="../../keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CPolicyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#67">source</a><a href="#impl-From%3CPolicyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-7" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#67">source</a><a href="#method.from-7" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="../policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl has-srclink"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl has-srclink"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl has-srclink"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-8" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-8" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Error" class="impl has-srclink"><a href="#impl-Pointable-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-Error" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Error" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor errors"><meta name="keywords" content="rust, rustlang, rust-lang, error"><title>bdk::descriptor::error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module error</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#enums">Enums</a></li></ul></div><div id="sidebar-vars" data-name="error" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#12-67" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor errors</p>
-</div></details><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Error.html" title="bdk::descriptor::error::Error enum">Error</a></div><div class="item-right docblock-short"><p>Errors related to the parsing and usage of descriptors</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor errors"><meta name="keywords" content="rust, rustlang, rust-lang, error"><title>bdk::descriptor::error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module error</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#12-67">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor errors</p>
+</div></details><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Error.html" title="bdk::descriptor::error::Error enum">Error</a></div><div class="item-right docblock-short">Errors related to the parsing and usage of descriptors</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Error","Errors related to the parsing and usage of descriptors"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Error","Errors related to the parsing and usage of descriptors"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptors"><meta name="keywords" content="rust, rustlang, rust-lang, descriptor"><title>bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module descriptor</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="descriptor" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#12-888" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptors</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptors"><meta name="keywords" content="rust, rustlang, rust-lang, descriptor"><title>bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module descriptor</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#12-888">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptors</p>
<p>This module contains generic utilities to work with descriptors, plus some re-exported types
from [<code>miniscript</code>].</p>
-</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left import-item"><code>pub use self::checksum::<a class="fn" href="checksum/fn.calc_checksum.html" title="fn bdk::descriptor::checksum::calc_checksum">calc_checksum</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::error::<a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a> as DescriptorError;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use self::policy::<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>;</code></div><div class="item-right docblock-short"></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="checksum/index.html" title="bdk::descriptor::checksum mod">checksum</a></div><div class="item-right docblock-short"><p>Descriptor checksum</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="error/index.html" title="bdk::descriptor::error mod">error</a></div><div class="item-right docblock-short"><p>Descriptor errors</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="policy/index.html" title="bdk::descriptor::policy mod">policy</a></div><div class="item-right docblock-short"><p>Descriptor policy</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="template/index.html" title="bdk::descriptor::template mod">template</a></div><div class="item-right docblock-short"><p>Descriptor templates</p>
-</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.DescriptorXKey.html" title="bdk::descriptor::DescriptorXKey struct">DescriptorXKey</a></div><div class="item-right docblock-short"><p>An extended key with origin, derivation path, and wildcard.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Miniscript.html" title="bdk::descriptor::Miniscript struct">Miniscript</a></div><div class="item-right docblock-short"><p>Top-level script AST type</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Descriptor.html" title="bdk::descriptor::Descriptor enum">Descriptor</a></div><div class="item-right docblock-short"><p>Script descriptor</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorPublicKey.html" title="bdk::descriptor::DescriptorPublicKey enum">DescriptorPublicKey</a></div><div class="item-right docblock-short"><p>The descriptor pubkey, either a single pubkey or an xpub.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Legacy.html" title="bdk::descriptor::Legacy enum">Legacy</a></div><div class="item-right docblock-short"><p>Legacy ScriptContext
+</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2><div class="item-table"><div class="item-row"><div class="item-left import-item" id="reexport.calc_checksum"><code>pub use self::checksum::<a class="fn" href="checksum/fn.calc_checksum.html" title="fn bdk::descriptor::checksum::calc_checksum">calc_checksum</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.DescriptorError"><code>pub use self::error::<a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a> as DescriptorError;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.Policy"><code>pub use self::policy::<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>;</code></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="checksum/index.html" title="bdk::descriptor::checksum mod">checksum</a></div><div class="item-right docblock-short">Descriptor checksum</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="error/index.html" title="bdk::descriptor::error mod">error</a></div><div class="item-right docblock-short">Descriptor errors</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="policy/index.html" title="bdk::descriptor::policy mod">policy</a></div><div class="item-right docblock-short">Descriptor policy</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="template/index.html" title="bdk::descriptor::template mod">template</a></div><div class="item-right docblock-short">Descriptor templates</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.DescriptorXKey.html" title="bdk::descriptor::DescriptorXKey struct">DescriptorXKey</a></div><div class="item-right docblock-short">An extended key with origin, derivation path, and wildcard.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Miniscript.html" title="bdk::descriptor::Miniscript struct">Miniscript</a></div><div class="item-right docblock-short">Top-level script AST type</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Descriptor.html" title="bdk::descriptor::Descriptor enum">Descriptor</a></div><div class="item-right docblock-short">Script descriptor</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorPublicKey.html" title="bdk::descriptor::DescriptorPublicKey enum">DescriptorPublicKey</a></div><div class="item-right docblock-short">The descriptor pubkey, either a single pubkey or an xpub.</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Legacy.html" title="bdk::descriptor::Legacy enum">Legacy</a></div><div class="item-right docblock-short">Legacy ScriptContext
To be used as P2SH scripts
For creation of Bare scriptpubkeys, construct the Miniscript
-under <code>Bare</code> ScriptContext</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Segwitv0.html" title="bdk::descriptor::Segwitv0 enum">Segwitv0</a></div><div class="item-right docblock-short"><p>Segwitv0 ScriptContext</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Wildcard.html" title="bdk::descriptor::Wildcard enum">Wildcard</a></div><div class="item-right docblock-short"><p>Whether a descriptor has a wildcard in it</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ExtractPolicy.html" title="bdk::descriptor::ExtractPolicy trait">ExtractPolicy</a></div><div class="item-right docblock-short"><p>Trait implemented on <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a>s to add a method to extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.IntoWalletDescriptor.html" title="bdk::descriptor::IntoWalletDescriptor trait">IntoWalletDescriptor</a></div><div class="item-right docblock-short"><p>Trait for types which can be converted into an <a href="type.ExtendedDescriptor.html" title="ExtendedDescriptor"><code>ExtendedDescriptor</code></a> and a <a href="../keys/type.KeyMap.html" title="KeyMap"><code>KeyMap</code></a> usable by a wallet in a specific [<code>Network</code>]</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ScriptContext.html" title="bdk::descriptor::ScriptContext trait">ScriptContext</a></div><div class="item-right docblock-short"><p>The ScriptContext for Miniscript. Additional type information associated with
+under <code>Bare</code> ScriptContext</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Segwitv0.html" title="bdk::descriptor::Segwitv0 enum">Segwitv0</a></div><div class="item-right docblock-short">Segwitv0 ScriptContext</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Wildcard.html" title="bdk::descriptor::Wildcard enum">Wildcard</a></div><div class="item-right docblock-short">Whether a descriptor has a wildcard in it</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ExtractPolicy.html" title="bdk::descriptor::ExtractPolicy trait">ExtractPolicy</a></div><div class="item-right docblock-short">Trait implemented on <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a>s to add a method to extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.IntoWalletDescriptor.html" title="bdk::descriptor::IntoWalletDescriptor trait">IntoWalletDescriptor</a></div><div class="item-right docblock-short">Trait for types which can be converted into an <a href="type.ExtendedDescriptor.html" title="ExtendedDescriptor"><code>ExtendedDescriptor</code></a> and a <a href="../keys/type.KeyMap.html" title="KeyMap"><code>KeyMap</code></a> usable by a wallet in a specific [<code>Network</code>]</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ScriptContext.html" title="bdk::descriptor::ScriptContext trait">ScriptContext</a></div><div class="item-right docblock-short">The ScriptContext for Miniscript. Additional type information associated with
miniscript that is used for carrying out checks that dependent on the
context under which the script is used.
-For example, disallowing uncompressed keys in Segwit context</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.DerivedDescriptor.html" title="bdk::descriptor::DerivedDescriptor type">DerivedDescriptor</a></div><div class="item-right docblock-short"><p>Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that contains extended <strong>derived</strong> keys</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ExtendedDescriptor.html" title="bdk::descriptor::ExtendedDescriptor type">ExtendedDescriptor</a></div><div class="item-right docblock-short"><p>Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that can contain extended keys using <a href="../keys/enum.DescriptorPublicKey.html" title="DescriptorPublicKey"><code>DescriptorPublicKey</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.HdKeyPaths.html" title="bdk::descriptor::HdKeyPaths type">HdKeyPaths</a></div><div class="item-right docblock-short"><p>Alias for the type of maps that represent derivation paths in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
-<a href="bitcoin::util::psbt::Output"><code>psbt::Output</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.KeyMap.html" title="bdk::descriptor::KeyMap type">KeyMap</a></div><div class="item-right docblock-short"><p>Alias type for a map of public key to secret key</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.TapKeyOrigins.html" title="bdk::descriptor::TapKeyOrigins type">TapKeyOrigins</a></div><div class="item-right docblock-short"><p>Alias for the type of maps that represent taproot key origins in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
-<a href="bitcoin::util::psbt::Output"><code>psbt::Output</code></a></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+For example, disallowing uncompressed keys in Segwit context</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.DerivedDescriptor.html" title="bdk::descriptor::DerivedDescriptor type">DerivedDescriptor</a></div><div class="item-right docblock-short">Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that contains extended <strong>derived</strong> keys</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ExtendedDescriptor.html" title="bdk::descriptor::ExtendedDescriptor type">ExtendedDescriptor</a></div><div class="item-right docblock-short">Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that can contain extended keys using <a href="../keys/enum.DescriptorPublicKey.html" title="DescriptorPublicKey"><code>DescriptorPublicKey</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.HdKeyPaths.html" title="bdk::descriptor::HdKeyPaths type">HdKeyPaths</a></div><div class="item-right docblock-short">Alias for the type of maps that represent derivation paths in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
+<a href="bitcoin::util::psbt::Output"><code>psbt::Output</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.KeyMap.html" title="bdk::descriptor::KeyMap type">KeyMap</a></div><div class="item-right docblock-short">Alias type for a map of public key to secret key</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.TapKeyOrigins.html" title="bdk::descriptor::TapKeyOrigins type">TapKeyOrigins</a></div><div class="item-right docblock-short">Alias for the type of maps that represent taproot key origins in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
+<a href="bitcoin::util::psbt::Output"><code>psbt::Output</code></a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options to build the satisfaction field in the policy"><meta name="keywords" content="rust, rustlang, rust-lang, BuildSatisfaction"><title>BuildSatisfaction in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BuildSatisfaction</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.None">None</a><a href="#variant.Psbt">Psbt</a><a href="#variant.PsbtTimelocks">PsbtTimelocks</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="BuildSatisfaction" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">BuildSatisfaction</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1024-1039" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum BuildSatisfaction<'a> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options to build the satisfaction field in the policy"><meta name="keywords" content="rust, rustlang, rust-lang, BuildSatisfaction"><title>BuildSatisfaction in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BuildSatisfaction</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.None">None</a></li><li><a href="#variant.Psbt">Psbt</a></li><li><a href="#variant.PsbtTimelocks">PsbtTimelocks</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-BuildSatisfaction%3C%27a%3E">Clone</a></li><li><a href="#impl-Copy-for-BuildSatisfaction%3C%27a%3E">Copy</a></li><li><a href="#impl-Debug-for-BuildSatisfaction%3C%27a%3E">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-BuildSatisfaction%3C%27a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-BuildSatisfaction%3C%27a%3E">Send</a></li><li><a href="#impl-Sync-for-BuildSatisfaction%3C%27a%3E">Sync</a></li><li><a href="#impl-Unpin-for-BuildSatisfaction%3C%27a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-BuildSatisfaction%3C%27a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-BuildSatisfaction%3C%27a%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-BuildSatisfaction%3C%27a%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-BuildSatisfaction%3C%27a%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-BuildSatisfaction%3C%27a%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-BuildSatisfaction%3C%27a%3E">Into<U></a></li><li><a href="#impl-Pointable-for-BuildSatisfaction%3C%27a%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-BuildSatisfaction%3C%27a%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-BuildSatisfaction%3C%27a%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-BuildSatisfaction%3C%27a%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-BuildSatisfaction%3C%27a%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">BuildSatisfaction</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1024-1039">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum BuildSatisfaction<'a> {
None,
Psbt(&'a Psbt),
PsbtTimelocks {
input_max_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
},
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Options to build the satisfaction field in the policy</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.None" class="variant small-section-header"><a href="#variant.None" class="anchor field"></a><code>None</code></h3><div class="docblock"><p>Don’t generate <code>satisfaction</code> field</p>
-</div><h3 id="variant.Psbt" class="variant small-section-header"><a href="#variant.Psbt" class="anchor field"></a><code>Psbt(&'a Psbt)</code></h3><div class="docblock"><p>Analyze the given PSBT to check for existing signatures</p>
-</div><h3 id="variant.PsbtTimelocks" class="variant small-section-header"><a href="#variant.PsbtTimelocks" class="anchor field"></a><code>PsbtTimelocks</code></h3><div class="sub-variant" id="variant.PsbtTimelocks.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PsbtTimelocks.field.psbt" class="variant small-section-header"><a href="#variant.PsbtTimelocks.field.psbt" class="anchor field"></a><code>psbt: &'a Psbt</code></span><div class="docblock"><p>Given PSBT</p>
-</div></div><div class="sub-variant-field"><span id="variant.PsbtTimelocks.field.current_height" class="variant small-section-header"><a href="#variant.PsbtTimelocks.field.current_height" class="anchor field"></a><code>current_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Current blockchain height</p>
-</div></div><div class="sub-variant-field"><span id="variant.PsbtTimelocks.field.input_max_height" class="variant small-section-header"><a href="#variant.PsbtTimelocks.field.input_max_height" class="anchor field"></a><code>input_max_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>The highest confirmation height between the inputs
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.None" class="variant"><a href="#variant.None" class="anchor">§</a><h3 class="code-header">None</h3></section><div class="docblock"><p>Don’t generate <code>satisfaction</code> field</p>
+</div><section id="variant.Psbt" class="variant"><a href="#variant.Psbt" class="anchor">§</a><h3 class="code-header">Psbt(&'a Psbt)</h3></section><div class="docblock"><p>Analyze the given PSBT to check for existing signatures</p>
+</div><section id="variant.PsbtTimelocks" class="variant"><a href="#variant.PsbtTimelocks" class="anchor">§</a><h3 class="code-header">PsbtTimelocks</h3></section><div class="sub-variant" id="variant.PsbtTimelocks.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PsbtTimelocks.field.psbt" class="small-section-header"><a href="#variant.PsbtTimelocks.field.psbt" class="anchor field">§</a><code>psbt: &'a Psbt</code></span><div class="docblock"><p>Given PSBT</p>
+</div></div><div class="sub-variant-field"><span id="variant.PsbtTimelocks.field.current_height" class="small-section-header"><a href="#variant.PsbtTimelocks.field.current_height" class="anchor field">§</a><code>current_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Current blockchain height</p>
+</div></div><div class="sub-variant-field"><span id="variant.PsbtTimelocks.field.input_max_height" class="small-section-header"><a href="#variant.PsbtTimelocks.field.input_max_height" class="anchor field">§</a><code>input_max_height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>The highest confirmation height between the inputs
CSV should consider different inputs, but we consider the worst condition for the tx as whole</p>
</div></div></div><div class="docblock"><p>Like <code>Psbt</code> variant and also check for expired timelocks</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1023" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1023" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1023" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1023" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#1023" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#1023">source</a><a href="#impl-Clone-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#1023">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#1023">source</a><a href="#impl-Debug-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#1023">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><section id="impl-Copy-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#1023">source</a><a href="#impl-Copy-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section><section id="impl-Send-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-Send-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section><section id="impl-Sync-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-Sync-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section><section id="impl-Unpin-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-Unpin-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section><section id="impl-UnwindSafe-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-Pointable-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-BuildSatisfaction%3C%27a%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-BuildSatisfaction%3C%27a%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A unique identifier for a key"><meta name="keywords" content="rust, rustlang, rust-lang, PkOrF"><title>PkOrF in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">PkOrF</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Fingerprint">Fingerprint</a><a href="#variant.Pubkey">Pubkey</a><a href="#variant.XOnlyPubkey">XOnlyPubkey</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-PartialEq%3CPkOrF%3E">PartialEq<PkOrF></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="PkOrF" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">PkOrF</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#75-82" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum PkOrF {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A unique identifier for a key"><meta name="keywords" content="rust, rustlang, rust-lang, PkOrF"><title>PkOrF in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">PkOrF</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Fingerprint">Fingerprint</a></li><li><a href="#variant.Pubkey">Pubkey</a></li><li><a href="#variant.XOnlyPubkey">XOnlyPubkey</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-PkOrF">Clone</a></li><li><a href="#impl-Debug-for-PkOrF">Debug</a></li><li><a href="#impl-Eq-for-PkOrF">Eq</a></li><li><a href="#impl-Hash-for-PkOrF">Hash</a></li><li><a href="#impl-PartialEq%3CPkOrF%3E-for-PkOrF">PartialEq<PkOrF></a></li><li><a href="#impl-Serialize-for-PkOrF">Serialize</a></li><li><a href="#impl-StructuralEq-for-PkOrF">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-PkOrF">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-PkOrF">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PkOrF">Send</a></li><li><a href="#impl-Sync-for-PkOrF">Sync</a></li><li><a href="#impl-Unpin-for-PkOrF">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PkOrF">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-PkOrF">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-PkOrF">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-PkOrF">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-PkOrF">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-PkOrF">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-PkOrF">Into<U></a></li><li><a href="#impl-Pointable-for-PkOrF">Pointable</a></li><li><a href="#impl-ToOwned-for-PkOrF">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-PkOrF">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-PkOrF">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-PkOrF">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">PkOrF</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#75-82">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum PkOrF {
Pubkey(PublicKey),
XOnlyPubkey(XOnlyPublicKey),
Fingerprint(Fingerprint),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A unique identifier for a key</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Pubkey" class="variant small-section-header"><a href="#variant.Pubkey" class="anchor field"></a><code>Pubkey(PublicKey)</code></h3><div class="docblock"><p>A legacy public key</p>
-</div><h3 id="variant.XOnlyPubkey" class="variant small-section-header"><a href="#variant.XOnlyPubkey" class="anchor field"></a><code>XOnlyPubkey(XOnlyPublicKey)</code></h3><div class="docblock"><p>A x-only public key</p>
-</div><h3 id="variant.Fingerprint" class="variant small-section-header"><a href="#variant.Fingerprint" class="anchor field"></a><code>Fingerprint(Fingerprint)</code></h3><div class="docblock"><p>An extended key fingerprint</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CPkOrF%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-PartialEq%3CPkOrF%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#73" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Pubkey" class="variant"><a href="#variant.Pubkey" class="anchor">§</a><h3 class="code-header">Pubkey(PublicKey)</h3></section><div class="docblock"><p>A legacy public key</p>
+</div><section id="variant.XOnlyPubkey" class="variant"><a href="#variant.XOnlyPubkey" class="anchor">§</a><h3 class="code-header">XOnlyPubkey(XOnlyPublicKey)</h3></section><div class="docblock"><p>A x-only public key</p>
+</div><section id="variant.Fingerprint" class="variant"><a href="#variant.Fingerprint" class="anchor">§</a><h3 class="code-header">Fingerprint(Fingerprint)</h3></section><div class="docblock"><p>An extended key fingerprint</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-Clone-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-Debug-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-Hash-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CPkOrF%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-PartialEq%3CPkOrF%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-Serialize-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-Eq-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section><section id="impl-StructuralEq-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-StructuralEq-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section><section id="impl-StructuralPartialEq-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#73">source</a><a href="#impl-StructuralPartialEq-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-PkOrF" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section><section id="impl-Send-for-PkOrF" class="impl has-srclink"><a href="#impl-Send-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section><section id="impl-Sync-for-PkOrF" class="impl has-srclink"><a href="#impl-Sync-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section><section id="impl-Unpin-for-PkOrF" class="impl has-srclink"><a href="#impl-Unpin-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section><section id="impl-UnwindSafe-for-PkOrF" class="impl has-srclink"><a href="#impl-UnwindSafe-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-PkOrF" class="impl has-srclink"><a href="#impl-CallHasher-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-PkOrF" class="impl has-srclink"><a href="#impl-Pointable-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-PkOrF" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-PkOrF" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-PkOrF" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors that can happen while extracting and manipulating policies"><meta name="keywords" content="rust, rustlang, rust-lang, PolicyError"><title>PolicyError in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">PolicyError</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.AddOnLeaf">AddOnLeaf</a><a href="#variant.AddOnPartialComplete">AddOnPartialComplete</a><a href="#variant.IncompatibleConditions">IncompatibleConditions</a><a href="#variant.IndexOutOfRange">IndexOutOfRange</a><a href="#variant.MixedTimelockUnits">MixedTimelockUnits</a><a href="#variant.NotEnoughItemsSelected">NotEnoughItemsSelected</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-Error">Error</a><a href="#impl-From%3CPolicyError%3E">From<PolicyError></a><a href="#impl-PartialEq%3CPolicyError%3E">PartialEq<PolicyError></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="PolicyError" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">PolicyError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#498-511" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum PolicyError {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors that can happen while extracting and manipulating policies"><meta name="keywords" content="rust, rustlang, rust-lang, PolicyError"><title>PolicyError in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">PolicyError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.AddOnLeaf">AddOnLeaf</a></li><li><a href="#variant.AddOnPartialComplete">AddOnPartialComplete</a></li><li><a href="#variant.IncompatibleConditions">IncompatibleConditions</a></li><li><a href="#variant.IndexOutOfRange">IndexOutOfRange</a></li><li><a href="#variant.MixedTimelockUnits">MixedTimelockUnits</a></li><li><a href="#variant.NotEnoughItemsSelected">NotEnoughItemsSelected</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-PolicyError">Debug</a></li><li><a href="#impl-Display-for-PolicyError">Display</a></li><li><a href="#impl-Eq-for-PolicyError">Eq</a></li><li><a href="#impl-Error-for-PolicyError">Error</a></li><li><a href="#impl-From%3CPolicyError%3E-for-Error">From<PolicyError></a></li><li><a href="#impl-From%3CPolicyError%3E-for-Error-1">From<PolicyError></a></li><li><a href="#impl-PartialEq%3CPolicyError%3E-for-PolicyError">PartialEq<PolicyError></a></li><li><a href="#impl-StructuralEq-for-PolicyError">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-PolicyError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-PolicyError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PolicyError">Send</a></li><li><a href="#impl-Sync-for-PolicyError">Sync</a></li><li><a href="#impl-Unpin-for-PolicyError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PolicyError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-PolicyError">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-PolicyError">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-PolicyError">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-PolicyError">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-PolicyError">Into<U></a></li><li><a href="#impl-Pointable-for-PolicyError">Pointable</a></li><li><a href="#impl-Provider-for-PolicyError">Provider</a></li><li><a href="#impl-ToString-for-PolicyError">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-PolicyError">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-PolicyError">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-PolicyError">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">PolicyError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#498-511">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum PolicyError {
NotEnoughItemsSelected(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>),
IndexOutOfRange(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>),
AddOnLeaf,
MixedTimelockUnits,
IncompatibleConditions,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Errors that can happen while extracting and manipulating policies</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.NotEnoughItemsSelected" class="variant small-section-header"><a href="#variant.NotEnoughItemsSelected" class="anchor field"></a><code>NotEnoughItemsSelected(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</code></h3><div class="docblock"><p>Not enough items are selected to satisfy a <a href="enum.SatisfiableItem.html#variant.Thresh" title="SatisfiableItem::Thresh"><code>SatisfiableItem::Thresh</code></a> or a <a href="enum.SatisfiableItem.html#variant.Multisig" title="SatisfiableItem::Multisig"><code>SatisfiableItem::Multisig</code></a></p>
-</div><h3 id="variant.IndexOutOfRange" class="variant small-section-header"><a href="#variant.IndexOutOfRange" class="anchor field"></a><code>IndexOutOfRange(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</code></h3><div class="docblock"><p>Index out of range for an item to satisfy a <a href="enum.SatisfiableItem.html#variant.Thresh" title="SatisfiableItem::Thresh"><code>SatisfiableItem::Thresh</code></a> or a <a href="enum.SatisfiableItem.html#variant.Multisig" title="SatisfiableItem::Multisig"><code>SatisfiableItem::Multisig</code></a></p>
-</div><h3 id="variant.AddOnLeaf" class="variant small-section-header"><a href="#variant.AddOnLeaf" class="anchor field"></a><code>AddOnLeaf</code></h3><div class="docblock"><p>Can not add to an item that is <a href="enum.Satisfaction.html#variant.None" title="Satisfaction::None"><code>Satisfaction::None</code></a> or <a href="enum.Satisfaction.html#variant.Complete" title="Satisfaction::Complete"><code>Satisfaction::Complete</code></a></p>
-</div><h3 id="variant.AddOnPartialComplete" class="variant small-section-header"><a href="#variant.AddOnPartialComplete" class="anchor field"></a><code>AddOnPartialComplete</code></h3><div class="docblock"><p>Can not add to an item that is <a href="enum.Satisfaction.html#variant.PartialComplete" title="Satisfaction::PartialComplete"><code>Satisfaction::PartialComplete</code></a></p>
-</div><h3 id="variant.MixedTimelockUnits" class="variant small-section-header"><a href="#variant.MixedTimelockUnits" class="anchor field"></a><code>MixedTimelockUnits</code></h3><div class="docblock"><p>Can not merge CSV or timelock values unless both are less than or both are equal or greater than 500_000_000</p>
-</div><h3 id="variant.IncompatibleConditions" class="variant small-section-header"><a href="#variant.IncompatibleConditions" class="anchor field"></a><code>IncompatibleConditions</code></h3><div class="docblock"><p>Incompatible conditions (not currently used)</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#513-517" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#514-516" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#519" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CPolicyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#192" title="goto source code">source</a></div><a href="#impl-From%3CPolicyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#192" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CPolicyError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#67" title="goto source code">source</a></div><a href="#impl-From%3CPolicyError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/error.rs.html#67" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CPolicyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#impl-PartialEq%3CPolicyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#497" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.NotEnoughItemsSelected" class="variant"><a href="#variant.NotEnoughItemsSelected" class="anchor">§</a><h3 class="code-header">NotEnoughItemsSelected(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h3></section><div class="docblock"><p>Not enough items are selected to satisfy a <a href="enum.SatisfiableItem.html#variant.Thresh" title="SatisfiableItem::Thresh"><code>SatisfiableItem::Thresh</code></a> or a <a href="enum.SatisfiableItem.html#variant.Multisig" title="SatisfiableItem::Multisig"><code>SatisfiableItem::Multisig</code></a></p>
+</div><section id="variant.IndexOutOfRange" class="variant"><a href="#variant.IndexOutOfRange" class="anchor">§</a><h3 class="code-header">IndexOutOfRange(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h3></section><div class="docblock"><p>Index out of range for an item to satisfy a <a href="enum.SatisfiableItem.html#variant.Thresh" title="SatisfiableItem::Thresh"><code>SatisfiableItem::Thresh</code></a> or a <a href="enum.SatisfiableItem.html#variant.Multisig" title="SatisfiableItem::Multisig"><code>SatisfiableItem::Multisig</code></a></p>
+</div><section id="variant.AddOnLeaf" class="variant"><a href="#variant.AddOnLeaf" class="anchor">§</a><h3 class="code-header">AddOnLeaf</h3></section><div class="docblock"><p>Can not add to an item that is <a href="enum.Satisfaction.html#variant.None" title="Satisfaction::None"><code>Satisfaction::None</code></a> or <a href="enum.Satisfaction.html#variant.Complete" title="Satisfaction::Complete"><code>Satisfaction::Complete</code></a></p>
+</div><section id="variant.AddOnPartialComplete" class="variant"><a href="#variant.AddOnPartialComplete" class="anchor">§</a><h3 class="code-header">AddOnPartialComplete</h3></section><div class="docblock"><p>Can not add to an item that is <a href="enum.Satisfaction.html#variant.PartialComplete" title="Satisfaction::PartialComplete"><code>Satisfaction::PartialComplete</code></a></p>
+</div><section id="variant.MixedTimelockUnits" class="variant"><a href="#variant.MixedTimelockUnits" class="anchor">§</a><h3 class="code-header">MixedTimelockUnits</h3></section><div class="docblock"><p>Can not merge CSV or timelock values unless both are less than or both are equal or greater than 500_000_000</p>
+</div><section id="variant.IncompatibleConditions" class="variant"><a href="#variant.IncompatibleConditions" class="anchor">§</a><h3 class="code-header">IncompatibleConditions</h3></section><div class="docblock"><p>Incompatible conditions (not currently used)</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#impl-Debug-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#513-517">source</a><a href="#impl-Display-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#514-516">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#519">source</a><a href="#impl-Error-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CPolicyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#192">source</a><a href="#impl-From%3CPolicyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#192">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CPolicyError%3E-for-Error-1" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#67">source</a><a href="#impl-From%3CPolicyError%3E-for-Error-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/error.rs.html#67">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CPolicyError%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#impl-PartialEq%3CPolicyError%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Eq-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#impl-Eq-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section><section id="impl-StructuralEq-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#impl-StructuralEq-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section><section id="impl-StructuralPartialEq-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#497">source</a><a href="#impl-StructuralPartialEq-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-PolicyError" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section><section id="impl-Send-for-PolicyError" class="impl has-srclink"><a href="#impl-Send-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section><section id="impl-Sync-for-PolicyError" class="impl has-srclink"><a href="#impl-Sync-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section><section id="impl-Unpin-for-PolicyError" class="impl has-srclink"><a href="#impl-Unpin-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section><section id="impl-UnwindSafe-for-PolicyError" class="impl has-srclink"><a href="#impl-UnwindSafe-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-PolicyError" class="impl has-srclink"><a href="#impl-Pointable-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-PolicyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-PolicyError" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-PolicyError" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Represent if and how much a policy item is satisfied by the wallet’s descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, Satisfaction"><title>Satisfaction in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Satisfaction</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Complete">Complete</a><a href="#variant.None">None</a><a href="#variant.Partial">Partial</a><a href="#variant.PartialComplete">PartialComplete</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.is_leaf">is_leaf</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-From%3Cbool%3E">From<bool></a><a href="#impl-PartialEq%3CSatisfaction%3E">PartialEq<Satisfaction></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="Satisfaction" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">Satisfaction</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#257-299" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Satisfaction {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Represent if and how much a policy item is satisfied by the wallet’s descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, Satisfaction"><title>Satisfaction in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Satisfaction</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Complete">Complete</a></li><li><a href="#variant.None">None</a></li><li><a href="#variant.Partial">Partial</a></li><li><a href="#variant.PartialComplete">PartialComplete</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.is_leaf">is_leaf</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Satisfaction">Clone</a></li><li><a href="#impl-Debug-for-Satisfaction">Debug</a></li><li><a href="#impl-Eq-for-Satisfaction">Eq</a></li><li><a href="#impl-From%3Cbool%3E-for-Satisfaction">From<bool></a></li><li><a href="#impl-PartialEq%3CSatisfaction%3E-for-Satisfaction">PartialEq<Satisfaction></a></li><li><a href="#impl-Serialize-for-Satisfaction">Serialize</a></li><li><a href="#impl-StructuralEq-for-Satisfaction">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Satisfaction">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Satisfaction">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Satisfaction">Send</a></li><li><a href="#impl-Sync-for-Satisfaction">Sync</a></li><li><a href="#impl-Unpin-for-Satisfaction">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Satisfaction">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Satisfaction">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Satisfaction">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Satisfaction">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Satisfaction">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Satisfaction">Into<U></a></li><li><a href="#impl-Pointable-for-Satisfaction">Pointable</a></li><li><a href="#impl-ToOwned-for-Satisfaction">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Satisfaction">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Satisfaction">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Satisfaction">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">Satisfaction</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#257-299">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Satisfaction {
Partial {
n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
},
None,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Represent if and how much a policy item is satisfied by the wallet’s descriptor</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Partial" class="variant small-section-header"><a href="#variant.Partial" class="anchor field"></a><code>Partial</code></h3><div class="sub-variant" id="variant.Partial.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Partial.field.n" class="variant small-section-header"><a href="#variant.Partial.field.n" class="anchor field"></a><code>n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Total number of items</p>
-</div></div><div class="sub-variant-field"><span id="variant.Partial.field.m" class="variant small-section-header"><a href="#variant.Partial.field.m" class="anchor field"></a><code>m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Threshold</p>
-</div></div><div class="sub-variant-field"><span id="variant.Partial.field.items" class="variant small-section-header"><a href="#variant.Partial.field.items" class="anchor field"></a><code>items: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></code></span><div class="docblock"><p>The items that can be satisfied by the descriptor or are satisfied in the PSBT</p>
-</div></div><div class="sub-variant-field"><span id="variant.Partial.field.sorted" class="variant small-section-header"><a href="#variant.Partial.field.sorted" class="anchor field"></a><code>sorted: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>></code></span><div class="docblock"><p>Whether the items are sorted in lexicographic order (used by <code>sortedmulti</code>)</p>
-</div></div><div class="sub-variant-field"><span id="variant.Partial.field.conditions" class="variant small-section-header"><a href="#variant.Partial.field.conditions" class="anchor field"></a><code>conditions: <a class="type" href="type.ConditionMap.html" title="type bdk::descriptor::policy::ConditionMap">ConditionMap</a></code></span><div class="docblock"><p>Extra conditions that also need to be satisfied</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Partial" class="variant"><a href="#variant.Partial" class="anchor">§</a><h3 class="code-header">Partial</h3></section><div class="sub-variant" id="variant.Partial.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Partial.field.n" class="small-section-header"><a href="#variant.Partial.field.n" class="anchor field">§</a><code>n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Total number of items</p>
+</div></div><div class="sub-variant-field"><span id="variant.Partial.field.m" class="small-section-header"><a href="#variant.Partial.field.m" class="anchor field">§</a><code>m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Threshold</p>
+</div></div><div class="sub-variant-field"><span id="variant.Partial.field.items" class="small-section-header"><a href="#variant.Partial.field.items" class="anchor field">§</a><code>items: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></code></span><div class="docblock"><p>The items that can be satisfied by the descriptor or are satisfied in the PSBT</p>
+</div></div><div class="sub-variant-field"><span id="variant.Partial.field.sorted" class="small-section-header"><a href="#variant.Partial.field.sorted" class="anchor field">§</a><code>sorted: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>></code></span><div class="docblock"><p>Whether the items are sorted in lexicographic order (used by <code>sortedmulti</code>)</p>
+</div></div><div class="sub-variant-field"><span id="variant.Partial.field.conditions" class="small-section-header"><a href="#variant.Partial.field.conditions" class="anchor field">§</a><code>conditions: <a class="type" href="type.ConditionMap.html" title="type bdk::descriptor::policy::ConditionMap">ConditionMap</a></code></span><div class="docblock"><p>Extra conditions that also need to be satisfied</p>
</div></div></div><div class="docblock"><p>Only a partial satisfaction of some kind of threshold policy</p>
-</div><h3 id="variant.PartialComplete" class="variant small-section-header"><a href="#variant.PartialComplete" class="anchor field"></a><code>PartialComplete</code></h3><div class="sub-variant" id="variant.PartialComplete.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PartialComplete.field.n" class="variant small-section-header"><a href="#variant.PartialComplete.field.n" class="anchor field"></a><code>n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Total number of items</p>
-</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.m" class="variant small-section-header"><a href="#variant.PartialComplete.field.m" class="anchor field"></a><code>m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Threshold</p>
-</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.items" class="variant small-section-header"><a href="#variant.PartialComplete.field.items" class="anchor field"></a><code>items: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></code></span><div class="docblock"><p>The items that can be satisfied by the descriptor</p>
-</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.sorted" class="variant small-section-header"><a href="#variant.PartialComplete.field.sorted" class="anchor field"></a><code>sorted: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>></code></span><div class="docblock"><p>Whether the items are sorted in lexicographic order (used by <code>sortedmulti</code>)</p>
-</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.conditions" class="variant small-section-header"><a href="#variant.PartialComplete.field.conditions" class="anchor field"></a><code>conditions: <a class="type" href="type.FoldedConditionMap.html" title="type bdk::descriptor::policy::FoldedConditionMap">FoldedConditionMap</a></code></span><div class="docblock"><p>Extra conditions that also need to be satisfied</p>
+</div><section id="variant.PartialComplete" class="variant"><a href="#variant.PartialComplete" class="anchor">§</a><h3 class="code-header">PartialComplete</h3></section><div class="sub-variant" id="variant.PartialComplete.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PartialComplete.field.n" class="small-section-header"><a href="#variant.PartialComplete.field.n" class="anchor field">§</a><code>n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Total number of items</p>
+</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.m" class="small-section-header"><a href="#variant.PartialComplete.field.m" class="anchor field">§</a><code>m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>Threshold</p>
+</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.items" class="small-section-header"><a href="#variant.PartialComplete.field.items" class="anchor field">§</a><code>items: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>></code></span><div class="docblock"><p>The items that can be satisfied by the descriptor</p>
+</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.sorted" class="small-section-header"><a href="#variant.PartialComplete.field.sorted" class="anchor field">§</a><code>sorted: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>></code></span><div class="docblock"><p>Whether the items are sorted in lexicographic order (used by <code>sortedmulti</code>)</p>
+</div></div><div class="sub-variant-field"><span id="variant.PartialComplete.field.conditions" class="small-section-header"><a href="#variant.PartialComplete.field.conditions" class="anchor field">§</a><code>conditions: <a class="type" href="type.FoldedConditionMap.html" title="type bdk::descriptor::policy::FoldedConditionMap">FoldedConditionMap</a></code></span><div class="docblock"><p>Extra conditions that also need to be satisfied</p>
</div></div></div><div class="docblock"><p>Can reach the threshold of some kind of threshold policy</p>
-</div><h3 id="variant.Complete" class="variant small-section-header"><a href="#variant.Complete" class="anchor field"></a><code>Complete</code></h3><div class="sub-variant" id="variant.Complete.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Complete.field.condition" class="variant small-section-header"><a href="#variant.Complete.field.condition" class="anchor field"></a><code>condition: <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></code></span><div class="docblock"><p>Extra conditions that also need to be satisfied</p>
+</div><section id="variant.Complete" class="variant"><a href="#variant.Complete" class="anchor">§</a><h3 class="code-header">Complete</h3></section><div class="sub-variant" id="variant.Complete.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Complete.field.condition" class="small-section-header"><a href="#variant.Complete.field.condition" class="anchor field">§</a><code>condition: <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></code></span><div class="docblock"><p>Extra conditions that also need to be satisfied</p>
</div></div></div><div class="docblock"><p>Can satisfy the policy item</p>
-</div><h3 id="variant.None" class="variant small-section-header"><a href="#variant.None" class="anchor field"></a><code>None</code></h3><div class="docblock"><p>Cannot satisfy or contribute to the policy item</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#301-414" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_leaf" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#303-308" title="goto source code">source</a></div><a href="#method.is_leaf" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_leaf" class="fnname">is_leaf</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the <a href="enum.Satisfaction.html" title="Satisfaction"><code>Satisfaction</code></a> is a leaf item</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3Cbool%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#416-426" title="goto source code">source</a></div><a href="#impl-From%3Cbool%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#417-425" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSatisfaction%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-PartialEq%3CSatisfaction%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#255" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><section id="variant.None" class="variant"><a href="#variant.None" class="anchor">§</a><h3 class="code-header">None</h3></section><div class="docblock"><p>Cannot satisfy or contribute to the policy item</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#301-414">source</a><a href="#impl-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_leaf" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#303-308">source</a><h4 class="code-header">pub fn <a href="#method.is_leaf" class="fn">is_leaf</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the <a href="enum.Satisfaction.html" title="Satisfaction"><code>Satisfaction</code></a> is a leaf item</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-Clone-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-Debug-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3Cbool%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#416-426">source</a><a href="#impl-From%3Cbool%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#417-425">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSatisfaction%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-PartialEq%3CSatisfaction%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-Serialize-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-Eq-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section><section id="impl-StructuralEq-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-StructuralEq-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section><section id="impl-StructuralPartialEq-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#255">source</a><a href="#impl-StructuralPartialEq-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Satisfaction" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section><section id="impl-Send-for-Satisfaction" class="impl has-srclink"><a href="#impl-Send-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section><section id="impl-Sync-for-Satisfaction" class="impl has-srclink"><a href="#impl-Sync-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section><section id="impl-Unpin-for-Satisfaction" class="impl has-srclink"><a href="#impl-Unpin-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section><section id="impl-UnwindSafe-for-Satisfaction" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Satisfaction" class="impl has-srclink"><a href="#impl-Pointable-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Satisfaction" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Satisfaction" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Satisfaction" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An item that needs to be satisfied"><meta name="keywords" content="rust, rustlang, rust-lang, SatisfiableItem"><title>SatisfiableItem in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SatisfiableItem</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.AbsoluteTimelock">AbsoluteTimelock</a><a href="#variant.EcdsaSignature">EcdsaSignature</a><a href="#variant.Hash160Preimage">Hash160Preimage</a><a href="#variant.Hash256Preimage">Hash256Preimage</a><a href="#variant.Multisig">Multisig</a><a href="#variant.RelativeTimelock">RelativeTimelock</a><a href="#variant.Ripemd160Preimage">Ripemd160Preimage</a><a href="#variant.SchnorrSignature">SchnorrSignature</a><a href="#variant.Sha256Preimage">Sha256Preimage</a><a href="#variant.Thresh">Thresh</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.id">id</a><a href="#method.is_leaf">is_leaf</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CSatisfiableItem%3E">From<SatisfiableItem></a><a href="#impl-PartialEq%3CSatisfiableItem%3E">PartialEq<SatisfiableItem></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="SatisfiableItem" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">SatisfiableItem</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#103-155" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum SatisfiableItem {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An item that needs to be satisfied"><meta name="keywords" content="rust, rustlang, rust-lang, SatisfiableItem"><title>SatisfiableItem in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SatisfiableItem</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.AbsoluteTimelock">AbsoluteTimelock</a></li><li><a href="#variant.EcdsaSignature">EcdsaSignature</a></li><li><a href="#variant.Hash160Preimage">Hash160Preimage</a></li><li><a href="#variant.Hash256Preimage">Hash256Preimage</a></li><li><a href="#variant.Multisig">Multisig</a></li><li><a href="#variant.RelativeTimelock">RelativeTimelock</a></li><li><a href="#variant.Ripemd160Preimage">Ripemd160Preimage</a></li><li><a href="#variant.SchnorrSignature">SchnorrSignature</a></li><li><a href="#variant.Sha256Preimage">Sha256Preimage</a></li><li><a href="#variant.Thresh">Thresh</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.id">id</a></li><li><a href="#method.is_leaf">is_leaf</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SatisfiableItem">Clone</a></li><li><a href="#impl-Debug-for-SatisfiableItem">Debug</a></li><li><a href="#impl-Eq-for-SatisfiableItem">Eq</a></li><li><a href="#impl-From%3CSatisfiableItem%3E-for-Policy">From<SatisfiableItem></a></li><li><a href="#impl-PartialEq%3CSatisfiableItem%3E-for-SatisfiableItem">PartialEq<SatisfiableItem></a></li><li><a href="#impl-Serialize-for-SatisfiableItem">Serialize</a></li><li><a href="#impl-StructuralEq-for-SatisfiableItem">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SatisfiableItem">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SatisfiableItem">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SatisfiableItem">Send</a></li><li><a href="#impl-Sync-for-SatisfiableItem">Sync</a></li><li><a href="#impl-Unpin-for-SatisfiableItem">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SatisfiableItem">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SatisfiableItem">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SatisfiableItem">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SatisfiableItem">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SatisfiableItem">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SatisfiableItem">Into<U></a></li><li><a href="#impl-Pointable-for-SatisfiableItem">Pointable</a></li><li><a href="#impl-ToOwned-for-SatisfiableItem">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SatisfiableItem">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SatisfiableItem">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SatisfiableItem">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="enum" href="#">SatisfiableItem</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#103-155">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum SatisfiableItem {
EcdsaSignature(<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>),
SchnorrSignature(<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>),
Sha256Preimage {
threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
},
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An item that needs to be satisfied</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.EcdsaSignature" class="variant small-section-header"><a href="#variant.EcdsaSignature" class="anchor field"></a><code>EcdsaSignature(<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>)</code></h3><div class="docblock"><p>ECDSA Signature for a raw public key</p>
-</div><h3 id="variant.SchnorrSignature" class="variant small-section-header"><a href="#variant.SchnorrSignature" class="anchor field"></a><code>SchnorrSignature(<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>)</code></h3><div class="docblock"><p>Schnorr Signature for a raw public key</p>
-</div><h3 id="variant.Sha256Preimage" class="variant small-section-header"><a href="#variant.Sha256Preimage" class="anchor field"></a><code>Sha256Preimage</code></h3><div class="sub-variant" id="variant.Sha256Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Sha256Preimage.field.hash" class="variant small-section-header"><a href="#variant.Sha256Preimage.field.hash" class="anchor field"></a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.EcdsaSignature" class="variant"><a href="#variant.EcdsaSignature" class="anchor">§</a><h3 class="code-header">EcdsaSignature(<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>)</h3></section><div class="docblock"><p>ECDSA Signature for a raw public key</p>
+</div><section id="variant.SchnorrSignature" class="variant"><a href="#variant.SchnorrSignature" class="anchor">§</a><h3 class="code-header">SchnorrSignature(<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>)</h3></section><div class="docblock"><p>Schnorr Signature for a raw public key</p>
+</div><section id="variant.Sha256Preimage" class="variant"><a href="#variant.Sha256Preimage" class="anchor">§</a><h3 class="code-header">Sha256Preimage</h3></section><div class="sub-variant" id="variant.Sha256Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Sha256Preimage.field.hash" class="small-section-header"><a href="#variant.Sha256Preimage.field.hash" class="anchor field">§</a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
</div></div></div><div class="docblock"><p>SHA256 preimage hash</p>
-</div><h3 id="variant.Hash256Preimage" class="variant small-section-header"><a href="#variant.Hash256Preimage" class="anchor field"></a><code>Hash256Preimage</code></h3><div class="sub-variant" id="variant.Hash256Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Hash256Preimage.field.hash" class="variant small-section-header"><a href="#variant.Hash256Preimage.field.hash" class="anchor field"></a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
+</div><section id="variant.Hash256Preimage" class="variant"><a href="#variant.Hash256Preimage" class="anchor">§</a><h3 class="code-header">Hash256Preimage</h3></section><div class="sub-variant" id="variant.Hash256Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Hash256Preimage.field.hash" class="small-section-header"><a href="#variant.Hash256Preimage.field.hash" class="anchor field">§</a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
</div></div></div><div class="docblock"><p>Double SHA256 preimage hash</p>
-</div><h3 id="variant.Ripemd160Preimage" class="variant small-section-header"><a href="#variant.Ripemd160Preimage" class="anchor field"></a><code>Ripemd160Preimage</code></h3><div class="sub-variant" id="variant.Ripemd160Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Ripemd160Preimage.field.hash" class="variant small-section-header"><a href="#variant.Ripemd160Preimage.field.hash" class="anchor field"></a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
+</div><section id="variant.Ripemd160Preimage" class="variant"><a href="#variant.Ripemd160Preimage" class="anchor">§</a><h3 class="code-header">Ripemd160Preimage</h3></section><div class="sub-variant" id="variant.Ripemd160Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Ripemd160Preimage.field.hash" class="small-section-header"><a href="#variant.Ripemd160Preimage.field.hash" class="anchor field">§</a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
</div></div></div><div class="docblock"><p>RIPEMD160 preimage hash</p>
-</div><h3 id="variant.Hash160Preimage" class="variant small-section-header"><a href="#variant.Hash160Preimage" class="anchor field"></a><code>Hash160Preimage</code></h3><div class="sub-variant" id="variant.Hash160Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Hash160Preimage.field.hash" class="variant small-section-header"><a href="#variant.Hash160Preimage.field.hash" class="anchor field"></a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
+</div><section id="variant.Hash160Preimage" class="variant"><a href="#variant.Hash160Preimage" class="anchor">§</a><h3 class="code-header">Hash160Preimage</h3></section><div class="sub-variant" id="variant.Hash160Preimage.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Hash160Preimage.field.hash" class="small-section-header"><a href="#variant.Hash160Preimage.field.hash" class="anchor field">§</a><code>hash: Hash</code></span><div class="docblock"><p>The digest value</p>
</div></div></div><div class="docblock"><p>SHA256 then RIPEMD160 preimage hash</p>
-</div><h3 id="variant.AbsoluteTimelock" class="variant small-section-header"><a href="#variant.AbsoluteTimelock" class="anchor field"></a><code>AbsoluteTimelock</code></h3><div class="sub-variant" id="variant.AbsoluteTimelock.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.AbsoluteTimelock.field.value" class="variant small-section-header"><a href="#variant.AbsoluteTimelock.field.value" class="anchor field"></a><code>value: LockTime</code></span><div class="docblock"><p>The timelock value</p>
+</div><section id="variant.AbsoluteTimelock" class="variant"><a href="#variant.AbsoluteTimelock" class="anchor">§</a><h3 class="code-header">AbsoluteTimelock</h3></section><div class="sub-variant" id="variant.AbsoluteTimelock.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.AbsoluteTimelock.field.value" class="small-section-header"><a href="#variant.AbsoluteTimelock.field.value" class="anchor field">§</a><code>value: LockTime</code></span><div class="docblock"><p>The timelock value</p>
</div></div></div><div class="docblock"><p>Absolute timeclock timestamp</p>
-</div><h3 id="variant.RelativeTimelock" class="variant small-section-header"><a href="#variant.RelativeTimelock" class="anchor field"></a><code>RelativeTimelock</code></h3><div class="sub-variant" id="variant.RelativeTimelock.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.RelativeTimelock.field.value" class="variant small-section-header"><a href="#variant.RelativeTimelock.field.value" class="anchor field"></a><code>value: Sequence</code></span><div class="docblock"><p>The timelock value</p>
+</div><section id="variant.RelativeTimelock" class="variant"><a href="#variant.RelativeTimelock" class="anchor">§</a><h3 class="code-header">RelativeTimelock</h3></section><div class="sub-variant" id="variant.RelativeTimelock.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.RelativeTimelock.field.value" class="small-section-header"><a href="#variant.RelativeTimelock.field.value" class="anchor field">§</a><code>value: Sequence</code></span><div class="docblock"><p>The timelock value</p>
</div></div></div><div class="docblock"><p>Relative timelock locktime</p>
-</div><h3 id="variant.Multisig" class="variant small-section-header"><a href="#variant.Multisig" class="anchor field"></a><code>Multisig</code></h3><div class="sub-variant" id="variant.Multisig.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Multisig.field.keys" class="variant small-section-header"><a href="#variant.Multisig.field.keys" class="anchor field"></a><code>keys: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>></code></span><div class="docblock"><p>The raw public key or extended key fingerprint</p>
-</div></div><div class="sub-variant-field"><span id="variant.Multisig.field.threshold" class="variant small-section-header"><a href="#variant.Multisig.field.threshold" class="anchor field"></a><code>threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The required threshold count</p>
+</div><section id="variant.Multisig" class="variant"><a href="#variant.Multisig" class="anchor">§</a><h3 class="code-header">Multisig</h3></section><div class="sub-variant" id="variant.Multisig.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Multisig.field.keys" class="small-section-header"><a href="#variant.Multisig.field.keys" class="anchor field">§</a><code>keys: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="enum" href="enum.PkOrF.html" title="enum bdk::descriptor::policy::PkOrF">PkOrF</a>></code></span><div class="docblock"><p>The raw public key or extended key fingerprint</p>
+</div></div><div class="sub-variant-field"><span id="variant.Multisig.field.threshold" class="small-section-header"><a href="#variant.Multisig.field.threshold" class="anchor field">§</a><code>threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The required threshold count</p>
</div></div></div><div class="docblock"><p>Multi-signature public keys with threshold count</p>
-</div><h3 id="variant.Thresh" class="variant small-section-header"><a href="#variant.Thresh" class="anchor field"></a><code>Thresh</code></h3><div class="sub-variant" id="variant.Thresh.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Thresh.field.items" class="variant small-section-header"><a href="#variant.Thresh.field.items" class="anchor field"></a><code>items: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>></code></span><div class="docblock"><p>The policy items</p>
-</div></div><div class="sub-variant-field"><span id="variant.Thresh.field.threshold" class="variant small-section-header"><a href="#variant.Thresh.field.threshold" class="anchor field"></a><code>threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The required threshold count</p>
+</div><section id="variant.Thresh" class="variant"><a href="#variant.Thresh" class="anchor">§</a><h3 class="code-header">Thresh</h3></section><div class="sub-variant" id="variant.Thresh.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Thresh.field.items" class="small-section-header"><a href="#variant.Thresh.field.items" class="anchor field">§</a><code>items: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>></code></span><div class="docblock"><p>The policy items</p>
+</div></div><div class="sub-variant-field"><span id="variant.Thresh.field.threshold" class="small-section-header"><a href="#variant.Thresh.field.threshold" class="anchor field">§</a><code>threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The required threshold count</p>
</div></div></div><div class="docblock"><p>Threshold items with threshold count</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#157-174" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_leaf" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#159-167" title="goto source code">source</a></div><a href="#method.is_leaf" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_leaf" class="fnname">is_leaf</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the <a href="enum.SatisfiableItem.html" title="SatisfiableItem"><code>SatisfiableItem</code></a> is a leaf item</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.id" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#170-173" title="goto source code">source</a></div><a href="#method.id" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.id" class="fnname">id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Returns a unique id for the <a href="enum.SatisfiableItem.html" title="SatisfiableItem"><code>SatisfiableItem</code></a></p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSatisfiableItem%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#717-721" title="goto source code">source</a></div><a href="#impl-From%3CSatisfiableItem%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#718-720" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSatisfiableItem%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-PartialEq%3CSatisfiableItem%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#101" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#157-174">source</a><a href="#impl-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_leaf" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#159-167">source</a><h4 class="code-header">pub fn <a href="#method.is_leaf" class="fn">is_leaf</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the <a href="enum.SatisfiableItem.html" title="SatisfiableItem"><code>SatisfiableItem</code></a> is a leaf item</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.id" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#170-173">source</a><h4 class="code-header">pub fn <a href="#method.id" class="fn">id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>Returns a unique id for the <a href="enum.SatisfiableItem.html" title="SatisfiableItem"><code>SatisfiableItem</code></a></p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-Clone-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-Debug-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSatisfiableItem%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#717-721">source</a><a href="#impl-From%3CSatisfiableItem%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#718-720">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSatisfiableItem%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-PartialEq%3CSatisfiableItem%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-Serialize-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-Eq-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section><section id="impl-StructuralEq-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-StructuralEq-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section><section id="impl-StructuralPartialEq-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#101">source</a><a href="#impl-StructuralPartialEq-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section><section id="impl-Send-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-Send-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section><section id="impl-Sync-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-Sync-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section><section id="impl-Unpin-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-Unpin-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section><section id="impl-UnwindSafe-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-Pointable-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SatisfiableItem" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SatisfiableItem" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SatisfiableItem" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor policy"><meta name="keywords" content="rust, rustlang, rust-lang, policy"><title>bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module policy</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="policy" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">policy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#12-1922" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor policy</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor policy"><meta name="keywords" content="rust, rustlang, rust-lang, policy"><title>bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module policy</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">policy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#12-1922">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor policy</p>
<p>This module implements the logic to extract and represent the spending policies of a descriptor
in a more human-readable format.</p>
<p>This is an <strong>EXPERIMENTAL</strong> feature, API and other major changes are expected.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::descriptor::policy::BuildSatisfaction</span>;
-<span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-<span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))"</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::descriptor::policy::BuildSatisfaction;
+<span class="kw">let </span>secp = Secp256k1::new();
+<span class="kw">let </span>desc = <span class="string">"wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))"</span>;
-<span class="kw">let</span> (<span class="ident">extended_desc</span>, <span class="ident">key_map</span>) <span class="op">=</span> <span class="ident">ExtendedDescriptor::parse_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">desc</span>)<span class="question-mark">?</span>;
-<span class="macro">println!</span>(<span class="string">"{:?}"</span>, <span class="ident">extended_desc</span>);
+<span class="kw">let </span>(extended_desc, key_map) = ExtendedDescriptor::parse_descriptor(<span class="kw-2">&</span>secp, desc)<span class="question-mark">?</span>;
+<span class="macro">println!</span>(<span class="string">"{:?}"</span>, extended_desc);
-<span class="kw">let</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">key_map</span>, <span class="kw-2">&</span><span class="ident">extended_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
-<span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">extended_desc</span>.<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)<span class="question-mark">?</span>;
-<span class="macro">println!</span>(<span class="string">"policy: {}"</span>, <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">policy</span>)<span class="question-mark">?</span>);</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Condition.html" title="bdk::descriptor::policy::Condition struct">Condition</a></div><div class="item-right docblock-short"><p>An extra condition that must be satisfied but that is out of control of the user
-TODO: use <code>bitcoin::LockTime</code> and <code>bitcoin::Sequence</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Policy.html" title="bdk::descriptor::policy::Policy struct">Policy</a></div><div class="item-right docblock-short"><p>Descriptor spending policy</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.BuildSatisfaction.html" title="bdk::descriptor::policy::BuildSatisfaction enum">BuildSatisfaction</a></div><div class="item-right docblock-short"><p>Options to build the satisfaction field in the policy</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.PkOrF.html" title="bdk::descriptor::policy::PkOrF enum">PkOrF</a></div><div class="item-right docblock-short"><p>A unique identifier for a key</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.PolicyError.html" title="bdk::descriptor::policy::PolicyError enum">PolicyError</a></div><div class="item-right docblock-short"><p>Errors that can happen while extracting and manipulating policies</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Satisfaction.html" title="bdk::descriptor::policy::Satisfaction enum">Satisfaction</a></div><div class="item-right docblock-short"><p>Represent if and how much a policy item is satisfied by the wallet’s descriptor</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SatisfiableItem.html" title="bdk::descriptor::policy::SatisfiableItem enum">SatisfiableItem</a></div><div class="item-right docblock-short"><p>An item that needs to be satisfied</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ConditionMap.html" title="bdk::descriptor::policy::ConditionMap type">ConditionMap</a></div><div class="item-right docblock-short"><p>Type for a map of sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by each set’s index</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.FoldedConditionMap.html" title="bdk::descriptor::policy::FoldedConditionMap type">FoldedConditionMap</a></div><div class="item-right docblock-short"><p>Type for a map of folded sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by a vector of the combined set’s indexes</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="kw">let </span>signers = Arc::new(SignersContainer::build(key_map, <span class="kw-2">&</span>extended_desc, <span class="kw-2">&</span>secp));
+<span class="kw">let </span>policy = extended_desc.extract_policy(<span class="kw-2">&</span>signers, BuildSatisfaction::None, <span class="kw-2">&</span>secp)<span class="question-mark">?</span>;
+<span class="macro">println!</span>(<span class="string">"policy: {}"</span>, serde_json::to_string(<span class="kw-2">&</span>policy)<span class="question-mark">?</span>);</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Condition.html" title="bdk::descriptor::policy::Condition struct">Condition</a></div><div class="item-right docblock-short">An extra condition that must be satisfied but that is out of control of the user
+TODO: use <code>bitcoin::LockTime</code> and <code>bitcoin::Sequence</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Policy.html" title="bdk::descriptor::policy::Policy struct">Policy</a></div><div class="item-right docblock-short">Descriptor spending policy</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.BuildSatisfaction.html" title="bdk::descriptor::policy::BuildSatisfaction enum">BuildSatisfaction</a></div><div class="item-right docblock-short">Options to build the satisfaction field in the policy</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.PkOrF.html" title="bdk::descriptor::policy::PkOrF enum">PkOrF</a></div><div class="item-right docblock-short">A unique identifier for a key</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.PolicyError.html" title="bdk::descriptor::policy::PolicyError enum">PolicyError</a></div><div class="item-right docblock-short">Errors that can happen while extracting and manipulating policies</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Satisfaction.html" title="bdk::descriptor::policy::Satisfaction enum">Satisfaction</a></div><div class="item-right docblock-short">Represent if and how much a policy item is satisfied by the wallet’s descriptor</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SatisfiableItem.html" title="bdk::descriptor::policy::SatisfiableItem enum">SatisfiableItem</a></div><div class="item-right docblock-short">An item that needs to be satisfied</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ConditionMap.html" title="bdk::descriptor::policy::ConditionMap type">ConditionMap</a></div><div class="item-right docblock-short">Type for a map of sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by each set’s index</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.FoldedConditionMap.html" title="bdk::descriptor::policy::FoldedConditionMap type">FoldedConditionMap</a></div><div class="item-right docblock-short">Type for a map of folded sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by a vector of the combined set’s indexes</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["BuildSatisfaction","Options to build the satisfaction field in the policy"],["PkOrF","A unique identifier for a key"],["PolicyError","Errors that can happen while extracting and manipulating policies"],["Satisfaction","Represent if and how much a policy item is satisfied by the wallet’s descriptor"],["SatisfiableItem","An item that needs to be satisfied"]],"struct":[["Condition","An extra condition that must be satisfied but that is out of control of the user TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`"],["Policy","Descriptor spending policy"]],"type":[["ConditionMap","Type for a map of sets of [`Condition`] items keyed by each set’s index"],["FoldedConditionMap","Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["BuildSatisfaction","Options to build the satisfaction field in the policy"],["PkOrF","A unique identifier for a key"],["PolicyError","Errors that can happen while extracting and manipulating policies"],["Satisfaction","Represent if and how much a policy item is satisfied by the wallet’s descriptor"],["SatisfiableItem","An item that needs to be satisfied"]],"struct":[["Condition","An extra condition that must be satisfied but that is out of control of the user TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`"],["Policy","Descriptor spending policy"]],"type":[["ConditionMap","Type for a map of sets of [`Condition`] items keyed by each set’s index"],["FoldedConditionMap","Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An extra condition that must be satisfied but that is out of control of the user TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`"><meta name="keywords" content="rust, rustlang, rust-lang, Condition"><title>Condition in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Condition</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.csv">csv</a><a href="#structfield.timelock">timelock</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.is_null">is_null</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-PartialEq%3CCondition%3E">PartialEq<Condition></a><a href="#impl-PartialOrd%3CCondition%3E">PartialOrd<Condition></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="Condition" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="struct" href="#">Condition</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#446-453" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Condition {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An extra condition that must be satisfied but that is out of control of the user TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`"><meta name="keywords" content="rust, rustlang, rust-lang, Condition"><title>Condition in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Condition</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.csv">csv</a></li><li><a href="#structfield.timelock">timelock</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.is_null">is_null</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Condition">Clone</a></li><li><a href="#impl-Copy-for-Condition">Copy</a></li><li><a href="#impl-Debug-for-Condition">Debug</a></li><li><a href="#impl-Default-for-Condition">Default</a></li><li><a href="#impl-Eq-for-Condition">Eq</a></li><li><a href="#impl-Hash-for-Condition">Hash</a></li><li><a href="#impl-PartialEq%3CCondition%3E-for-Condition">PartialEq<Condition></a></li><li><a href="#impl-PartialOrd%3CCondition%3E-for-Condition">PartialOrd<Condition></a></li><li><a href="#impl-Serialize-for-Condition">Serialize</a></li><li><a href="#impl-StructuralEq-for-Condition">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Condition">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Condition">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Condition">Send</a></li><li><a href="#impl-Sync-for-Condition">Sync</a></li><li><a href="#impl-Unpin-for-Condition">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Condition">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Condition">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Condition">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Condition">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Condition">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-Condition">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Condition">Into<U></a></li><li><a href="#impl-Pointable-for-Condition">Pointable</a></li><li><a href="#impl-ToOwned-for-Condition">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Condition">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Condition">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Condition">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="struct" href="#">Condition</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#446-453">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Condition {
pub csv: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Sequence>,
pub timelock: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><LockTime>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An extra condition that must be satisfied but that is out of control of the user
TODO: use <code>bitcoin::LockTime</code> and <code>bitcoin::Sequence</code></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.csv" class="structfield small-section-header"><a href="#structfield.csv" class="anchor field"></a><code>csv: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Sequence></code></span><div class="docblock"><p>Optional CheckSequenceVerify condition</p>
-</div><span id="structfield.timelock" class="structfield small-section-header"><a href="#structfield.timelock" class="anchor field"></a><code>timelock: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><LockTime></code></span><div class="docblock"><p>Optional timelock condition</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#455-494" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_null" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#491-493" title="goto source code">source</a></div><a href="#method.is_null" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_null" class="fnname">is_null</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns <code>true</code> if there are no extra conditions to verify</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CCondition%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-PartialEq%3CCondition%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CCondition%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CCondition%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#445" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.csv" class="structfield small-section-header"><a href="#structfield.csv" class="anchor field">§</a><code>csv: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Sequence></code></span><div class="docblock"><p>Optional CheckSequenceVerify condition</p>
+</div><span id="structfield.timelock" class="structfield small-section-header"><a href="#structfield.timelock" class="anchor field">§</a><code>timelock: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><LockTime></code></span><div class="docblock"><p>Optional timelock condition</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#455-494">source</a><a href="#impl-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_null" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#491-493">source</a><h4 class="code-header">pub fn <a href="#method.is_null" class="fn">is_null</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if there are no extra conditions to verify</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Clone-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Debug-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Default-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Hash-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CCondition%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-PartialEq%3CCondition%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CCondition%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-PartialOrd%3CCondition%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Serialize-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Copy-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-Eq-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-Eq-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-StructuralEq-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-StructuralEq-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-StructuralPartialEq-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#445">source</a><a href="#impl-StructuralPartialEq-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Condition" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-Send-for-Condition" class="impl has-srclink"><a href="#impl-Send-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-Sync-for-Condition" class="impl has-srclink"><a href="#impl-Sync-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-Unpin-for-Condition" class="impl has-srclink"><a href="#impl-Unpin-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section><section id="impl-UnwindSafe-for-Condition" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Condition" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Condition" class="impl has-srclink"><a href="#impl-CallHasher-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Condition" class="impl has-srclink"><a href="#impl-Pointable-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Condition" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Condition" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Condition" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor spending policy"><meta name="keywords" content="rust, rustlang, rust-lang, Policy"><title>Policy in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Policy</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.contribution">contribution</a><a href="#structfield.id">id</a><a href="#structfield.item">item</a><a href="#structfield.satisfaction">satisfaction</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.get_condition">get_condition</a><a href="#method.requires_path">requires_path</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CSatisfiableItem%3E">From<SatisfiableItem></a><a href="#impl-PartialEq%3CPolicy%3E">PartialEq<Policy></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="Policy" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="struct" href="#">Policy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#430-441" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Policy {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor spending policy"><meta name="keywords" content="rust, rustlang, rust-lang, Policy"><title>Policy in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Policy</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.contribution">contribution</a></li><li><a href="#structfield.id">id</a></li><li><a href="#structfield.item">item</a></li><li><a href="#structfield.satisfaction">satisfaction</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.get_condition">get_condition</a></li><li><a href="#method.requires_path">requires_path</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Policy">Clone</a></li><li><a href="#impl-Debug-for-Policy">Debug</a></li><li><a href="#impl-Eq-for-Policy">Eq</a></li><li><a href="#impl-From%3CSatisfiableItem%3E-for-Policy">From<SatisfiableItem></a></li><li><a href="#impl-PartialEq%3CPolicy%3E-for-Policy">PartialEq<Policy></a></li><li><a href="#impl-Serialize-for-Policy">Serialize</a></li><li><a href="#impl-StructuralEq-for-Policy">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Policy">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Policy">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Policy">Send</a></li><li><a href="#impl-Sync-for-Policy">Sync</a></li><li><a href="#impl-Unpin-for-Policy">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Policy">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Policy">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Policy">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Policy">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Policy">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Policy">Into<U></a></li><li><a href="#impl-Pointable-for-Policy">Pointable</a></li><li><a href="#impl-ToOwned-for-Policy">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Policy">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Policy">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Policy">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="struct" href="#">Policy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#430-441">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Policy {
pub id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
pub item: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>,
pub satisfaction: <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>,
pub contribution: <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor spending policy</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.id" class="structfield small-section-header"><a href="#structfield.id" class="anchor field"></a><code>id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Identifier for this policy node</p>
-</div><span id="structfield.item" class="structfield small-section-header"><a href="#structfield.item" class="anchor field"></a><code>item: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></code></span><div class="docblock"><p>Type of this policy node</p>
-</div><span id="structfield.satisfaction" class="structfield small-section-header"><a href="#structfield.satisfaction" class="anchor field"></a><code>satisfaction: <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></code></span><div class="docblock"><p>How much a given PSBT already satisfies this policy node in terms of signatures</p>
-</div><span id="structfield.contribution" class="structfield small-section-header"><a href="#structfield.contribution" class="anchor field"></a><code>contribution: <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></code></span><div class="docblock"><p>How the wallet’s descriptor can satisfy this policy node</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#521-715" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.requires_path" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#639-641" title="goto source code">source</a></div><a href="#method.requires_path" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.requires_path" class="fnname">requires_path</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Return whether or not a specific path in the policy tree is required to unambiguously
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.id" class="structfield small-section-header"><a href="#structfield.id" class="anchor field">§</a><code>id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Identifier for this policy node</p>
+</div><span id="structfield.item" class="structfield small-section-header"><a href="#structfield.item" class="anchor field">§</a><code>item: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a></code></span><div class="docblock"><p>Type of this policy node</p>
+</div><span id="structfield.satisfaction" class="structfield small-section-header"><a href="#structfield.satisfaction" class="anchor field">§</a><code>satisfaction: <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></code></span><div class="docblock"><p>How much a given PSBT already satisfies this policy node in terms of signatures</p>
+</div><span id="structfield.contribution" class="structfield small-section-header"><a href="#structfield.contribution" class="anchor field">§</a><code>contribution: <a class="enum" href="enum.Satisfaction.html" title="enum bdk::descriptor::policy::Satisfaction">Satisfaction</a></code></span><div class="docblock"><p>How the wallet’s descriptor can satisfy this policy node</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#521-715">source</a><a href="#impl-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.requires_path" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#639-641">source</a><h4 class="code-header">pub fn <a href="#method.requires_path" class="fn">requires_path</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return whether or not a specific path in the policy tree is required to unambiguously
create a transaction</p>
<p>What this means is that for some spending policies the user should select which paths in
the tree it intends to satisfy while signing, because the transaction must be created differently based
on that.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_condition" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#645-714" title="goto source code">source</a></div><a href="#method.get_condition" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_condition" class="fnname">get_condition</a>(<br> &self, <br> path: &<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>, <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>></h4></div></summary><div class="docblock"><p>Return the conditions that are set by the spending policy for a given path in the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_condition" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#645-714">source</a><h4 class="code-header">pub fn <a href="#method.get_condition" class="fn">get_condition</a>(<br> &self,<br> path: &<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>, <a class="enum" href="enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>></h4></section></summary><div class="docblock"><p>Return the conditions that are set by the spending policy for a given path in the
policy tree</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSatisfiableItem%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#717-721" title="goto source code">source</a></div><a href="#impl-From%3CSatisfiableItem%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#718-720" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CPolicy%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-PartialEq%3CPolicy%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#429" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-Clone-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-Debug-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSatisfiableItem%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#717-721">source</a><a href="#impl-From%3CSatisfiableItem%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#718-720">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="enum.SatisfiableItem.html" title="enum bdk::descriptor::policy::SatisfiableItem">SatisfiableItem</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CPolicy%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-PartialEq%3CPolicy%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-Serialize-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-Eq-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section><section id="impl-StructuralEq-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-StructuralEq-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section><section id="impl-StructuralPartialEq-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/policy.rs.html#429">source</a><a href="#impl-StructuralPartialEq-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Policy" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section><section id="impl-Send-for-Policy" class="impl has-srclink"><a href="#impl-Send-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section><section id="impl-Sync-for-Policy" class="impl has-srclink"><a href="#impl-Sync-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section><section id="impl-Unpin-for-Policy" class="impl has-srclink"><a href="#impl-Unpin-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section><section id="impl-UnwindSafe-for-Policy" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Policy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Policy" class="impl has-srclink"><a href="#impl-Pointable-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Policy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Policy" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Policy" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type for a map of sets of [`Condition`] items keyed by each set’s index"><meta name="keywords" content="rust, rustlang, rust-lang, ConditionMap"><title>ConditionMap in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ConditionMap</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="ConditionMap" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="type" href="#">ConditionMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#235" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type ConditionMap = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type for a map of sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by each set’s index</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type for a map of sets of [`Condition`] items keyed by each set’s index"><meta name="keywords" content="rust, rustlang, rust-lang, ConditionMap"><title>ConditionMap in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ConditionMap</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="type" href="#">ConditionMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#235">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type ConditionMap = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type for a map of sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by each set’s index</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"><meta name="keywords" content="rust, rustlang, rust-lang, FoldedConditionMap"><title>FoldedConditionMap in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">FoldedConditionMap</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a></h2><div id="sidebar-vars" data-name="FoldedConditionMap" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="type" href="#">FoldedConditionMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#237" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type FoldedConditionMap = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type for a map of folded sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by a vector of the combined set’s indexes</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"><meta name="keywords" content="rust, rustlang, rust-lang, FoldedConditionMap"><title>FoldedConditionMap in bdk::descriptor::policy - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">FoldedConditionMap</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor::policy</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">policy</a>::<wbr><a class="type" href="#">FoldedConditionMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/policy.rs.html#237">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type FoldedConditionMap = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><<a class="struct" href="struct.Condition.html" title="struct bdk::descriptor::policy::Condition">Condition</a>>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type for a map of folded sets of <a href="struct.Condition.html" title="Condition"><code>Condition</code></a> items keyed by a vector of the combined set’s indexes</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Descriptor","Script descriptor"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["Legacy","Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"],["Segwitv0","Segwitv0 ScriptContext"],["Wildcard","Whether a descriptor has a wildcard in it"]],"mod":[["checksum","Descriptor checksum"],["error","Descriptor errors"],["policy","Descriptor policy"],["template","Descriptor templates"]],"struct":[["DescriptorXKey","An extended key with origin, derivation path, and wildcard."],["Miniscript","Top-level script AST type"]],"trait":[["ExtractPolicy","Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"],["IntoWalletDescriptor","Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["DerivedDescriptor","Alias for a [`Descriptor`] that contains extended derived keys"],["ExtendedDescriptor","Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"],["HdKeyPaths","Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"],["KeyMap","Alias type for a map of public key to secret key"],["TapKeyOrigins","Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Descriptor","Script descriptor"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["Legacy","Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"],["Segwitv0","Segwitv0 ScriptContext"],["Wildcard","Whether a descriptor has a wildcard in it"]],"mod":[["checksum","Descriptor checksum"],["error","Descriptor errors"],["policy","Descriptor policy"],["template","Descriptor templates"]],"struct":[["DescriptorXKey","An extended key with origin, derivation path, and wildcard."],["Miniscript","Top-level script AST type"]],"trait":[["ExtractPolicy","Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"],["IntoWalletDescriptor","Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["DerivedDescriptor","Alias for a [`Descriptor`] that contains extended derived keys"],["ExtendedDescriptor","Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"],["HdKeyPaths","Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"],["KeyMap","Alias type for a map of public key to secret key"],["TapKeyOrigins","Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An extended key with origin, derivation path, and wildcard."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorXKey"><title>DescriptorXKey in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorXKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.derivation_path">derivation_path</a><a href="#structfield.origin">origin</a><a href="#structfield.wildcard">wildcard</a><a href="#structfield.xkey">xkey</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.matches">matches</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CDescriptorXKey%3CK%3E%3E">PartialEq<DescriptorXKey<K>></a><a href="#impl-PartialOrd%3CDescriptorXKey%3CK%3E%3E">PartialOrd<DescriptorXKey<K>></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="DescriptorXKey" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="struct" href="#">DescriptorXKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct DescriptorXKey<K> <span class="where fmt-newline">where<br> K: InnerXKey, </span> {
- pub origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An extended key with origin, derivation path, and wildcard."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorXKey"><title>DescriptorXKey in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorXKey</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.derivation_path">derivation_path</a></li><li><a href="#structfield.origin">origin</a></li><li><a href="#structfield.wildcard">wildcard</a></li><li><a href="#structfield.xkey">xkey</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.matches">matches</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-DescriptorXKey%3CK%3E">Clone</a></li><li><a href="#impl-Debug-for-DescriptorXKey%3CK%3E">Debug</a></li><li><a href="#impl-Eq-for-DescriptorXKey%3CK%3E">Eq</a></li><li><a href="#impl-Hash-for-DescriptorXKey%3CK%3E">Hash</a></li><li><a href="#impl-Ord-for-DescriptorXKey%3CK%3E">Ord</a></li><li><a href="#impl-PartialEq%3CDescriptorXKey%3CK%3E%3E-for-DescriptorXKey%3CK%3E">PartialEq<DescriptorXKey<K>></a></li><li><a href="#impl-PartialOrd%3CDescriptorXKey%3CK%3E%3E-for-DescriptorXKey%3CK%3E">PartialOrd<DescriptorXKey<K>></a></li><li><a href="#impl-StructuralEq-for-DescriptorXKey%3CK%3E">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-DescriptorXKey%3CK%3E">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-DescriptorXKey%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DescriptorXKey%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-DescriptorXKey%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-DescriptorXKey%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DescriptorXKey%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-DescriptorXKey%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-DescriptorXKey%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-DescriptorXKey%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-DescriptorXKey%3CK%3E">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-DescriptorXKey%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-DescriptorXKey%3CK%3E">Into<U></a></li><li><a href="#impl-Pointable-for-DescriptorXKey%3CK%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-DescriptorXKey%3CK%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-DescriptorXKey%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-DescriptorXKey%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-DescriptorXKey%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="struct" href="#">DescriptorXKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct DescriptorXKey<K><span class="where fmt-newline">where<br> K: InnerXKey,</span>{
+ pub origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(Fingerprint, DerivationPath)>,
pub xkey: K,
pub derivation_path: DerivationPath,
pub wildcard: <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An extended key with origin, derivation path, and wildcard.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.origin" class="structfield small-section-header"><a href="#structfield.origin" class="anchor field"></a><code>origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>></code></span><div class="docblock"><p>Origin information</p>
-</div><span id="structfield.xkey" class="structfield small-section-header"><a href="#structfield.xkey" class="anchor field"></a><code>xkey: K</code></span><div class="docblock"><p>The extended key</p>
-</div><span id="structfield.derivation_path" class="structfield small-section-header"><a href="#structfield.derivation_path" class="anchor field"></a><code>derivation_path: DerivationPath</code></span><div class="docblock"><p>The derivation path</p>
-</div><span id="structfield.wildcard" class="structfield small-section-header"><a href="#structfield.wildcard" class="anchor field"></a><code>wildcard: <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></code></span><div class="docblock"><p>Whether the descriptor is wildcard</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.matches" class="method has-srclink"><div class="rightside"></div><a href="#method.matches" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.matches" class="fnname">matches</a><C>(<br> &self, <br> keysource: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <br> secp: &Secp256k1<C><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><DerivationPath> <span class="where fmt-newline">where<br> C: Signing, </span></h4></div></summary><div class="docblock"><p>Compares this key with a <code>keysource</code> and returns the matching derivation path, if any.</p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.origin" class="structfield small-section-header"><a href="#structfield.origin" class="anchor field">§</a><code>origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(Fingerprint, DerivationPath)></code></span><div class="docblock"><p>Origin information</p>
+</div><span id="structfield.xkey" class="structfield small-section-header"><a href="#structfield.xkey" class="anchor field">§</a><code>xkey: K</code></span><div class="docblock"><p>The extended key</p>
+</div><span id="structfield.derivation_path" class="structfield small-section-header"><a href="#structfield.derivation_path" class="anchor field">§</a><code>derivation_path: DerivationPath</code></span><div class="docblock"><p>The derivation path</p>
+</div><span id="structfield.wildcard" class="structfield small-section-header"><a href="#structfield.wildcard" class="anchor field">§</a><code>wildcard: <a class="enum" href="enum.Wildcard.html" title="enum bdk::descriptor::Wildcard">Wildcard</a></code></span><div class="docblock"><p>Whether the descriptor is wildcard</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.matches" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.matches" class="fn">matches</a><C>(<br> &self,<br> keysource: &(Fingerprint, DerivationPath),<br> secp: &Secp256k1<C><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><DerivationPath><span class="where fmt-newline">where<br> C: Signing,</span></h4></section></summary><div class="docblock"><p>Compares this key with a <code>keysource</code> and returns the matching derivation path, if any.</p>
<p>For keys that have an origin, the <code>keysource</code>’s fingerprint will be compared
with the origin’s fingerprint, and the <code>keysource</code>’s path will be compared with the concatenation of the
origin’s and key’s paths.</p>
<p>If the key <code>wildcard</code>, the last item of the <code>keysource</code>’s path will be ignored,</p>
-<h6 id="examples" class="section-header"><a href="#examples">Examples</a></h6>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">miniscript::bitcoin::util::bip32</span>;
-<span class="kw">use</span> <span class="ident">miniscript::descriptor::DescriptorPublicKey</span>;
+<h6 id="examples"><a href="#examples">Examples</a></h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>miniscript::bitcoin::util::bip32;
+<span class="kw">use </span>miniscript::descriptor::DescriptorPublicKey;
-<span class="kw">let</span> <span class="ident">ctx</span> <span class="op">=</span> <span class="ident">miniscript::bitcoin::secp256k1::Secp256k1::signing_only</span>();
+<span class="kw">let </span>ctx = miniscript::bitcoin::secp256k1::Secp256k1::signing_only();
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">DescriptorPublicKey::from_str</span>(<span class="string">"[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">xpub</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">key</span> {
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>) => <span class="ident">xpub</span>,
- <span class="kw">_</span> => <span class="macro">panic!</span>(<span class="string">"Parsing Error"</span>),
+<span class="kw">let </span>key = DescriptorPublicKey::from_str(<span class="string">"[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>;
+<span class="kw">let </span>xpub = <span class="kw">match </span>key {
+ DescriptorPublicKey::XPub(xpub) => xpub,
+ <span class="kw">_ </span>=> <span class="macro">panic!</span>(<span class="string">"Parsing Error"</span>),
};
<span class="macro">assert_eq!</span>(
- <span class="ident">xpub</span>.<span class="ident">matches</span>(<span class="kw-2">&</span>(
- <span class="ident">bip32::Fingerprint::from_str</span>(<span class="string">"d34db33f"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>,
- <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/1/42"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>
- ), <span class="kw-2">&</span><span class="ident">ctx</span>),
- <span class="prelude-val">Some</span>(<span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/1"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>)
+ xpub.matches(<span class="kw-2">&</span>(
+ bip32::Fingerprint::from_str(<span class="string">"d34db33f"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>,
+ bip32::DerivationPath::from_str(<span class="string">"m/44'/0'/0'/1/42"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?
+ </span>), <span class="kw-2">&</span>ctx),
+ <span class="prelude-val">Some</span>(bip32::DerivationPath::from_str(<span class="string">"m/44'/0'/0'/1"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>)
);
<span class="macro">assert_eq!</span>(
- <span class="ident">xpub</span>.<span class="ident">matches</span>(<span class="kw-2">&</span>(
- <span class="ident">bip32::Fingerprint::from_str</span>(<span class="string">"ffffffff"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>,
- <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/1/42"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>
- ), <span class="kw-2">&</span><span class="ident">ctx</span>),
- <span class="prelude-val">None</span>
-);
+ xpub.matches(<span class="kw-2">&</span>(
+ bip32::Fingerprint::from_str(<span class="string">"ffffffff"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>,
+ bip32::DerivationPath::from_str(<span class="string">"m/44'/0'/0'/1/42"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?
+ </span>), <span class="kw-2">&</span>ctx),
+ <span class="prelude-val">None
+</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">xpub</span>.<span class="ident">matches</span>(<span class="kw-2">&</span>(
- <span class="ident">bip32::Fingerprint::from_str</span>(<span class="string">"d34db33f"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>,
- <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/100/0"</span>).<span class="ident">or</span>(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>
- ), <span class="kw-2">&</span><span class="ident">ctx</span>),
- <span class="prelude-val">None</span>
-);</code></pre></div>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CDescriptorXKey%3CK%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CDescriptorXKey%3CK%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><K> + InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CDescriptorXKey%3CK%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CDescriptorXKey%3CK%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><K> + InnerXKey, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + InnerXKey, </span></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: InnerXKey, </span></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: InnerXKey, </span></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+ xpub.matches(<span class="kw-2">&</span>(
+ bip32::Fingerprint::from_str(<span class="string">"d34db33f"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?</span>,
+ bip32::DerivationPath::from_str(<span class="string">"m/44'/0'/0'/100/0"</span>).or(<span class="prelude-val">Err</span>(()))<span class="question-mark">?
+ </span>), <span class="kw-2">&</span>ctx),
+ <span class="prelude-val">None
+</span>);</code></pre></div>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Clone-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Debug-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Hash-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Ord-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CDescriptorXKey%3CK%3E%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-PartialEq%3CDescriptorXKey%3CK%3E%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><K> + InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CDescriptorXKey%3CK%3E%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-PartialOrd%3CDescriptorXKey%3CK%3E%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><K> + InnerXKey,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Eq-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + InnerXKey,</span></h3></section><section id="impl-StructuralEq-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-StructuralEq-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: InnerXKey,</span></h3></section><section id="impl-StructuralPartialEq-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: InnerXKey,</span></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-CallHasher-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-DescriptorXKey%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-DescriptorXKey%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Top-level script AST type"><meta name="keywords" content="rust, rustlang, rust-lang, Miniscript"><title>Miniscript in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Miniscript</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.ext">ext</a><a href="#structfield.node">node</a><a href="#structfield.ty">ty</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.as_inner">as_inner</a><a href="#method.branches">branches</a><a href="#method.contains_raw_pkh">contains_raw_pkh</a><a href="#method.encode">encode</a><a href="#method.ext_check">ext_check</a><a href="#method.from_ast">from_ast</a><a href="#method.from_str_ext">from_str_ext</a><a href="#method.from_str_insane">from_str_insane</a><a href="#method.get_nth_child">get_nth_child</a><a href="#method.get_nth_pk">get_nth_pk</a><a href="#method.has_mixed_timelocks">has_mixed_timelocks</a><a href="#method.has_repeated_keys">has_repeated_keys</a><a href="#method.into_inner">into_inner</a><a href="#method.is_non_malleable">is_non_malleable</a><a href="#method.iter">iter</a><a href="#method.iter_pk">iter_pk</a><a href="#method.lift_check">lift_check</a><a href="#method.max_satisfaction_size">max_satisfaction_size</a><a href="#method.max_satisfaction_witness_elements">max_satisfaction_witness_elements</a><a href="#method.parse">parse</a><a href="#method.parse_insane">parse_insane</a><a href="#method.parse_with_ext">parse_with_ext</a><a href="#method.requires_sig">requires_sig</a><a href="#method.sanity_check">sanity_check</a><a href="#method.satisfy">satisfy</a><a href="#method.satisfy_malleable">satisfy_malleable</a><a href="#method.script_size">script_size</a><a href="#method.within_resource_limits">within_resource_limits</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-ExtractPolicy">ExtractPolicy</a><a href="#impl-ForEachKey%3CPk%3E">ForEachKey<Pk></a><a href="#impl-FromStr">FromStr</a><a href="#impl-FromTree">FromTree</a><a href="#impl-Hash">Hash</a><a href="#impl-Liftable%3CPk%3E">Liftable<Pk></a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CMiniscript%3CPk%2C%20Ctx%3E%3E">PartialEq<Miniscript<Pk, Ctx>></a><a href="#impl-PartialOrd%3CMiniscript%3CPk%2C%20Ctx%3E%3E">PartialOrd<Miniscript<Pk, Ctx>></a><a href="#impl-Serialize">Serialize</a><a href="#impl-TranslatePk%3CPk%2C%20Q%3E">TranslatePk<Pk, Q></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="Miniscript" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="struct" href="#">Miniscript</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Miniscript<Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Top-level script AST type"><meta name="keywords" content="rust, rustlang, rust-lang, Miniscript"><title>Miniscript in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Miniscript</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.ext">ext</a></li><li><a href="#structfield.node">node</a></li><li><a href="#structfield.ty">ty</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.as_inner">as_inner</a></li><li><a href="#method.branches">branches</a></li><li><a href="#method.contains_raw_pkh">contains_raw_pkh</a></li><li><a href="#method.encode">encode</a></li><li><a href="#method.ext_check">ext_check</a></li><li><a href="#method.from_ast">from_ast</a></li><li><a href="#method.from_str_ext">from_str_ext</a></li><li><a href="#method.from_str_insane">from_str_insane</a></li><li><a href="#method.get_nth_child">get_nth_child</a></li><li><a href="#method.get_nth_pk">get_nth_pk</a></li><li><a href="#method.has_mixed_timelocks">has_mixed_timelocks</a></li><li><a href="#method.has_repeated_keys">has_repeated_keys</a></li><li><a href="#method.into_inner">into_inner</a></li><li><a href="#method.is_non_malleable">is_non_malleable</a></li><li><a href="#method.iter">iter</a></li><li><a href="#method.iter_pk">iter_pk</a></li><li><a href="#method.lift_check">lift_check</a></li><li><a href="#method.max_satisfaction_size">max_satisfaction_size</a></li><li><a href="#method.max_satisfaction_witness_elements">max_satisfaction_witness_elements</a></li><li><a href="#method.parse">parse</a></li><li><a href="#method.parse_insane">parse_insane</a></li><li><a href="#method.parse_with_ext">parse_with_ext</a></li><li><a href="#method.requires_sig">requires_sig</a></li><li><a href="#method.sanity_check">sanity_check</a></li><li><a href="#method.satisfy">satisfy</a></li><li><a href="#method.satisfy_malleable">satisfy_malleable</a></li><li><a href="#method.script_size">script_size</a></li><li><a href="#method.within_resource_limits">within_resource_limits</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Miniscript%3CPk%2C%20Ctx%3E">Clone</a></li><li><a href="#impl-Debug-for-Miniscript%3CPk%2C%20Ctx%3E">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-Miniscript%3CPk%2C%20Ctx%3E">Deserialize<'de></a></li><li><a href="#impl-Display-for-Miniscript%3CPk%2C%20Ctx%3E">Display</a></li><li><a href="#impl-Eq-for-Miniscript%3CPk%2C%20Ctx%3E">Eq</a></li><li><a href="#impl-ExtractPolicy-for-Miniscript%3CDescriptorPublicKey%2C%20Ctx%3E">ExtractPolicy</a></li><li><a href="#impl-ForEachKey%3CPk%3E-for-Miniscript%3CPk%2C%20Ctx%3E">ForEachKey<Pk></a></li><li><a href="#impl-FromStr-for-Miniscript%3CPk%2C%20Ctx%3E">FromStr</a></li><li><a href="#impl-FromTree-for-Miniscript%3CPk%2C%20Ctx%3E">FromTree</a></li><li><a href="#impl-Hash-for-Miniscript%3CPk%2C%20Ctx%3E">Hash</a></li><li><a href="#impl-Liftable%3CPk%3E-for-Miniscript%3CPk%2C%20Ctx%3E">Liftable<Pk></a></li><li><a href="#impl-Ord-for-Miniscript%3CPk%2C%20Ctx%3E">Ord</a></li><li><a href="#impl-PartialEq%3CMiniscript%3CPk%2C%20Ctx%3E%3E-for-Miniscript%3CPk%2C%20Ctx%3E">PartialEq<Miniscript<Pk, Ctx>></a></li><li><a href="#impl-PartialOrd%3CMiniscript%3CPk%2C%20Ctx%3E%3E-for-Miniscript%3CPk%2C%20Ctx%3E">PartialOrd<Miniscript<Pk, Ctx>></a></li><li><a href="#impl-Serialize-for-Miniscript%3CPk%2C%20Ctx%3E">Serialize</a></li><li><a href="#impl-TranslatePk%3CPk%2C%20Q%3E-for-Miniscript%3CPk%2C%20Ctx%3E">TranslatePk<Pk, Q></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Miniscript%3CPk%2C%20Ctx%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Miniscript%3CPk%2C%20Ctx%3E">Send</a></li><li><a href="#impl-Sync-for-Miniscript%3CPk%2C%20Ctx%3E">Sync</a></li><li><a href="#impl-Unpin-for-Miniscript%3CPk%2C%20Ctx%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Miniscript%3CPk%2C%20Ctx%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Miniscript%3CPk%2C%20Ctx%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Miniscript%3CPk%2C%20Ctx%3E">CallHasher</a></li><li><a href="#impl-DeserializeOwned-for-Miniscript%3CPk%2C%20Ctx%3E">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E">Into<U></a></li><li><a href="#impl-Pointable-for-Miniscript%3CPk%2C%20Ctx%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-Miniscript%3CPk%2C%20Ctx%3E">ToOwned</a></li><li><a href="#impl-ToString-for-Miniscript%3CPk%2C%20Ctx%3E">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Miniscript%3CPk%2C%20Ctx%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="struct" href="#">Miniscript</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Miniscript<Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span>{
pub node: Terminal<Pk, Ctx>,
pub ty: Type,
pub ext: ExtData,
/* private fields */
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Top-level script AST type</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.node" class="structfield small-section-header"><a href="#structfield.node" class="anchor field"></a><code>node: Terminal<Pk, Ctx></code></span><div class="docblock"><p>A node in the Abstract Syntax Tree(</p>
-</div><span id="structfield.ty" class="structfield small-section-header"><a href="#structfield.ty" class="anchor field"></a><code>ty: Type</code></span><div class="docblock"><p>The correctness and malleability type information for the AST node</p>
-</div><span id="structfield.ext" class="structfield small-section-header"><a href="#structfield.ext" class="anchor field"></a><code>ext: ExtData</code></span><div class="docblock"><p>Additional information helpful for extra analysis.</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.requires_sig" class="method has-srclink"><div class="rightside"></div><a href="#method.requires_sig" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.requires_sig" class="fnname">requires_sig</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether all spend paths of miniscript require a signature</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_non_malleable" class="method has-srclink"><div class="rightside"></div><a href="#method.is_non_malleable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_non_malleable" class="fnname">is_non_malleable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether the miniscript is malleable</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.within_resource_limits" class="method has-srclink"><div class="rightside"></div><a href="#method.within_resource_limits" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.within_resource_limits" class="fnname">within_resource_limits</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether the miniscript can exceed the resource limits(Opcodes, Stack limit etc)</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_mixed_timelocks" class="method has-srclink"><div class="rightside"></div><a href="#method.has_mixed_timelocks" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_mixed_timelocks" class="fnname">has_mixed_timelocks</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether the miniscript contains a combination of timelocks</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_repeated_keys" class="method has-srclink"><div class="rightside"></div><a href="#method.has_repeated_keys" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_repeated_keys" class="fnname">has_repeated_keys</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether the miniscript has repeated Pk or Pkh</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.contains_raw_pkh" class="method has-srclink"><div class="rightside"></div><a href="#method.contains_raw_pkh" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.contains_raw_pkh" class="fnname">contains_raw_pkh</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether the given miniscript contains a raw pkh fragment</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sanity_check" class="method has-srclink"><div class="rightside"></div><a href="#method.sanity_check" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sanity_check" class="fnname">sanity_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, AnalysisError></h4></div></summary><div class="docblock"><p>Check whether the underlying Miniscript is safe under the current context
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.node" class="structfield small-section-header"><a href="#structfield.node" class="anchor field">§</a><code>node: Terminal<Pk, Ctx></code></span><div class="docblock"><p>A node in the Abstract Syntax Tree(</p>
+</div><span id="structfield.ty" class="structfield small-section-header"><a href="#structfield.ty" class="anchor field">§</a><code>ty: Type</code></span><div class="docblock"><p>The correctness and malleability type information for the AST node</p>
+</div><span id="structfield.ext" class="structfield small-section-header"><a href="#structfield.ext" class="anchor field">§</a><code>ext: ExtData</code></span><div class="docblock"><p>Additional information helpful for extra analysis.</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.requires_sig" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.requires_sig" class="fn">requires_sig</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether all spend paths of miniscript require a signature</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_non_malleable" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_non_malleable" class="fn">is_non_malleable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether the miniscript is malleable</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.within_resource_limits" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.within_resource_limits" class="fn">within_resource_limits</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether the miniscript can exceed the resource limits(Opcodes, Stack limit etc)</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_mixed_timelocks" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.has_mixed_timelocks" class="fn">has_mixed_timelocks</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether the miniscript contains a combination of timelocks</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_repeated_keys" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.has_repeated_keys" class="fn">has_repeated_keys</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether the miniscript has repeated Pk or Pkh</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.contains_raw_pkh" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.contains_raw_pkh" class="fn">contains_raw_pkh</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether the given miniscript contains a raw pkh fragment</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sanity_check" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.sanity_check" class="fn">sanity_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, AnalysisError></h4></section></summary><div class="docblock"><p>Check whether the underlying Miniscript is safe under the current context
Lifting these polices would create a semantic representation that does
not represent the underlying semantics when miniscript is spent.
Signing logic may not find satisfaction even if one exists.</p>
Use this function to check whether the guarantees of library hold.
Most functions of the library like would still
work, but results cannot be relied upon</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ext_check" class="method has-srclink"><div class="rightside"></div><a href="#method.ext_check" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.ext_check" class="fnname">ext_check</a>(&self, ext: &ExtParams) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, AnalysisError></h4></div></summary><div class="docblock"><p>Check whether the miniscript follows the given Extra policy [<code>ExtParams</code>]</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-1" class="impl has-srclink"><div class="rightside"></div><a href="#impl-1" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="docblock"><p>Iterator-related extensions for <a href="struct.Miniscript.html" title="Miniscript">Miniscript</a></p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter" class="method has-srclink"><div class="rightside"></div><a href="#method.iter" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.iter" class="fnname">iter</a>(&self) -> Iter<'_, Pk, Ctx></h4></div></summary><div class="docblock"><p>Creates a new [Iter] iterator that will iterate over all <a href="struct.Miniscript.html" title="Miniscript">Miniscript</a> items within
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ext_check" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.ext_check" class="fn">ext_check</a>(&self, ext: &ExtParams) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, AnalysisError></h4></section></summary><div class="docblock"><p>Check whether the miniscript follows the given Extra policy [<code>ExtParams</code>]</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-1" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-1" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="docblock"><p>Iterator-related extensions for <a href="struct.Miniscript.html" title="Miniscript">Miniscript</a></p>
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&self) -> Iter<'_, Pk, Ctx></h4></section></summary><div class="docblock"><p>Creates a new [Iter] iterator that will iterate over all <a href="struct.Miniscript.html" title="Miniscript">Miniscript</a> items within
AST by traversing its branches. For the specific algorithm please see
[Iter::next] function.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.iter_pk" class="method has-srclink"><div class="rightside"></div><a href="#method.iter_pk" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.iter_pk" class="fnname">iter_pk</a>(&self) -> PkIter<'_, Pk, Ctx></h4></div></summary><div class="docblock"><p>Creates a new [PkIter] iterator that will iterate over all plain public keys (and not
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_pk" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.iter_pk" class="fn">iter_pk</a>(&self) -> PkIter<'_, Pk, Ctx></h4></section></summary><div class="docblock"><p>Creates a new [PkIter] iterator that will iterate over all plain public keys (and not
key hash values) present in <a href="struct.Miniscript.html" title="Miniscript">Miniscript</a> items within AST by traversing all its branches.
For the specific algorithm please see [PkIter::next] function.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.branches" class="method has-srclink"><div class="rightside"></div><a href="#method.branches" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.branches" class="fnname">branches</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><&<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A></div><code class="content"><span class="where fmt-newline">impl<A> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A> <span class="where fmt-newline">where<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>, </span></span></code></span></div></span></span></h4></div></summary><div class="docblock"><p>Enumerates all child nodes of the current AST node (<code>self</code>) and returns a <code>Vec</code> referencing
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.branches" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.branches" class="fn">branches</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><&<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>> <a href="#" class="notable-traits" data-ty="Vec<&Miniscript<Pk, Ctx>, Global>">ⓘ</a></h4></section></summary><div class="docblock"><p>Enumerates all child nodes of the current AST node (<code>self</code>) and returns a <code>Vec</code> referencing
them.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_nth_child" class="method has-srclink"><div class="rightside"></div><a href="#method.get_nth_child" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_nth_child" class="fnname">get_nth_child</a>(&self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>></h4></div></summary><div class="docblock"><p>Returns child node with given index, if any</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_nth_pk" class="method has-srclink"><div class="rightside"></div><a href="#method.get_nth_pk" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_nth_pk" class="fnname">get_nth_pk</a>(&self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Pk></h4></div></summary><div class="docblock"><p>Returns <code>Option::Some</code> with cloned n’th public key from the current miniscript item,
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_nth_child" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_nth_child" class="fn">get_nth_child</a>(&self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>></h4></section></summary><div class="docblock"><p>Returns child node with given index, if any</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_nth_pk" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.get_nth_pk" class="fn">get_nth_pk</a>(&self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Pk></h4></section></summary><div class="docblock"><p>Returns <code>Option::Some</code> with cloned n’th public key from the current miniscript item,
if any. Otherwise returns <code>Option::None</code>.</p>
<p>NB: The function analyzes only single miniscript item and not any of its descendants in AST.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-2" class="impl has-srclink"><div class="rightside"></div><a href="#impl-2" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_ast" class="method has-srclink"><div class="rightside"></div><a href="#method.from_ast" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_ast" class="fnname">from_ast</a>(t: Terminal<Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></div></summary><div class="docblock"><p>Add type information(Type and Extdata) to Miniscript based on
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-2" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-2" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_ast" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.from_ast" class="fn">from_ast</a>(t: Terminal<Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></section></summary><div class="docblock"><p>Add type information(Type and Extdata) to Miniscript based on
<code>AstElem</code> fragment. Dependent on display and clone because of Error
Display code of type_check.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-3" class="impl has-srclink"><div class="rightside"></div><a href="#impl-3" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_inner" class="method has-srclink"><div class="rightside"></div><a href="#method.into_inner" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.into_inner" class="fnname">into_inner</a>(self) -> Terminal<Pk, Ctx></h4></div></summary><div class="docblock"><p>Extracts the <code>AstElem</code> representing the root of the miniscript</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_inner" class="method has-srclink"><div class="rightside"></div><a href="#method.as_inner" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.as_inner" class="fnname">as_inner</a>(&self) -> &Terminal<Pk, Ctx></h4></div></summary><div class="docblock"><p>Get a reference to the inner <code>AstElem</code> representing the root of miniscript</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-4" class="impl has-srclink"><div class="rightside"></div><a href="#impl-4" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse_insane" class="method has-srclink"><div class="rightside"></div><a href="#method.parse_insane" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse_insane" class="fnname">parse_insane</a>(<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx>, Error></h4></div></summary><div class="docblock"><p>Attempt to parse an insane(scripts don’t clear sanity checks)
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-3" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-3" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_inner" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.into_inner" class="fn">into_inner</a>(self) -> Terminal<Pk, Ctx></h4></section></summary><div class="docblock"><p>Extracts the <code>AstElem</code> representing the root of the miniscript</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_inner" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.as_inner" class="fn">as_inner</a>(&self) -> &Terminal<Pk, Ctx></h4></section></summary><div class="docblock"><p>Get a reference to the inner <code>AstElem</code> representing the root of miniscript</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3C%3CCtx%20as%20ScriptContext%3E%3A%3AKey%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Miniscript%3C%3CCtx%20as%20ScriptContext%3E%3A%3AKey%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse_insane" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse_insane" class="fn">parse_insane</a>(<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx>, Error></h4></section></summary><div class="docblock"><p>Attempt to parse an insane(scripts don’t clear sanity checks)
script into a Miniscript representation.
Use this to parse scripts with repeated pubkeys, timelock mixing, malleable
scripts without sig or scripts that can exceed resource limits.
Some of the analysis guarantees of miniscript are lost when dealing with
insane scripts. In general, in a multi-party setting users should only
accept sane scripts.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse_with_ext" class="method has-srclink"><div class="rightside"></div><a href="#method.parse_with_ext" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse_with_ext" class="fnname">parse_with_ext</a>(<br> script: &Script, <br> ext: &ExtParams<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx>, Error></h4></div></summary><div class="docblock"><p>Attempt to parse an miniscript with extra features that not yet specified in the spec.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse_with_ext" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse_with_ext" class="fn">parse_with_ext</a>(<br> script: &Script,<br> ext: &ExtParams<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx>, Error></h4></section></summary><div class="docblock"><p>Attempt to parse an miniscript with extra features that not yet specified in the spec.
Users should not use this function unless they scripts can/will change in the future.
Currently, this function supports the following features:
- Parsing all insane scripts
- Parsing miniscripts with raw pubkey hashes</p>
<p>Allowed extra features can be specified by the ext [<code>ExtParams</code>] argument.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse" class="method has-srclink"><div class="rightside"></div><a href="#method.parse" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse" class="fnname">parse</a>(<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx>, Error></h4></div></summary><div class="docblock"><p>Attempt to parse a Script into Miniscript representation.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse" class="fn">parse</a>(<br> script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<Ctx as <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>::<a class="associatedtype" href="../keys/trait.ScriptContext.html#associatedtype.Key" title="type bdk::keys::ScriptContext::Key">Key</a>, Ctx>, Error></h4></section></summary><div class="docblock"><p>Attempt to parse a Script into Miniscript representation.</p>
<p>This function will fail parsing for scripts that do not clear the
<a href="struct.Miniscript.html#method.sanity_check" title="Miniscript::sanity_check"><code>Miniscript::sanity_check</code></a> checks. Use <a href="struct.Miniscript.html#method.parse_insane" title="Miniscript::parse_insane"><code>Miniscript::parse_insane</code></a> to
parse such scripts.</p>
-<h6 id="decodeparse-a-miniscript-from-script-hex" class="section-header"><a href="#decodeparse-a-miniscript-from-script-hex">Decode/Parse a miniscript from script hex</a></h6>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">Miniscript</span>, <span class="ident">Segwitv0</span>, <span class="ident">Tap</span>};
-<span class="kw">use</span> <span class="ident">miniscript::bitcoin::secp256k1::XOnlyPublicKey</span>;
-<span class="kw">use</span> <span class="ident">miniscript::bitcoin::hashes::hex::FromHex</span>;
+<h6 id="decodeparse-a-miniscript-from-script-hex"><a href="#decodeparse-a-miniscript-from-script-hex">Decode/Parse a miniscript from script hex</a></h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>miniscript::{Miniscript, Segwitv0, Tap};
+<span class="kw">use </span>miniscript::bitcoin::secp256k1::XOnlyPublicKey;
+<span class="kw">use </span>miniscript::bitcoin::hashes::hex::FromHex;
-<span class="kw">type</span> <span class="ident">Segwitv0Script</span> <span class="op">=</span> <span class="ident">Miniscript</span><span class="op"><</span><span class="ident">bitcoin::PublicKey</span>, <span class="ident">Segwitv0</span><span class="op">></span>;
-<span class="kw">type</span> <span class="ident">TapScript</span> <span class="op">=</span> <span class="ident">Miniscript</span><span class="op"><</span><span class="ident">XOnlyPublicKey</span>, <span class="ident">Tap</span><span class="op">></span>;
+<span class="kw">type </span>Segwitv0Script = Miniscript<bitcoin::PublicKey, Segwitv0>;
+<span class="kw">type </span>TapScript = Miniscript<XOnlyPublicKey, Tap>;
-<span class="comment">// parse x-only miniscript in Taproot context</span>
-<span class="kw">let</span> <span class="ident">tapscript_ms</span> <span class="op">=</span> <span class="ident">TapScript::parse</span>(<span class="kw-2">&</span><span class="ident">bitcoin::Script::from</span>(<span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+<span class="comment">// parse x-only miniscript in Taproot context
+</span><span class="kw">let </span>tapscript_ms = TapScript::parse(<span class="kw-2">&</span>bitcoin::Script::from(Vec::<u8>::from_hex(
<span class="string">"202788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac"</span>,
-).<span class="ident">expect</span>(<span class="string">"Even length hex"</span>)))
- .<span class="ident">expect</span>(<span class="string">"Xonly keys are valid only in taproot context"</span>);
-<span class="comment">// tapscript fails decoding when we use them with compressed keys</span>
-<span class="kw">let</span> <span class="ident">err</span> <span class="op">=</span> <span class="ident">TapScript::parse</span>(<span class="kw-2">&</span><span class="ident">bitcoin::Script::from</span>(<span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+).expect(<span class="string">"Even length hex"</span>)))
+ .expect(<span class="string">"Xonly keys are valid only in taproot context"</span>);
+<span class="comment">// tapscript fails decoding when we use them with compressed keys
+</span><span class="kw">let </span>err = TapScript::parse(<span class="kw-2">&</span>bitcoin::Script::from(Vec::<u8>::from_hex(
<span class="string">"21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac"</span>,
-).<span class="ident">expect</span>(<span class="string">"Even length hex"</span>)))
- .<span class="ident">expect_err</span>(<span class="string">"Compressed keys cannot be used in Taproot context"</span>);
-<span class="comment">// Segwitv0 succeeds decoding with full keys.</span>
-<span class="ident">Segwitv0Script::parse</span>(<span class="kw-2">&</span><span class="ident">bitcoin::Script::from</span>(<span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+).expect(<span class="string">"Even length hex"</span>)))
+ .expect_err(<span class="string">"Compressed keys cannot be used in Taproot context"</span>);
+<span class="comment">// Segwitv0 succeeds decoding with full keys.
+</span>Segwitv0Script::parse(<span class="kw-2">&</span>bitcoin::Script::from(Vec::<u8>::from_hex(
<span class="string">"21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac"</span>,
-).<span class="ident">expect</span>(<span class="string">"Even length hex"</span>)))
- .<span class="ident">expect</span>(<span class="string">"Compressed keys are allowed in Segwit context"</span>);
+).expect(<span class="string">"Even length hex"</span>)))
+ .expect(<span class="string">"Compressed keys are allowed in Segwit context"</span>);
</code></pre></div>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-5" class="impl has-srclink"><div class="rightside"></div><a href="#impl-5" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.encode" class="method has-srclink"><div class="rightside"></div><a href="#method.encode" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.encode" class="fnname">encode</a>(&self) -> Script <span class="where fmt-newline">where<br> Pk: ToPublicKey, </span></h4></div></summary><div class="docblock"><p>Encode as a Bitcoin script</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.script_size" class="method has-srclink"><div class="rightside"></div><a href="#method.script_size" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.script_size" class="fnname">script_size</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class="docblock"><p>Size, in bytes of the script-pubkey. If this Miniscript is used outside
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-4" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-4" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.encode" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.encode" class="fn">encode</a>(&self) -> Script<span class="where fmt-newline">where<br> Pk: ToPublicKey,</span></h4></section></summary><div class="docblock"><p>Encode as a Bitcoin script</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.script_size" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.script_size" class="fn">script_size</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Size, in bytes of the script-pubkey. If this Miniscript is used outside
of segwit (e.g. in a bare or P2SH descriptor), this quantity should be
multiplied by 4 to compute the weight.</p>
<p>In general, it is not recommended to use this function directly, but
to instead call the corresponding function on a <code>Descriptor</code>, which
will handle the segwit/non-segwit technicalities for you.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-6" class="impl has-srclink"><div class="rightside"></div><a href="#impl-6" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_witness_elements" class="method has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_witness_elements" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.max_satisfaction_witness_elements" class="fnname">max_satisfaction_witness_elements</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Error></h4></div></summary><div class="docblock"><p>Maximum number of witness elements used to satisfy the Miniscript
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-5" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-5" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_witness_elements" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.max_satisfaction_witness_elements" class="fn">max_satisfaction_witness_elements</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Error></h4></section></summary><div class="docblock"><p>Maximum number of witness elements used to satisfy the Miniscript
fragment, including the witness script itself. Used to estimate
the weight of the <code>VarInt</code> that specifies this number in a serialized
transaction.</p>
<p>This function may returns Error when the Miniscript is
impossible to satisfy</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_size" class="method has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.max_satisfaction_size" class="fnname">max_satisfaction_size</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Error></h4></div></summary><div class="docblock"><p>Maximum size, in bytes, of a satisfying witness. For Segwit outputs
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_size" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.max_satisfaction_size" class="fn">max_satisfaction_size</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Error></h4></section></summary><div class="docblock"><p>Maximum size, in bytes, of a satisfying witness. For Segwit outputs
<code>one_cost</code> should be set to 2, since the number <code>1</code> requires two
bytes to encode. For non-segwit outputs <code>one_cost</code> should be set to
1, since <code>OP_1</code> is available in scriptSigs.</p>
<p>All signatures are assumed to be 73 bytes in size, including the
length prefix (segwit) or push opcode (pre-segwit) and sighash
postfix.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-7" class="impl has-srclink"><div class="rightside"></div><a href="#impl-7" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.satisfy" class="method has-srclink"><div class="rightside"></div><a href="#method.satisfy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.satisfy" class="fnname">satisfy</a><S>(<br> &self, <br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Error> <span class="where fmt-newline">where<br> S: Satisfier<Pk>,<br> Pk: ToPublicKey, </span></h4></div></summary><div class="docblock"><p>Attempt to produce non-malleable satisfying witness for the
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-6" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-6" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str_insane" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.from_str_insane" class="fn">from_str_insane</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></section></summary><div class="docblock"><p>Attempt to parse an insane(scripts don’t clear sanity checks)
+from string into a Miniscript representation.
+Use this to parse scripts with repeated pubkeys, timelock mixing, malleable
+scripts without sig or scripts that can exceed resource limits.
+Some of the analysis guarantees of miniscript are lost when dealing with
+insane scripts. In general, in a multi-party setting users should only
+accept sane scripts.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-7" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-7" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str_ext" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.from_str_ext" class="fn">from_str_ext</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> ext: &ExtParams<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></section></summary><div class="docblock"><p>Attempt to parse an Miniscripts that don’t follow the spec.
+Use this to parse scripts with repeated pubkeys, timelock mixing, malleable
+scripts, raw pubkey hashes without sig or scripts that can exceed resource limits.</p>
+<p>Use [<code>ExtParams</code>] builder to specify the types of non-sane rules to allow while parsing.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-8" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-8" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.satisfy" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.satisfy" class="fn">satisfy</a><S>(<br> &self,<br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Error><span class="where fmt-newline">where<br> S: Satisfier<Pk>,<br> Pk: ToPublicKey,</span></h4></section></summary><div class="docblock"><p>Attempt to produce non-malleable satisfying witness for the
witness script represented by the parse tree</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.satisfy_malleable" class="method has-srclink"><div class="rightside"></div><a href="#method.satisfy_malleable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.satisfy_malleable" class="fnname">satisfy_malleable</a><S>(<br> &self, <br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Error> <span class="where fmt-newline">where<br> S: Satisfier<Pk>,<br> Pk: ToPublicKey, </span></h4></div></summary><div class="docblock"><p>Attempt to produce a malleable satisfying witness for the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.satisfy_malleable" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.satisfy_malleable" class="fn">satisfy_malleable</a><S>(<br> &self,<br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Error><span class="where fmt-newline">where<br> S: Satisfier<Pk>,<br> Pk: ToPublicKey,</span></h4></section></summary><div class="docblock"><p>Attempt to produce a malleable satisfying witness for the
witness script represented by the parse tree</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-8" class="impl has-srclink"><div class="rightside"></div><a href="#impl-8" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lift_check" class="method has-srclink"><div class="rightside"></div><a href="#method.lift_check" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.lift_check" class="fnname">lift_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, LiftError></h4></div></summary><div class="docblock"><p>Lifting corresponds conversion of miniscript into Policy
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Miniscript%3CPk%2C%20Ctx%3E-9" class="impl has-srclink"><a href="#impl-Miniscript%3CPk%2C%20Ctx%3E-9" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lift_check" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.lift_check" class="fn">lift_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, LiftError></h4></section></summary><div class="docblock"><p>Lifting corresponds conversion of miniscript into Policy
[policy.semantic.Policy] for human readable or machine analysis.
However, naively lifting miniscripts can result in incorrect
interpretations that don’t correspond underlying semantics when
<li>Timelock combination</li>
<li>Contains a spend that exceeds resource limits</li>
</ol>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-9" class="impl has-srclink"><div class="rightside"></div><a href="#impl-9" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str_insane" class="method has-srclink"><div class="rightside"></div><a href="#method.from_str_insane" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_str_insane" class="fnname">from_str_insane</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></div></summary><div class="docblock"><p>Attempt to parse an insane(scripts don’t clear sanity checks)
-from string into a Miniscript representation.
-Use this to parse scripts with repeated pubkeys, timelock mixing, malleable
-scripts without sig or scripts that can exceed resource limits.
-Some of the analysis guarantees of miniscript are lost when dealing with
-insane scripts. In general, in a multi-party setting users should only
-accept sane scripts.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-10" class="impl has-srclink"><div class="rightside"></div><a href="#impl-10" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str_ext" class="method has-srclink"><div class="rightside"></div><a href="#method.from_str_ext" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_str_ext" class="fnname">from_str_ext</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> ext: &ExtParams<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></div></summary><div class="docblock"><p>Attempt to parse an Miniscripts that don’t follow the spec.
-Use this to parse scripts with repeated pubkeys, timelock mixing, malleable
-scripts, raw pubkey hashes without sig or scripts that can exceed resource limits.</p>
-<p>Use [<code>ExtParams</code>] builder to specify the types of non-sane rules to allow while parsing.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de, Pk, Ctx> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">pub fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><D>(<br> deserializer: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, <D as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ExtractPolicy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/policy.rs.html#883-1016" title="goto source code">source</a></div><a href="#impl-ExtractPolicy" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> + 'static> <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.extract_policy" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/policy.rs.html#884-1015" title="goto source code">source</a></div><a href="#method.extract_policy" class="anchor"></a><h4 class="code-header">fn <a href="trait.ExtractPolicy.html#tymethod.extract_policy" class="fnname">extract_policy</a>(<br> &self, <br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>, <br> build_sat: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ForEachKey%3CPk%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ForEachKey%3CPk%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> ForEachKey<Pk> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.for_each_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.for_each_key" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">for_each_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a, </span></h4></div></summary><div class='docblock'><p>Run a predicate on every key in the descriptor, returning whether
-the predicate returned true for every key <a href="#tymethod.for_each_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.for_any_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.for_any_key" class="anchor"></a><h4 class="code-header">fn <a href="#method.for_any_key" class="fnname">for_any_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a, </span></h4></div></summary><div class='docblock'><p>Run a predicate on every key in the descriptor, returning whether
-the predicate returned true for any key <a href="#method.for_any_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></div></summary><div class="docblock"><p>Parse a Miniscript from string and perform sanity checks
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Clone-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Debug-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Deserialize%3C%27de%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'de, Pk, Ctx> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><D>(<br> deserializer: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, <D as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Display-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ExtractPolicy-for-Miniscript%3CDescriptorPublicKey%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/policy.rs.html#883-1016">source</a><a href="#impl-ExtractPolicy-for-Miniscript%3CDescriptorPublicKey%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> + 'static> <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.extract_policy" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/policy.rs.html#884-1015">source</a><a href="#method.extract_policy" class="anchor">§</a><h4 class="code-header">fn <a href="trait.ExtractPolicy.html#tymethod.extract_policy" class="fn">extract_policy</a>(<br> &self,<br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>,<br> build_sat: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ForEachKey%3CPk%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-ForEachKey%3CPk%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> ForEachKey<Pk> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_each_key" class="method trait-impl has-srclink"><a href="#method.for_each_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">for_each_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a,</span></h4></section></summary><div class='docblock'>Run a predicate on every key in the descriptor, returning whether
+the predicate returned true for every key <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_any_key" class="method trait-impl has-srclink"><a href="#method.for_any_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">for_any_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a,</span></h4></section></summary><div class='docblock'>Run a predicate on every key in the descriptor, returning whether
+the predicate returned true for any key <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-FromStr-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></section></summary><div class="docblock"><p>Parse a Miniscript from string and perform sanity checks
See <a href="struct.Miniscript.html#method.from_str_insane" title="Miniscript::from_str_insane">Miniscript::from_str_insane</a> to parse scripts from string that
do not clear the <a href="struct.Miniscript.html#method.sanity_check" title="Miniscript::sanity_check">Miniscript::sanity_check</a> checks.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = Error</h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromTree" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromTree" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> FromTree for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_tree" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_tree" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">from_tree</a>(top: &Tree<'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></div></summary><div class="docblock"><p>Parse an expression tree into a Miniscript. As a general rule, this
+</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = Error</h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromTree-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-FromTree-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> FromTree for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey + <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Sha256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash256 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Ripemd160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> <<Pk as MiniscriptKey>::Hash160 as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_tree" class="method trait-impl has-srclink"><a href="#method.from_tree" class="anchor">§</a><h4 class="code-header">fn <a class="fn">from_tree</a>(top: &Tree<'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>, Error></h4></section></summary><div class="docblock"><p>Parse an expression tree into a Miniscript. As a general rule, this
should not be called directly; rather go through the descriptor API.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Liftable%3CPk%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Liftable%3CPk%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> Liftable<Pk> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lift" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.lift" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">lift</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Policy<Pk>, Error></h4></div></summary><div class='docblock'><p>Convert the object into an abstract policy</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="docblock"><p><code>Ord</code> of <code>Miniscript</code> must depend only on node and not the type information.
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Hash-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Liftable%3CPk%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Liftable%3CPk%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> Liftable<Pk> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lift" class="method trait-impl has-srclink"><a href="#method.lift" class="anchor">§</a><h4 class="code-header">fn <a class="fn">lift</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Policy<Pk>, Error></h4></section></summary><div class='docblock'>Convert the object into an abstract policy</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Ord-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="docblock"><p><code>Ord</code> of <code>Miniscript</code> must depend only on node and not the type information.
The type information and extra_properties can be deterministically determined
by the ast.</p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CMiniscript%3CPk%2C%20Ctx%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CMiniscript%3CPk%2C%20Ctx%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="docblock"><p><code>PartialEq</code> of <code>Miniscript</code> must depend only on node and not the type information.
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CMiniscript%3CPk%2C%20Ctx%3E%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-PartialEq%3CMiniscript%3CPk%2C%20Ctx%3E%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="docblock"><p><code>PartialEq</code> of <code>Miniscript</code> must depend only on node and not the type information.
The type information and extra_properties can be deterministically determined
by the ast.</p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CMiniscript%3CPk%2C%20Ctx%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CMiniscript%3CPk%2C%20Ctx%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="docblock"><p><code>PartialOrd</code> of <code>Miniscript</code> must depend only on node and not the type information.
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CMiniscript%3CPk%2C%20Ctx%3E%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-PartialOrd%3CMiniscript%3CPk%2C%20Ctx%3E%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="docblock"><p><code>PartialOrd</code> of <code>Miniscript</code> must depend only on node and not the type information.
The type information and extra_properties can be deterministically determined
by the ast.</p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl<'de, Pk, Ctx> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">pub fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><S>(<br> &self, <br> serializer: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<S as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, <S as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TranslatePk%3CPk%2C%20Q%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-TranslatePk%3CPk%2C%20Q%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Q, Ctx> TranslatePk<Pk, Q> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Q: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.translate_pk" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.translate_pk" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">translate_pk</a><T, E>(<br> &self, <br> translate: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> as TranslatePk<Pk, Q>>::Output, E> <span class="where fmt-newline">where<br> T: Translator<Pk, Q, E>, </span></h4></div></summary><div class="docblock"><p>Translates a struct from one generic to another where the translation
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Serialize-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'de, Pk, Ctx> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><S>(<br> &self,<br> serializer: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<S as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, <S as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TranslatePk%3CPk%2C%20Q%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-TranslatePk%3CPk%2C%20Q%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Q, Ctx> TranslatePk<Pk, Q> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Q: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.translate_pk" class="method trait-impl has-srclink"><a href="#method.translate_pk" class="anchor">§</a><h4 class="code-header">fn <a class="fn">translate_pk</a><T, E>(<br> &self,<br> translate: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> as TranslatePk<Pk, Q>>::Output, E><span class="where fmt-newline">where<br> T: Translator<Pk, Q, E>,</span></h4></section></summary><div class="docblock"><p>Translates a struct from one generic to another where the translation
for Pk is provided by [<code>Translator</code>]</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Output" class="type trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Output" class="associatedtype">Output</a> = <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Q, Ctx></h4></div></summary><div class='docblock'><p>The associated output type. This must be <code>Self<Q></code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div><div class="docblock"><p><code>Eq</code> of <code>Miniscript</code> must depend only on node and not the type information.
+</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Output</a> = <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Q, Ctx></h4></section></summary><div class='docblock'>The associated output type. This must be <code>Self<Q></code>.</div></details></div></details><section id="impl-Eq-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Eq-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section><div class="docblock"><p><code>Eq</code> of <code>Miniscript</code> must depend only on node and not the type information.
The type information and extra_properties can be deterministically determined
by the ast.</p>
-</div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Send-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Sync-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Sync-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Hash256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Ripemd160: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> <Pk as MiniscriptKey>::Sha256: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-CallHasher-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-Miniscript%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-Miniscript%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div><script type="text/json" id="notable-traits-data">{"Vec<&Miniscript<Pk, Ctx>, Global>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A></code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl<A> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A><span class=\"where fmt-newline\">where<br> A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</span></span>"}</script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor templates"><meta name="keywords" content="rust, rustlang, rust-lang, template"><title>bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module template</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="template" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">template</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#12-766" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor templates</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Descriptor templates"><meta name="keywords" content="rust, rustlang, rust-lang, template"><title>bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module template</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a class="mod" href="#">template</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#12-766">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Descriptor templates</p>
<p>This module contains the definition of various common script templates that are ready to be
used. See the documentation of each template for an example.</p>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip44.html" title="bdk::descriptor::template::Bip44 struct">Bip44</a></div><div class="item-right docblock-short"><p>BIP44 template. Expands to <code>pkh(key/44'/{0,1}'/0'/{0,1}/*)</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip44Public.html" title="bdk::descriptor::template::Bip44Public struct">Bip44Public</a></div><div class="item-right docblock-short"><p>BIP44 public template. Expands to <code>pkh(key/{0,1}/*)</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip49.html" title="bdk::descriptor::template::Bip49 struct">Bip49</a></div><div class="item-right docblock-short"><p>BIP49 template. Expands to <code>sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip49Public.html" title="bdk::descriptor::template::Bip49Public struct">Bip49Public</a></div><div class="item-right docblock-short"><p>BIP49 public template. Expands to <code>sh(wpkh(key/{0,1}/*))</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip84.html" title="bdk::descriptor::template::Bip84 struct">Bip84</a></div><div class="item-right docblock-short"><p>BIP84 template. Expands to <code>wpkh(key/84'/{0,1}'/0'/{0,1}/*)</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip84Public.html" title="bdk::descriptor::template::Bip84Public struct">Bip84Public</a></div><div class="item-right docblock-short"><p>BIP84 public template. Expands to <code>wpkh(key/{0,1}/*)</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.P2Pkh.html" title="bdk::descriptor::template::P2Pkh struct">P2Pkh</a></div><div class="item-right docblock-short"><p>P2PKH template. Expands to a descriptor <code>pkh(key)</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.P2Wpkh.html" title="bdk::descriptor::template::P2Wpkh struct">P2Wpkh</a></div><div class="item-right docblock-short"><p>P2WPKH template. Expands to a descriptor <code>wpkh(key)</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.P2Wpkh_P2Sh.html" title="bdk::descriptor::template::P2Wpkh_P2Sh struct">P2Wpkh_P2Sh</a></div><div class="item-right docblock-short"><p>P2WPKH-P2SH template. Expands to a descriptor <code>sh(wpkh(key))</code></p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.DescriptorTemplate.html" title="bdk::descriptor::template::DescriptorTemplate trait">DescriptorTemplate</a></div><div class="item-right docblock-short"><p>Trait for descriptor templates that can be built into a full descriptor</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.DescriptorTemplateOut.html" title="bdk::descriptor::template::DescriptorTemplateOut type">DescriptorTemplateOut</a></div><div class="item-right docblock-short"><p>Type alias for the return type of <a href="trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a>, <a href="../../macro.descriptor.html"><code>descriptor!</code></a> and others</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip44.html" title="bdk::descriptor::template::Bip44 struct">Bip44</a></div><div class="item-right docblock-short">BIP44 template. Expands to <code>pkh(key/44'/{0,1}'/0'/{0,1}/*)</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip44Public.html" title="bdk::descriptor::template::Bip44Public struct">Bip44Public</a></div><div class="item-right docblock-short">BIP44 public template. Expands to <code>pkh(key/{0,1}/*)</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip49.html" title="bdk::descriptor::template::Bip49 struct">Bip49</a></div><div class="item-right docblock-short">BIP49 template. Expands to <code>sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip49Public.html" title="bdk::descriptor::template::Bip49Public struct">Bip49Public</a></div><div class="item-right docblock-short">BIP49 public template. Expands to <code>sh(wpkh(key/{0,1}/*))</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip84.html" title="bdk::descriptor::template::Bip84 struct">Bip84</a></div><div class="item-right docblock-short">BIP84 template. Expands to <code>wpkh(key/84'/{0,1}'/0'/{0,1}/*)</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Bip84Public.html" title="bdk::descriptor::template::Bip84Public struct">Bip84Public</a></div><div class="item-right docblock-short">BIP84 public template. Expands to <code>wpkh(key/{0,1}/*)</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.P2Pkh.html" title="bdk::descriptor::template::P2Pkh struct">P2Pkh</a></div><div class="item-right docblock-short">P2PKH template. Expands to a descriptor <code>pkh(key)</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.P2Wpkh.html" title="bdk::descriptor::template::P2Wpkh struct">P2Wpkh</a></div><div class="item-right docblock-short">P2WPKH template. Expands to a descriptor <code>wpkh(key)</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.P2Wpkh_P2Sh.html" title="bdk::descriptor::template::P2Wpkh_P2Sh struct">P2Wpkh_P2Sh</a></div><div class="item-right docblock-short">P2WPKH-P2SH template. Expands to a descriptor <code>sh(wpkh(key))</code></div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.DescriptorTemplate.html" title="bdk::descriptor::template::DescriptorTemplate trait">DescriptorTemplate</a></div><div class="item-right docblock-short">Trait for descriptor templates that can be built into a full descriptor</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.DescriptorTemplateOut.html" title="bdk::descriptor::template::DescriptorTemplateOut type">DescriptorTemplateOut</a></div><div class="item-right docblock-short">Type alias for the return type of <a href="trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a>, <a href="../../macro.descriptor.html"><code>descriptor!</code></a> and others</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"struct":[["Bip44","BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`"],["Bip44Public","BIP44 public template. Expands to `pkh(key/{0,1}/*)`"],["Bip49","BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`"],["Bip49Public","BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`"],["Bip84","BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`"],["Bip84Public","BIP84 public template. Expands to `wpkh(key/{0,1}/*)`"],["P2Pkh","P2PKH template. Expands to a descriptor `pkh(key)`"],["P2Wpkh","P2WPKH template. Expands to a descriptor `wpkh(key)`"],["P2Wpkh_P2Sh","P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`"]],"trait":[["DescriptorTemplate","Trait for descriptor templates that can be built into a full descriptor"]],"type":[["DescriptorTemplateOut","Type alias for the return type of [`DescriptorTemplate`], `descriptor!` and others"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":[["Bip44","BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`"],["Bip44Public","BIP44 public template. Expands to `pkh(key/{0,1}/*)`"],["Bip49","BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`"],["Bip49Public","BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`"],["Bip84","BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`"],["Bip84Public","BIP84 public template. Expands to `wpkh(key/{0,1}/*)`"],["P2Pkh","P2PKH template. Expands to a descriptor `pkh(key)`"],["P2Wpkh","P2WPKH template. Expands to a descriptor `wpkh(key)`"],["P2Wpkh_P2Sh","P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`"]],"trait":[["DescriptorTemplate","Trait for descriptor templates that can be built into a full descriptor"]],"type":[["DescriptorTemplateOut","Type alias for the return type of [`DescriptorTemplate`], `descriptor!` and others"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip44"><title>Bip44 in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Bip44</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="Bip44" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip44</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#201" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Bip44<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>>(pub K, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP44 template. Expands to <code>pkh(key/44'/{0,1}'/0'/{0,1}/*)</code></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip44"><title>Bip44 in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Bip44</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-Bip44%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Bip44%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Bip44%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-Bip44%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-Bip44%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Bip44%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Bip44%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Bip44%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Bip44%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Bip44%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Bip44%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-Bip44%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-Bip44%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Bip44%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Bip44%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Bip44%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip44</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#201">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Bip44<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>>(pub K, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP44 template. Expands to <code>pkh(key/44'/{0,1}'/0'/{0,1}/*)</code></p>
<p>Since there are hardened derivation steps, this template requires a private derivable key (generally a <code>xprv</code>/<code>tprv</code>).</p>
<p>See <a href="struct.Bip44Public.html" title="Bip44Public"><code>Bip44Public</code></a> for a template that can work with a <code>xpub</code>/<code>tpub</code>.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::Bip44</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::Bip44;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip44</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip44</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+<span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ Bip44(key.clone(), KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip44(key, KeychainKind::Internal)),
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(), <span class="string">"mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt"</span>);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field"></a><code>1: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#203-207" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#204-206" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">assert_eq!</span>(wallet.get_address(New)<span class="question-mark">?</span>.to_string(), <span class="string">"mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89"</span>);
+<span class="macro">assert_eq!</span>(wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap().to_string(), <span class="string">"pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt"</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field">§</a><code>1: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#203-207">source</a><a href="#impl-DescriptorTemplate-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#204-206">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Bip44%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP44 public template. Expands to `pkh(key/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip44Public"><title>Bip44Public in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Bip44Public</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="Bip44Public" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip44Public</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#241" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Bip44Public<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>>(pub K, pub Fingerprint, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP44 public template. Expands to <code>pkh(key/{0,1}/*)</code></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP44 public template. Expands to `pkh(key/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip44Public"><title>Bip44Public in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Bip44Public</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-Bip44Public%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Bip44Public%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Bip44Public%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-Bip44Public%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-Bip44Public%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Bip44Public%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Bip44Public%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Bip44Public%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Bip44Public%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Bip44Public%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Bip44Public%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-Bip44Public%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-Bip44Public%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Bip44Public%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Bip44Public%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Bip44Public%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip44Public</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#241">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Bip44Public<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>>(pub K, pub Fingerprint, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP44 public template. Expands to <code>pkh(key/{0,1}/*)</code></p>
<p>This assumes that the key used has already been derived with <code>m/44'/0'/0'</code> for Mainnet or <code>m/44'/1'/0'</code> for Testnet.</p>
<p>This template requires the parent fingerprint to populate correctly the metadata of PSBTs.</p>
<p>See <a href="struct.Bip44.html" title="Bip44"><code>Bip44</code></a> for a template that does the full derivation, but requires private data
for the key.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::Bip44Public</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::Bip44Public;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::Fingerprint::from_str</span>(<span class="string">"c55b303f"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip44Public</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip44Public</span>(<span class="ident">key</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+<span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPubKey::from_str(<span class="string">"tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>fingerprint = bitcoin::util::bip32::Fingerprint::from_str(<span class="string">"c55b303f"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ Bip44Public(key.clone(), fingerprint, KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip44Public(key, fingerprint, KeychainKind::Internal)),
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(), <span class="string">"miNG7dJTzJqNbFS19svRdTCisC65dsubtR"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"pkh([c55b303f/44'/0'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#xgaaevjx"</span>);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field"></a><code>1: Fingerprint</code></span><span id="structfield.2" class="structfield small-section-header"><a href="#structfield.2" class="anchor field"></a><code>2: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#243-247" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#244-246" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">assert_eq!</span>(wallet.get_address(New)<span class="question-mark">?</span>.to_string(), <span class="string">"miNG7dJTzJqNbFS19svRdTCisC65dsubtR"</span>);
+<span class="macro">assert_eq!</span>(wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap().to_string(), <span class="string">"pkh([c55b303f/44'/0'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#xgaaevjx"</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field">§</a><code>1: Fingerprint</code></span><span id="structfield.2" class="structfield small-section-header"><a href="#structfield.2" class="anchor field">§</a><code>2: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#243-247">source</a><a href="#impl-DescriptorTemplate-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#244-246">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Bip44Public%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip49"><title>Bip49 in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Bip49</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="Bip49" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip49</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#277" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Bip49<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP49 template. Expands to <code>sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))</code></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip49"><title>Bip49 in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Bip49</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-Bip49%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Bip49%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Bip49%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-Bip49%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-Bip49%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Bip49%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Bip49%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Bip49%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Bip49%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Bip49%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Bip49%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-Bip49%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-Bip49%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Bip49%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Bip49%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Bip49%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip49</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#277">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Bip49<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP49 template. Expands to <code>sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))</code></p>
<p>Since there are hardened derivation steps, this template requires a private derivable key (generally a <code>xprv</code>/<code>tprv</code>).</p>
<p>See <a href="struct.Bip49Public.html" title="Bip49Public"><code>Bip49Public</code></a> for a template that can work with a <code>xpub</code>/<code>tpub</code>.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::Bip49</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::Bip49;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip49</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip49</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+<span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ Bip49(key.clone(), KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip49(key, KeychainKind::Internal)),
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(), <span class="string">"2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e"</span>);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field"></a><code>1: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#279-283" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#280-282" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">assert_eq!</span>(wallet.get_address(New)<span class="question-mark">?</span>.to_string(), <span class="string">"2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB"</span>);
+<span class="macro">assert_eq!</span>(wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap().to_string(), <span class="string">"sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e"</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field">§</a><code>1: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#279-283">source</a><a href="#impl-DescriptorTemplate-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#280-282">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Bip49%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip49Public"><title>Bip49Public in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Bip49Public</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="Bip49Public" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip49Public</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#317" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Bip49Public<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub Fingerprint, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP49 public template. Expands to <code>sh(wpkh(key/{0,1}/*))</code></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip49Public"><title>Bip49Public in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Bip49Public</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-Bip49Public%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Bip49Public%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Bip49Public%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-Bip49Public%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-Bip49Public%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Bip49Public%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Bip49Public%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Bip49Public%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Bip49Public%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Bip49Public%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Bip49Public%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-Bip49Public%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-Bip49Public%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Bip49Public%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Bip49Public%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Bip49Public%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip49Public</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#317">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Bip49Public<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub Fingerprint, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP49 public template. Expands to <code>sh(wpkh(key/{0,1}/*))</code></p>
<p>This assumes that the key used has already been derived with <code>m/49'/0'/0'</code>.</p>
<p>This template requires the parent fingerprint to populate correctly the metadata of PSBTs.</p>
<p>See <a href="struct.Bip49.html" title="Bip49"><code>Bip49</code></a> for a template that does the full derivation, but requires private data
for the key.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::Bip49Public</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::Bip49Public;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::Fingerprint::from_str</span>(<span class="string">"c55b303f"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip49Public</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip49Public</span>(<span class="ident">key</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+<span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPubKey::from_str(<span class="string">"tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>fingerprint = bitcoin::util::bip32::Fingerprint::from_str(<span class="string">"c55b303f"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ Bip49Public(key.clone(), fingerprint, KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip49Public(key, fingerprint, KeychainKind::Internal)),
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(), <span class="string">"2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"sh(wpkh([c55b303f/49'/0'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#gsmdv4xr"</span>);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field"></a><code>1: Fingerprint</code></span><span id="structfield.2" class="structfield small-section-header"><a href="#structfield.2" class="anchor field"></a><code>2: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#319-323" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#320-322" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">assert_eq!</span>(wallet.get_address(New)<span class="question-mark">?</span>.to_string(), <span class="string">"2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt"</span>);
+<span class="macro">assert_eq!</span>(wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap().to_string(), <span class="string">"sh(wpkh([c55b303f/49'/0'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#gsmdv4xr"</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field">§</a><code>1: Fingerprint</code></span><span id="structfield.2" class="structfield small-section-header"><a href="#structfield.2" class="anchor field">§</a><code>2: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#319-323">source</a><a href="#impl-DescriptorTemplate-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#320-322">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Bip49Public%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip84"><title>Bip84 in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Bip84</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="Bip84" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip84</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#353" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Bip84<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP84 template. Expands to <code>wpkh(key/84'/{0,1}'/0'/{0,1}/*)</code></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip84"><title>Bip84 in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Bip84</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-Bip84%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Bip84%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Bip84%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-Bip84%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-Bip84%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Bip84%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Bip84%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Bip84%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Bip84%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Bip84%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Bip84%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-Bip84%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-Bip84%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Bip84%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Bip84%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Bip84%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip84</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#353">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Bip84<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP84 template. Expands to <code>wpkh(key/84'/{0,1}'/0'/{0,1}/*)</code></p>
<p>Since there are hardened derivation steps, this template requires a private derivable key (generally a <code>xprv</code>/<code>tprv</code>).</p>
<p>See <a href="struct.Bip84Public.html" title="Bip84Public"><code>Bip84Public</code></a> for a template that can work with a <code>xpub</code>/<code>tpub</code>.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::Bip84</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::Bip84;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip84</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip84</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+<span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ Bip84(key.clone(), KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip84(key, KeychainKind::Internal)),
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(), <span class="string">"tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr"</span>);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field"></a><code>1: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#355-359" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#356-358" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">assert_eq!</span>(wallet.get_address(New)<span class="question-mark">?</span>.to_string(), <span class="string">"tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n"</span>);
+<span class="macro">assert_eq!</span>(wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap().to_string(), <span class="string">"wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr"</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field">§</a><code>1: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#355-359">source</a><a href="#impl-DescriptorTemplate-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#356-358">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Bip84%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP84 public template. Expands to `wpkh(key/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip84Public"><title>Bip84Public in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Bip84Public</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="Bip84Public" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip84Public</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#393" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Bip84Public<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub Fingerprint, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP84 public template. Expands to <code>wpkh(key/{0,1}/*)</code></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP84 public template. Expands to `wpkh(key/{0,1}/*)`"><meta name="keywords" content="rust, rustlang, rust-lang, Bip84Public"><title>Bip84Public in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Bip84Public</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-Bip84Public%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Bip84Public%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Bip84Public%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-Bip84Public%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-Bip84Public%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Bip84Public%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Bip84Public%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Bip84Public%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Bip84Public%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Bip84Public%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Bip84Public%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-Bip84Public%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-Bip84Public%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Bip84Public%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Bip84Public%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Bip84Public%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">Bip84Public</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#393">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Bip84Public<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K, pub Fingerprint, pub <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP84 public template. Expands to <code>wpkh(key/{0,1}/*)</code></p>
<p>This assumes that the key used has already been derived with <code>m/84'/0'/0'</code>.</p>
<p>This template requires the parent fingerprint to populate correctly the metadata of PSBTs.</p>
<p>See <a href="struct.Bip84.html" title="Bip84"><code>Bip84</code></a> for a template that does the full derivation, but requires private data
for the key.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::Bip84Public</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::Bip84Public;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::Fingerprint::from_str</span>(<span class="string">"c55b303f"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip84Public</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip84Public</span>(<span class="ident">key</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+<span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPubKey::from_str(<span class="string">"tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>fingerprint = bitcoin::util::bip32::Fingerprint::from_str(<span class="string">"c55b303f"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ Bip84Public(key.clone(), fingerprint, KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip84Public(key, fingerprint, KeychainKind::Internal)),
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(), <span class="string">"tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7"</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"wpkh([c55b303f/84\'/0\'/0\']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#nkk5dtkg"</span>);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field"></a><code>1: Fingerprint</code></span><span id="structfield.2" class="structfield small-section-header"><a href="#structfield.2" class="anchor field"></a><code>2: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#395-399" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#396-398" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">assert_eq!</span>(wallet.get_address(New)<span class="question-mark">?</span>.to_string(), <span class="string">"tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7"</span>);
+<span class="macro">assert_eq!</span>(wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap().to_string(), <span class="string">"wpkh([c55b303f/84\'/0\'/0\']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#nkk5dtkg"</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><span id="structfield.1" class="structfield small-section-header"><a href="#structfield.1" class="anchor field">§</a><code>1: Fingerprint</code></span><span id="structfield.2" class="structfield small-section-header"><a href="#structfield.2" class="anchor field">§</a><code>2: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#395-399">source</a><a href="#impl-DescriptorTemplate-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#396-398">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Bip84Public%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="P2PKH template. Expands to a descriptor `pkh(key)`"><meta name="keywords" content="rust, rustlang, rust-lang, P2Pkh"><title>P2Pkh in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">P2Pkh</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="P2Pkh" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">P2Pkh</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#96" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct P2Pkh<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>>(pub K);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>P2PKH template. Expands to a descriptor <code>pkh(key)</code></p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::P2Pkh</span>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="P2PKH template. Expands to a descriptor `pkh(key)`"><meta name="keywords" content="rust, rustlang, rust-lang, P2Pkh"><title>P2Pkh in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">P2Pkh</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-P2Pkh%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-P2Pkh%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-P2Pkh%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-P2Pkh%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-P2Pkh%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-P2Pkh%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-P2Pkh%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-P2Pkh%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-P2Pkh%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-P2Pkh%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-P2Pkh%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-P2Pkh%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-P2Pkh%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-P2Pkh%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-P2Pkh%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-P2Pkh%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">P2Pkh</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#96">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct P2Pkh<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>>(pub K);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>P2PKH template. Expands to a descriptor <code>pkh(key)</code></p>
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::P2Pkh;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">P2Pkh</span>(<span class="ident">key</span>),
+<span class="kw">let </span>key =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ P2Pkh(key),
<span class="prelude-val">None</span>,
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(),
- <span class="string">"mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"</span>
-);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#98-102" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#99-101" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> _network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+ wallet.get_address(New)<span class="question-mark">?</span>.to_string(),
+ <span class="string">"mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
+</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#98-102">source</a><a href="#impl-DescriptorTemplate-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#99-101">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> _network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-P2Pkh%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="P2WPKH template. Expands to a descriptor `wpkh(key)`"><meta name="keywords" content="rust, rustlang, rust-lang, P2Wpkh"><title>P2Wpkh in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">P2Wpkh</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="P2Wpkh" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">P2Wpkh</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#165" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct P2Wpkh<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>P2WPKH template. Expands to a descriptor <code>wpkh(key)</code></p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::P2Wpkh</span>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="P2WPKH template. Expands to a descriptor `wpkh(key)`"><meta name="keywords" content="rust, rustlang, rust-lang, P2Wpkh"><title>P2Wpkh in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">P2Wpkh</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-P2Wpkh%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-P2Wpkh%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-P2Wpkh%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-P2Wpkh%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-P2Wpkh%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-P2Wpkh%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-P2Wpkh%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-P2Wpkh%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-P2Wpkh%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-P2Wpkh%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-P2Wpkh%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-P2Wpkh%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-P2Wpkh%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-P2Wpkh%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-P2Wpkh%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-P2Wpkh%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">P2Wpkh</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#165">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct P2Wpkh<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>P2WPKH template. Expands to a descriptor <code>wpkh(key)</code></p>
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::P2Wpkh;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">P2Wpkh</span>(<span class="ident">key</span>),
+<span class="kw">let </span>key =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ P2Wpkh(key),
<span class="prelude-val">None</span>,
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(),
- <span class="string">"tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"</span>
-);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#167-171" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#168-170" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> _network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+ wallet.get_address(New)<span class="question-mark">?</span>.to_string(),
+ <span class="string">"tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
+</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#167-171">source</a><a href="#impl-DescriptorTemplate-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#168-170">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> _network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`"><meta name="keywords" content="rust, rustlang, rust-lang, P2Wpkh_P2Sh"><title>P2Wpkh_P2Sh in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">P2Wpkh_P2Sh</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DescriptorTemplate">DescriptorTemplate</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="P2Wpkh_P2Sh" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">P2Wpkh_P2Sh</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#131" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct P2Wpkh_P2Sh<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>P2WPKH-P2SH template. Expands to a descriptor <code>sh(wpkh(key))</code></p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::template::P2Wpkh_P2Sh</span>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`"><meta name="keywords" content="rust, rustlang, rust-lang, P2Wpkh_P2Sh"><title>P2Wpkh_P2Sh in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">P2Wpkh_P2Sh</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DescriptorTemplate-for-P2Wpkh_P2Sh%3CK%3E">DescriptorTemplate</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-P2Wpkh_P2Sh%3CK%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-P2Wpkh_P2Sh%3CK%3E">Send</a></li><li><a href="#impl-Sync-for-P2Wpkh_P2Sh%3CK%3E">Sync</a></li><li><a href="#impl-Unpin-for-P2Wpkh_P2Sh%3CK%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-P2Wpkh_P2Sh%3CK%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-P2Wpkh_P2Sh%3CK%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E">Into<U></a></li><li><a href="#impl-IntoWalletDescriptor-for-P2Wpkh_P2Sh%3CK%3E">IntoWalletDescriptor</a></li><li><a href="#impl-Pointable-for-P2Wpkh_P2Sh%3CK%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-P2Wpkh_P2Sh%3CK%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="struct" href="#">P2Wpkh_P2Sh</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#131">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct P2Wpkh_P2Sh<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>>(pub K);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>P2WPKH-P2SH template. Expands to a descriptor <code>sh(wpkh(key))</code></p>
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::template::P2Wpkh_P2Sh;
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">P2Wpkh_P2Sh</span>(<span class="ident">key</span>),
+<span class="kw">let </span>key =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ P2Wpkh_P2Sh(key),
<span class="prelude-val">None</span>,
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>.<span class="ident">to_string</span>(),
- <span class="string">"2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"</span>
-);</code></pre></div>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: K</code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#133-137" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#134-136" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fnname">build</a>(<br> self, <br> _network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Build the complete descriptor</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K> <span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#61-67" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> Self, <br> &Secp256k1<All>, <br> Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+ wallet.get_address(New)<span class="question-mark">?</span>.to_string(),
+ <span class="string">"2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
+</span>);</code></pre></div>
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: K</code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorTemplate-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#133-137">source</a><a href="#impl-DescriptorTemplate-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#134-136">source</a><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DescriptorTemplate.html#tymethod.build" class="fn">build</a>(<br> self,<br> _network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Build the complete descriptor</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-Send-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-Sync-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-Unpin-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K><span class="where fmt-newline">where<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#61-67">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="enum" href="../enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-Pointable-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for descriptor templates that can be built into a full descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorTemplate"><title>DescriptorTemplate in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorTemplate</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.build">build</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="DescriptorTemplate" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="trait" href="#">DescriptorTemplate</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#53-56" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait DescriptorTemplate {
- fn <a href="#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for descriptor templates that can be built into a full descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorTemplate"><title>DescriptorTemplate in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorTemplate</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.build">build</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="trait" href="#">DescriptorTemplate</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#53-56">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait DescriptorTemplate {
+ fn <a href="#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for descriptor templates that can be built into a full descriptor</p>
<p>Since <a href="../trait.IntoWalletDescriptor.html" title="IntoWalletDescriptor"><code>IntoWalletDescriptor</code></a> is implemented for any <a href="trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a>, they can also be
passed directly to the <a href="../../wallet/struct.Wallet.html"><code>Wallet</code></a> constructor.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::descriptor::error::Error</span> <span class="kw">as</span> <span class="ident">DescriptorError</span>;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{<span class="ident">IntoDescriptorKey</span>, <span class="ident">KeyError</span>};
-<span class="kw">use</span> <span class="ident">bdk::miniscript::Legacy</span>;
-<span class="kw">use</span> <span class="ident">bdk::template</span>::{<span class="ident">DescriptorTemplate</span>, <span class="ident">DescriptorTemplateOut</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::Network</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::descriptor::error::Error <span class="kw">as </span>DescriptorError;
+<span class="kw">use </span>bdk::keys::{IntoDescriptorKey, KeyError};
+<span class="kw">use </span>bdk::miniscript::Legacy;
+<span class="kw">use </span>bdk::template::{DescriptorTemplate, DescriptorTemplateOut};
+<span class="kw">use </span>bitcoin::Network;
-<span class="kw">struct</span> <span class="ident">MyP2PKH</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span>(<span class="ident">K</span>);
+<span class="kw">struct </span>MyP2PKH<K: IntoDescriptorKey<Legacy>>(K);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">MyP2PKH</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="macro">bdk::descriptor!</span>(<span class="ident">pkh</span>(<span class="self">self</span>.<span class="number">0</span>))<span class="question-mark">?</span>)
+<span class="kw">impl</span><K: IntoDescriptorKey<Legacy>> DescriptorTemplate <span class="kw">for </span>MyP2PKH<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ <span class="prelude-val">Ok</span>(<span class="macro">bdk::descriptor!</span>(pkh(<span class="self">self</span>.<span class="number">0</span>))<span class="question-mark">?</span>)
}
}</code></pre></div>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.build" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#55" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.build" class="fnname">build</a>(<br> self, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class="docblock"><p>Build the complete descriptor</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-DescriptorTemplate" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#203-207" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K></h3></div><div id="impl-DescriptorTemplate-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#243-247" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-1" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K></h3></div><div id="impl-DescriptorTemplate-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#279-283" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-2" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K></h3></div><div id="impl-DescriptorTemplate-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#319-323" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-3" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K></h3></div><div id="impl-DescriptorTemplate-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#355-359" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-4" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K></h3></div><div id="impl-DescriptorTemplate-5" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#395-399" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-5" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K></h3></div><div id="impl-DescriptorTemplate-6" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#98-102" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-6" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K></h3></div><div id="impl-DescriptorTemplate-7" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#167-171" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-7" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K></h3></div><div id="impl-DescriptorTemplate-8" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#133-137" title="goto source code">source</a></div><a href="#impl-DescriptorTemplate-8" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K></h3></div></div><script type="text/javascript" src="../../../implementors/bdk/descriptor/template/trait.DescriptorTemplate.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.build" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#55">source</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(<br> self,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class="docblock"><p>Build the complete descriptor</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-DescriptorTemplate-for-Bip44%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#203-207">source</a><a href="#impl-DescriptorTemplate-for-Bip44%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44.html" title="struct bdk::descriptor::template::Bip44">Bip44</a><K></h3></section><section id="impl-DescriptorTemplate-for-Bip44Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#243-247">source</a><a href="#impl-DescriptorTemplate-for-Bip44Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip44Public.html" title="struct bdk::descriptor::template::Bip44Public">Bip44Public</a><K></h3></section><section id="impl-DescriptorTemplate-for-Bip49%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#279-283">source</a><a href="#impl-DescriptorTemplate-for-Bip49%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49.html" title="struct bdk::descriptor::template::Bip49">Bip49</a><K></h3></section><section id="impl-DescriptorTemplate-for-Bip49Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#319-323">source</a><a href="#impl-DescriptorTemplate-for-Bip49Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip49Public.html" title="struct bdk::descriptor::template::Bip49Public">Bip49Public</a><K></h3></section><section id="impl-DescriptorTemplate-for-Bip84%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#355-359">source</a><a href="#impl-DescriptorTemplate-for-Bip84%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84.html" title="struct bdk::descriptor::template::Bip84">Bip84</a><K></h3></section><section id="impl-DescriptorTemplate-for-Bip84Public%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#395-399">source</a><a href="#impl-DescriptorTemplate-for-Bip84Public%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.Bip84Public.html" title="struct bdk::descriptor::template::Bip84Public">Bip84Public</a><K></h3></section><section id="impl-DescriptorTemplate-for-P2Pkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#98-102">source</a><a href="#impl-DescriptorTemplate-for-P2Pkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Pkh.html" title="struct bdk::descriptor::template::P2Pkh">P2Pkh</a><K></h3></section><section id="impl-DescriptorTemplate-for-P2Wpkh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#167-171">source</a><a href="#impl-DescriptorTemplate-for-P2Wpkh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh.html" title="struct bdk::descriptor::template::P2Wpkh">P2Wpkh</a><K></h3></section><section id="impl-DescriptorTemplate-for-P2Wpkh_P2Sh%3CK%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/template.rs.html#133-137">source</a><a href="#impl-DescriptorTemplate-for-P2Wpkh_P2Sh%3CK%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="../../keys/trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><<a class="enum" href="../enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a>>> <a class="trait" href="trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a> for <a class="struct" href="struct.P2Wpkh_P2Sh.html" title="struct bdk::descriptor::template::P2Wpkh_P2Sh">P2Wpkh_P2Sh</a><K></h3></section></div><script src="../../../implementors/bdk/descriptor/template/trait.DescriptorTemplate.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type alias for the return type of [`DescriptorTemplate`], `descriptor!` and others"><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorTemplateOut"><title>DescriptorTemplateOut in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorTemplateOut</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a></h2><div id="sidebar-vars" data-name="DescriptorTemplateOut" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="type" href="#">DescriptorTemplateOut</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#29" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type DescriptorTemplateOut = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="../type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>, <a class="type" href="../../keys/type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type alias for the return type of <a href="trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a>, <a href="../../macro.descriptor.html"><code>descriptor!</code></a> and others</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/mod.rs.html#204-274" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/descriptor/mod.rs.html#205-273" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> _secp: &Secp256k1<All>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="../type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type alias for the return type of [`DescriptorTemplate`], `descriptor!` and others"><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorTemplateOut"><title>DescriptorTemplateOut in bdk::descriptor::template - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorTemplateOut</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-IntoWalletDescriptor-for-DescriptorTemplateOut">IntoWalletDescriptor</a></li></ul></section><h2><a href="index.html">In bdk::descriptor::template</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">descriptor</a>::<wbr><a href="index.html">template</a>::<wbr><a class="type" href="#">DescriptorTemplateOut</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/descriptor/template.rs.html#29">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type DescriptorTemplateOut = (<a class="type" href="../type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>, <a class="type" href="../../keys/type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type alias for the return type of <a href="trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a>, <a href="../../macro.descriptor.html"><code>descriptor!</code></a> and others</p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoWalletDescriptor-for-DescriptorTemplateOut" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/mod.rs.html#204-274">source</a><a href="#impl-IntoWalletDescriptor-for-DescriptorTemplateOut" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/descriptor/mod.rs.html#205-273">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> _secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="../type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="../error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"><meta name="keywords" content="rust, rustlang, rust-lang, ExtractPolicy"><title>ExtractPolicy in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ExtractPolicy</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.extract_policy">extract_policy</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="ExtractPolicy" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="trait" href="#">ExtractPolicy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#327-335" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait ExtractPolicy {
- fn <a href="#tymethod.extract_policy" class="fnname">extract_policy</a>(<br> &self, <br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>, <br> psbt: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>, <br> secp: &Secp256k1<All><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"><meta name="keywords" content="rust, rustlang, rust-lang, ExtractPolicy"><title>ExtractPolicy in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ExtractPolicy</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.extract_policy">extract_policy</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="trait" href="#">ExtractPolicy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#327-335">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait ExtractPolicy {
+ fn <a href="#tymethod.extract_policy" class="fn">extract_policy</a>(<br> &self,<br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>,<br> psbt: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>,<br> secp: &Secp256k1<All><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait implemented on <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a>s to add a method to extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.extract_policy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#329-334" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.extract_policy" class="fnname">extract_policy</a>(<br> &self, <br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>, <br> psbt: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class="docblock"><p>Extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-ExtractPolicy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/policy.rs.html#1050-1131" title="goto source code">source</a></div><a href="#impl-ExtractPolicy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>></h3></div><div id="impl-ExtractPolicy-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/policy.rs.html#883-1016" title="goto source code">source</a></div><a href="#impl-ExtractPolicy-1" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> + 'static> <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, Ctx></h3></div></div><script type="text/javascript" src="../../implementors/bdk/descriptor/trait.ExtractPolicy.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.extract_policy" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#329-334">source</a><h4 class="code-header">fn <a href="#tymethod.extract_policy" class="fn">extract_policy</a>(<br> &self,<br> signers: &<a class="struct" href="../wallet/signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>,<br> psbt: <a class="enum" href="policy/enum.BuildSatisfaction.html" title="enum bdk::descriptor::policy::BuildSatisfaction">BuildSatisfaction</a><'_>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class="docblock"><p>Extract the spending <a href="policy/index.html" title="policy"><code>policy</code></a></p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ExtractPolicy-for-Descriptor%3CDescriptorPublicKey%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/policy.rs.html#1050-1131">source</a><a href="#impl-ExtractPolicy-for-Descriptor%3CDescriptorPublicKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>></h3></section><section id="impl-ExtractPolicy-for-Miniscript%3CDescriptorPublicKey%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/policy.rs.html#883-1016">source</a><a href="#impl-ExtractPolicy-for-Miniscript%3CDescriptorPublicKey%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> + 'static> <a class="trait" href="trait.ExtractPolicy.html" title="trait bdk::descriptor::ExtractPolicy">ExtractPolicy</a> for <a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, Ctx></h3></section></div><script src="../../implementors/bdk/descriptor/trait.ExtractPolicy.js" data-ignore-extern-crates="miniscript" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"><meta name="keywords" content="rust, rustlang, rust-lang, IntoWalletDescriptor"><title>IntoWalletDescriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">IntoWalletDescriptor</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.into_wallet_descriptor">into_wallet_descriptor</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-IntoWalletDescriptor-for-%26String">&String</a><a href="#impl-IntoWalletDescriptor-for-%26str">&str</a><a href="#impl-IntoWalletDescriptor-for-(ExtendedDescriptor%2C%20KeyMap)">(ExtendedDescriptor, KeyMap)</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="IntoWalletDescriptor" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="trait" href="#">IntoWalletDescriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#72-79" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait IntoWalletDescriptor {
- fn <a href="#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> secp: &Secp256k1<All>, <br> network: Network<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"><meta name="keywords" content="rust, rustlang, rust-lang, IntoWalletDescriptor"><title>IntoWalletDescriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">IntoWalletDescriptor</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.into_wallet_descriptor">into_wallet_descriptor</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-IntoWalletDescriptor-for-%26String">&String</a></li><li><a href="#impl-IntoWalletDescriptor-for-%26str">&str</a></li><li><a href="#impl-IntoWalletDescriptor-for-(ExtendedDescriptor%2C%20KeyMap)">(ExtendedDescriptor, KeyMap)</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="trait" href="#">IntoWalletDescriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#72-79">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait IntoWalletDescriptor {
+ fn <a href="#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for types which can be converted into an <a href="type.ExtendedDescriptor.html" title="ExtendedDescriptor"><code>ExtendedDescriptor</code></a> and a <a href="../keys/type.KeyMap.html" title="KeyMap"><code>KeyMap</code></a> usable by a wallet in a specific [<code>Network</code>]</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.into_wallet_descriptor" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#74-78" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> secp: &Secp256k1<All>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class="docblock"><p>Convert to wallet descriptor</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoWalletDescriptor-for-%26str" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#81-101" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor-for-%26str" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h3></div></summary><div class="impl-items"><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#82-100" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> secp: &Secp256k1<All>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoWalletDescriptor-for-%26String" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#103-111" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor-for-%26String" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for &<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h3></div></summary><div class="impl-items"><div id="method.into_wallet_descriptor-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#104-110" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> secp: &Secp256k1<All>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoWalletDescriptor-for-(ExtendedDescriptor%2C%20KeyMap)" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#123-202" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor-for-(ExtendedDescriptor%2C%20KeyMap)" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h3></div></summary><div class="impl-items"><div id="method.into_wallet_descriptor-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#124-201" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor-2" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> secp: &Secp256k1<All>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#204-274" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="template/type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a></h3></div><div id="impl-IntoWalletDescriptor-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#113-121" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h3></div><div id="impl-IntoWalletDescriptor-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/template.rs.html#60-68" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor-2" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="template/trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>> <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T</h3></div><div class="docblock"><p>Turns a <a href="template/trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a> into a valid wallet descriptor by calling its
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.into_wallet_descriptor" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#74-78">source</a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class="docblock"><p>Convert to wallet descriptor</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-%26str" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#81-101">source</a><a href="#impl-IntoWalletDescriptor-for-%26str" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h3></section></summary><div class="impl-items"><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#82-100">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-%26String" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#103-111">source</a><a href="#impl-IntoWalletDescriptor-for-%26String" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for &<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h3></section></summary><div class="impl-items"><section id="method.into_wallet_descriptor-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#104-110">source</a><a href="#method.into_wallet_descriptor-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoWalletDescriptor-for-(ExtendedDescriptor%2C%20KeyMap)" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#123-202">source</a><a href="#impl-IntoWalletDescriptor-for-(ExtendedDescriptor%2C%20KeyMap)" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for (<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>)</h3></section></summary><div class="impl-items"><section id="method.into_wallet_descriptor-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#124-201">source</a><a href="#method.into_wallet_descriptor-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-IntoWalletDescriptor-for-DescriptorTemplateOut" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#204-274">source</a><a href="#impl-IntoWalletDescriptor-for-DescriptorTemplateOut" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="template/type.DescriptorTemplateOut.html" title="type bdk::descriptor::template::DescriptorTemplateOut">DescriptorTemplateOut</a></h3></section><section id="impl-IntoWalletDescriptor-for-ExtendedDescriptor" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#113-121">source</a><a href="#impl-IntoWalletDescriptor-for-ExtendedDescriptor" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h3></section><section id="impl-IntoWalletDescriptor-for-T" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/template.rs.html#60-68">source</a><a href="#impl-IntoWalletDescriptor-for-T" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="template/trait.DescriptorTemplate.html" title="trait bdk::descriptor::template::DescriptorTemplate">DescriptorTemplate</a>> <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for T</h3></section><div class="docblock"><p>Turns a <a href="template/trait.DescriptorTemplate.html" title="DescriptorTemplate"><code>DescriptorTemplate</code></a> into a valid wallet descriptor by calling its
<a href="template/trait.DescriptorTemplate.html#tymethod.build"><code>build</code></a> method</p>
-</div></div><script type="text/javascript" src="../../implementors/bdk/descriptor/trait.IntoWalletDescriptor.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><script src="../../implementors/bdk/descriptor/trait.IntoWalletDescriptor.js" data-ignore-extern-crates="std,alloc" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"><meta name="keywords" content="rust, rustlang, rust-lang, ScriptContext"><title>ScriptContext in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ScriptContext</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Key">Key</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.check_terminal_non_malleable">check_terminal_non_malleable</a><a href="#tymethod.max_satisfaction_size">max_satisfaction_size</a><a href="#tymethod.name_str">name_str</a><a href="#tymethod.pk_len">pk_len</a><a href="#tymethod.sig_type">sig_type</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.check_global_consensus_validity">check_global_consensus_validity</a><a href="#method.check_global_policy_validity">check_global_policy_validity</a><a href="#method.check_global_validity">check_global_validity</a><a href="#method.check_local_consensus_validity">check_local_consensus_validity</a><a href="#method.check_local_policy_validity">check_local_policy_validity</a><a href="#method.check_local_validity">check_local_validity</a><a href="#method.check_witness">check_witness</a><a href="#method.other_top_level_checks">other_top_level_checks</a><a href="#method.top_level_checks">top_level_checks</a><a href="#method.top_level_type_check">top_level_type_check</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-ScriptContext-for-BareCtx">BareCtx</a><a href="#impl-ScriptContext-for-Tap">Tap</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="ScriptContext" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="trait" href="#">ScriptContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait ScriptContext: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + Sealed {
- type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey + MiniscriptKey;
-<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 15 methods</span></summary> fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
-<div class="item-spacer"></div> fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
-<div class="item-spacer"></div> fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType;
-<div class="item-spacer"></div> fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
-<div class="item-spacer"></div> fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"><meta name="keywords" content="rust, rustlang, rust-lang, ScriptContext"><title>ScriptContext in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ScriptContext</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Key">Key</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.check_terminal_non_malleable">check_terminal_non_malleable</a></li><li><a href="#tymethod.max_satisfaction_size">max_satisfaction_size</a></li><li><a href="#tymethod.name_str">name_str</a></li><li><a href="#tymethod.pk_len">pk_len</a></li><li><a href="#tymethod.sig_type">sig_type</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.check_global_consensus_validity">check_global_consensus_validity</a></li><li><a href="#method.check_global_policy_validity">check_global_policy_validity</a></li><li><a href="#method.check_global_validity">check_global_validity</a></li><li><a href="#method.check_local_consensus_validity">check_local_consensus_validity</a></li><li><a href="#method.check_local_policy_validity">check_local_policy_validity</a></li><li><a href="#method.check_local_validity">check_local_validity</a></li><li><a href="#method.check_witness">check_witness</a></li><li><a href="#method.other_top_level_checks">other_top_level_checks</a></li><li><a href="#method.top_level_checks">top_level_checks</a></li><li><a href="#method.top_level_type_check">top_level_type_check</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="trait" href="#">ScriptContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait ScriptContext: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + Sealed {
+ type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey;
- fn <a href="#method.check_witness" class="fnname">check_witness</a><Pk>(<br> _witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 15 methods</span></summary> fn <a href="#tymethod.check_terminal_non_malleable" class="fn">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
+<span class="item-spacer"></span> fn <a href="#tymethod.max_satisfaction_size" class="fn">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
+<span class="item-spacer"></span> fn <a href="#tymethod.sig_type" class="fn">sig_type</a>() -> SigType;
+<span class="item-spacer"></span> fn <a href="#tymethod.pk_len" class="fn">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
+<span class="item-spacer"></span> fn <a href="#tymethod.name_str" class="fn">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>;
+
+ fn <a href="#method.check_witness" class="fn">check_witness</a><Pk>(<br> _witness: &[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>]<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_global_consensus_validity" class="fn">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_global_policy_validity" class="fn">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_local_consensus_validity" class="fn">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_local_policy_validity" class="fn">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_global_validity" class="fnname">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_global_validity" class="fn">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_local_validity" class="fnname">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_local_validity" class="fn">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.top_level_type_check" class="fnname">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.top_level_type_check" class="fn">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.other_top_level_checks" class="fn">other_top_level_checks</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.top_level_checks" class="fnname">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.top_level_checks" class="fn">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The ScriptContext for Miniscript. Additional type information associated with
miniscript that is used for carrying out checks that dependent on the
context under which the script is used.
For example, disallowing uncompressed keys in Segwit context</p>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Key" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey + MiniscriptKey</h4></div></summary><div class="docblock"><p>The consensus key associated with the type. Must be a parseable key</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.check_terminal_non_malleable" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on ScriptContext, fragments can be malleable. For Example,
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Key" class="method has-srclink"><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey</h4></section></summary><div class="docblock"><p>The consensus key associated with the type. Must be a parseable key</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.check_terminal_non_malleable" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.check_terminal_non_malleable" class="fn">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on ScriptContext, fragments can be malleable. For Example,
under Legacy context, PkH is malleable because it is possible to
estimate the cost of satisfaction because of compressed keys
This is currently only used in compiler code for removing malleable
This does NOT recursively check if the children of the fragment are
valid or not. Since the compilation proceeds in a leaf to root fashion,
a recursive check is unnecessary.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.max_satisfaction_size" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on script context, the size of a satifaction witness may slightly differ.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.sig_type" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div></summary><div class="docblock"><p>The type of signature required for satisfaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.pk_len" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Get the len of public key when serialized based on context
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.max_satisfaction_size" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.max_satisfaction_size" class="fn">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on script context, the size of a satifaction witness may slightly differ.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.sig_type" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.sig_type" class="fn">sig_type</a>() -> SigType</h4></section></summary><div class="docblock"><p>The type of signature required for satisfaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.pk_len" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.pk_len" class="fn">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Get the len of public key when serialized based on context
Note that this includes the serialization prefix. Returns
34/66 for Bare/Legacy based on key compressedness
34 for Segwitv0, 33 for Tap</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.name_str" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="docblock"><p>Local helper function to display error messages with context</p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.check_witness" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_witness" class="fnname">check_witness</a><Pk>(<br> _witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check whether the given satisfaction is valid under the ScriptContext
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.name_str" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.name_str" class="fn">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Local helper function to display error messages with context</p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_witness" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_witness" class="fn">check_witness</a><Pk>(<br> _witness: &[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>]<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check whether the given satisfaction is valid under the ScriptContext
For example, segwit satisfactions may fail if the witness len is more
3600 or number of stack elements are more than 100.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_global_consensus_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on script Context, some of the Terminals might not
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_consensus_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_global_consensus_validity" class="fn">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on script Context, some of the Terminals might not
be valid under the current consensus rules.
Or some of the script resource limits may have been exceeded.
These miniscripts would never be accepted by the Bitcoin network and hence
In LegacyP2SH context, scripts above 520 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
This does <em>NOT</em> recursively check the miniscript fragments.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_global_policy_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on script Context, some of the script resource limits
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_policy_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_global_policy_validity" class="fn">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on script Context, some of the script resource limits
may have been exceeded under the current bitcoin core policy rules
These miniscripts would never be accepted by the Bitcoin network and hence
it is safe to discard them. (unless explicitly disabled by non-standard flag)
scripts over 3600 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
This does <em>NOT</em> recursively check the miniscript fragments.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_local_consensus_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Consensus rules at the Miniscript satisfaction time.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_consensus_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_local_consensus_validity" class="fn">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Consensus rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_local_policy_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Policy rules at the Miniscript satisfaction time.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_policy_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_local_policy_validity" class="fn">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Policy rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
For example, satisfaction path in Legacy context scriptSig more
than 1650 bytes</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_global_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_global_validity" class="fnname">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules that are not based
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_global_validity" class="fn">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules that are not based
satisfaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_local_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_local_validity" class="fnname">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules including the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_local_validity" class="fn">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules including the
ones for satisfaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.top_level_type_check" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.top_level_type_check" class="fnname">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check whether the top-level is type B</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.other_top_level_checks" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Other top level checks that are context specific</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.top_level_checks" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.top_level_checks" class="fnname">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check top level consensus rules.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext-for-BareCtx" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext-for-BareCtx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for BareCtx</h3></div></summary><div class="impl-items"><div id="associatedtype.Key-1" class="type trait-impl has-srclink"><a href="#associatedtype.Key-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div><div id="method.check_terminal_non_malleable" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_terminal_non_malleable" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_global_consensus_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_consensus_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_local_consensus_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_consensus_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.other_top_level_checks-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.other_top_level_checks-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.max_satisfaction_size" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.pk_len" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.pk_len" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.name_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.name_str" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div><div id="method.sig_type" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.sig_type" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext-for-Tap" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext-for-Tap" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for Tap</h3></div></summary><div class="impl-items"><div id="associatedtype.Key-2" class="type trait-impl has-srclink"><a href="#associatedtype.Key-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = XOnlyPublicKey</h4></div><div id="method.check_terminal_non_malleable-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_terminal_non_malleable-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_witness-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_witness-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_witness" class="fnname">check_witness</a><Pk>(<br> witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_global_consensus_validity-2" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_consensus_validity-2" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_local_consensus_validity-2" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_consensus_validity-2" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_global_policy_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_policy_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_local_policy_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_policy_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.max_satisfaction_size-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.sig_type-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.sig_type-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div><div id="method.pk_len-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.pk_len-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(_pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.name_str-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.name_str-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Key-3" class="type trait-impl has-srclink"><a href="#associatedtype.Key-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext-1" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Key-4" class="type trait-impl has-srclink"><a href="#associatedtype.Key-4" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div></div></details></div><script type="text/javascript" src="../../implementors/miniscript/miniscript/context/trait.ScriptContext.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_type_check" class="method has-srclink"><h4 class="code-header">fn <a href="#method.top_level_type_check" class="fn">top_level_type_check</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check whether the top-level is type B</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.other_top_level_checks" class="method has-srclink"><h4 class="code-header">fn <a href="#method.other_top_level_checks" class="fn">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Other top level checks that are context specific</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_checks" class="method has-srclink"><h4 class="code-header">fn <a href="#method.top_level_checks" class="fn">top_level_checks</a><Pk>(ms: &<a class="struct" href="struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check top level consensus rules.</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-Legacy" class="impl has-srclink"><a href="#impl-ScriptContext-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Key-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-Segwitv0" class="impl has-srclink"><a href="#impl-ScriptContext-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Key-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-BareCtx" class="impl has-srclink"><a href="#impl-ScriptContext-for-BareCtx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for BareCtx</h3></section></summary><div class="impl-items"><section id="associatedtype.Key-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-Tap" class="impl has-srclink"><a href="#impl-ScriptContext-for-Tap" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../keys/trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for Tap</h3></section></summary><div class="impl-items"><section id="associatedtype.Key-4" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = XOnlyPublicKey</h4></section></div></details></div><script src="../../implementors/miniscript/miniscript/context/trait.ScriptContext.js" data-ignore-extern-crates="miniscript" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for a [`Descriptor`] that contains extended derived keys"><meta name="keywords" content="rust, rustlang, rust-lang, DerivedDescriptor"><title>DerivedDescriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DerivedDescriptor</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="DerivedDescriptor" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">DerivedDescriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#55" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type DerivedDescriptor = <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that contains extended <strong>derived</strong> keys</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for a [`Descriptor`] that contains extended derived keys"><meta name="keywords" content="rust, rustlang, rust-lang, DerivedDescriptor"><title>DerivedDescriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DerivedDescriptor</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">DerivedDescriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#55">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type DerivedDescriptor = <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><DefiniteDescriptorKey>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that contains extended <strong>derived</strong> keys</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"><meta name="keywords" content="rust, rustlang, rust-lang, ExtendedDescriptor"><title>ExtendedDescriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ExtendedDescriptor</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-IntoWalletDescriptor">IntoWalletDescriptor</a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="ExtendedDescriptor" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">ExtendedDescriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#52" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type ExtendedDescriptor = <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that can contain extended keys using <a href="../keys/enum.DescriptorPublicKey.html" title="DescriptorPublicKey"><code>DescriptorPublicKey</code></a></p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoWalletDescriptor" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#113-121" title="goto source code">source</a></div><a href="#impl-IntoWalletDescriptor" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#114-120" title="goto source code">source</a></div><a href="#method.into_wallet_descriptor" class="anchor"></a><h4 class="code-header">fn <a href="trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fnname">into_wallet_descriptor</a>(<br> self, <br> secp: &Secp256k1<All>, <br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></div></summary><div class='docblock'><p>Convert to wallet descriptor</p>
-</div></details></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"><meta name="keywords" content="rust, rustlang, rust-lang, ExtendedDescriptor"><title>ExtendedDescriptor in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ExtendedDescriptor</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-IntoWalletDescriptor-for-ExtendedDescriptor">IntoWalletDescriptor</a></li></ul></section><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">ExtendedDescriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#52">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type ExtendedDescriptor = <a class="enum" href="enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for a <a href="enum.Descriptor.html" title="Descriptor"><code>Descriptor</code></a> that can contain extended keys using <a href="../keys/enum.DescriptorPublicKey.html" title="DescriptorPublicKey"><code>DescriptorPublicKey</code></a></p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoWalletDescriptor-for-ExtendedDescriptor" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#113-121">source</a><a href="#impl-IntoWalletDescriptor-for-ExtendedDescriptor" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a> for <a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_wallet_descriptor" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/mod.rs.html#114-120">source</a><a href="#method.into_wallet_descriptor" class="anchor">§</a><h4 class="code-header">fn <a href="trait.IntoWalletDescriptor.html#tymethod.into_wallet_descriptor" class="fn">into_wallet_descriptor</a>(<br> self,<br> secp: &Secp256k1<All>,<br> network: Network<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(<a class="type" href="type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>, <a class="type" href="../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>), <a class="enum" href="error/enum.Error.html" title="enum bdk::descriptor::error::Error">DescriptorError</a>></h4></section></summary><div class='docblock'>Convert to wallet descriptor</div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"><meta name="keywords" content="rust, rustlang, rust-lang, HdKeyPaths"><title>HdKeyPaths in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">HdKeyPaths</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="HdKeyPaths" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">HdKeyPaths</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#62" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type HdKeyPaths = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><PublicKey, KeySource>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for the type of maps that represent derivation paths in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"><meta name="keywords" content="rust, rustlang, rust-lang, HdKeyPaths"><title>HdKeyPaths in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">HdKeyPaths</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">HdKeyPaths</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#62">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type HdKeyPaths = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><PublicKey, KeySource>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for the type of maps that represent derivation paths in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
<a href="bitcoin::util::psbt::Output"><code>psbt::Output</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias type for a map of public key to secret key"><meta name="keywords" content="rust, rustlang, rust-lang, KeyMap"><title>KeyMap in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">KeyMap</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="KeyMap" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">KeyMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type KeyMap = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias type for a map of public key to secret key</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias type for a map of public key to secret key"><meta name="keywords" content="rust, rustlang, rust-lang, KeyMap"><title>KeyMap in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">KeyMap</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">KeyMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type KeyMap = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias type for a map of public key to secret key</p>
<p>This map is returned whenever a descriptor that contains secrets is parsed using
<a href="enum.Descriptor.html#method.parse_descriptor" title="Descriptor::parse_descriptor"><code>Descriptor::parse_descriptor</code></a>, since the descriptor will always only contain
public keys. This map allows looking up the corresponding secret key given a
public key from the descriptor.</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"><meta name="keywords" content="rust, rustlang, rust-lang, TapKeyOrigins"><title>TapKeyOrigins in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TapKeyOrigins</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a></h2><div id="sidebar-vars" data-name="TapKeyOrigins" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">TapKeyOrigins</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#69" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type TapKeyOrigins = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><XOnlyPublicKey, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>, KeySource<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for the type of maps that represent taproot key origins in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"><meta name="keywords" content="rust, rustlang, rust-lang, TapKeyOrigins"><title>TapKeyOrigins in bdk::descriptor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TapKeyOrigins</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::descriptor</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">descriptor</a>::<wbr><a class="type" href="#">TapKeyOrigins</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/descriptor/mod.rs.html#69">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type TapKeyOrigins = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><XOnlyPublicKey, (<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>, KeySource)>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for the type of maps that represent taproot key origins in a <a href="bitcoin::util::psbt::Input"><code>psbt::Input</code></a> or
<a href="bitcoin::util::psbt::Output"><code>psbt::Output</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors that can be thrown by the `Wallet`"><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Bip32">Bip32</a><a href="#variant.BnBNoExactMatch">BnBNoExactMatch</a><a href="#variant.BnBTotalTriesExceeded">BnBTotalTriesExceeded</a><a href="#variant.ChecksumMismatch">ChecksumMismatch</a><a href="#variant.CompactFilters">CompactFilters</a><a href="#variant.Descriptor">Descriptor</a><a href="#variant.Electrum">Electrum</a><a href="#variant.Encode">Encode</a><a href="#variant.Esplora">Esplora</a><a href="#variant.FeeRateTooLow">FeeRateTooLow</a><a href="#variant.FeeRateUnavailable">FeeRateUnavailable</a><a href="#variant.FeeTooLow">FeeTooLow</a><a href="#variant.Generic">Generic</a><a href="#variant.Hex">Hex</a><a href="#variant.InsufficientFunds">InsufficientFunds</a><a href="#variant.InvalidNetwork">InvalidNetwork</a><a href="#variant.InvalidOutpoint">InvalidOutpoint</a><a href="#variant.InvalidPolicyPathError">InvalidPolicyPathError</a><a href="#variant.InvalidProgressValue">InvalidProgressValue</a><a href="#variant.InvalidU32Bytes">InvalidU32Bytes</a><a href="#variant.IrreplaceableTransaction">IrreplaceableTransaction</a><a href="#variant.Json">Json</a><a href="#variant.Key">Key</a><a href="#variant.Miniscript">Miniscript</a><a href="#variant.MiniscriptPsbt">MiniscriptPsbt</a><a href="#variant.MissingCachedScripts">MissingCachedScripts</a><a href="#variant.MissingKeyOrigin">MissingKeyOrigin</a><a href="#variant.NoRecipients">NoRecipients</a><a href="#variant.NoUtxosSelected">NoUtxosSelected</a><a href="#variant.OutputBelowDustLimit">OutputBelowDustLimit</a><a href="#variant.ProgressUpdateError">ProgressUpdateError</a><a href="#variant.Psbt">Psbt</a><a href="#variant.PsbtParse">PsbtParse</a><a href="#variant.Rpc">Rpc</a><a href="#variant.Rusqlite">Rusqlite</a><a href="#variant.ScriptDoesntHaveAddressForm">ScriptDoesntHaveAddressForm</a><a href="#variant.Secp256k1">Secp256k1</a><a href="#variant.Signer">Signer</a><a href="#variant.Sled">Sled</a><a href="#variant.SpendingPolicyRequired">SpendingPolicyRequired</a><a href="#variant.TransactionConfirmed">TransactionConfirmed</a><a href="#variant.TransactionNotFound">TransactionNotFound</a><a href="#variant.UnknownUtxo">UnknownUtxo</a><a href="#variant.Verification">Verification</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Error">Error</a><a href="#impl-From%3CCompactFiltersError%3E">From<CompactFiltersError></a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CKeyError%3E">From<KeyError></a><a href="#impl-From%3CPolicyError%3E">From<PolicyError></a><a href="#impl-From%3CPsbtParseError%3E">From<PsbtParseError></a><a href="#impl-From%3CSignerError%3E">From<SignerError></a><a href="#impl-From%3CVerifyError%3E">From<VerifyError></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="Error" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="index.html">bdk</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/error.rs.html#20-150" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Error {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors that can be thrown by the `Wallet`"><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Bip32">Bip32</a></li><li><a href="#variant.BnBNoExactMatch">BnBNoExactMatch</a></li><li><a href="#variant.BnBTotalTriesExceeded">BnBTotalTriesExceeded</a></li><li><a href="#variant.ChecksumMismatch">ChecksumMismatch</a></li><li><a href="#variant.CompactFilters">CompactFilters</a></li><li><a href="#variant.Descriptor">Descriptor</a></li><li><a href="#variant.Electrum">Electrum</a></li><li><a href="#variant.Encode">Encode</a></li><li><a href="#variant.Esplora">Esplora</a></li><li><a href="#variant.FeeRateTooLow">FeeRateTooLow</a></li><li><a href="#variant.FeeRateUnavailable">FeeRateUnavailable</a></li><li><a href="#variant.FeeTooLow">FeeTooLow</a></li><li><a href="#variant.Generic">Generic</a></li><li><a href="#variant.Hex">Hex</a></li><li><a href="#variant.InsufficientFunds">InsufficientFunds</a></li><li><a href="#variant.InvalidNetwork">InvalidNetwork</a></li><li><a href="#variant.InvalidOutpoint">InvalidOutpoint</a></li><li><a href="#variant.InvalidPolicyPathError">InvalidPolicyPathError</a></li><li><a href="#variant.InvalidProgressValue">InvalidProgressValue</a></li><li><a href="#variant.InvalidU32Bytes">InvalidU32Bytes</a></li><li><a href="#variant.IrreplaceableTransaction">IrreplaceableTransaction</a></li><li><a href="#variant.Json">Json</a></li><li><a href="#variant.Key">Key</a></li><li><a href="#variant.Miniscript">Miniscript</a></li><li><a href="#variant.MiniscriptPsbt">MiniscriptPsbt</a></li><li><a href="#variant.MissingCachedScripts">MissingCachedScripts</a></li><li><a href="#variant.MissingKeyOrigin">MissingKeyOrigin</a></li><li><a href="#variant.NoRecipients">NoRecipients</a></li><li><a href="#variant.NoUtxosSelected">NoUtxosSelected</a></li><li><a href="#variant.OutputBelowDustLimit">OutputBelowDustLimit</a></li><li><a href="#variant.ProgressUpdateError">ProgressUpdateError</a></li><li><a href="#variant.Psbt">Psbt</a></li><li><a href="#variant.PsbtParse">PsbtParse</a></li><li><a href="#variant.Rpc">Rpc</a></li><li><a href="#variant.Rusqlite">Rusqlite</a></li><li><a href="#variant.ScriptDoesntHaveAddressForm">ScriptDoesntHaveAddressForm</a></li><li><a href="#variant.Secp256k1">Secp256k1</a></li><li><a href="#variant.Signer">Signer</a></li><li><a href="#variant.Sled">Sled</a></li><li><a href="#variant.SpendingPolicyRequired">SpendingPolicyRequired</a></li><li><a href="#variant.TransactionConfirmed">TransactionConfirmed</a></li><li><a href="#variant.TransactionNotFound">TransactionNotFound</a></li><li><a href="#variant.UnknownUtxo">UnknownUtxo</a></li><li><a href="#variant.Verification">Verification</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CCompactFiltersError%3E-for-Error">From<CompactFiltersError></a></li><li><a href="#impl-From%3CError%3E-for-CompactFiltersError">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-1">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-10">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-11">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-12">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-2">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-3">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-4">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-5">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-6">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-7">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-8">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-Error-9">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-VerifyError">From<Error></a></li><li><a href="#impl-From%3CKeyError%3E-for-Error">From<KeyError></a></li><li><a href="#impl-From%3CPolicyError%3E-for-Error">From<PolicyError></a></li><li><a href="#impl-From%3CPsbtParseError%3E-for-Error">From<PsbtParseError></a></li><li><a href="#impl-From%3CSignerError%3E-for-Error">From<SignerError></a></li><li><a href="#impl-From%3CVerifyError%3E-for-Error">From<VerifyError></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Error">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Error">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Error">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Error">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Error">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Error">Into<U></a></li><li><a href="#impl-Pointable-for-Error">Pointable</a></li><li><a href="#impl-Provider-for-Error">Provider</a></li><li><a href="#impl-ToString-for-Error">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Error">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Error">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Error">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="index.html">bdk</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/error.rs.html#20-150">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Error {
<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 44 variants</span></summary> InvalidU32Bytes(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>),
Generic(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>),
ScriptDoesntHaveAddressForm,
Rpc(Error),
Rusqlite(Error),
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Errors that can be thrown by the <a href="wallet/struct.Wallet.html"><code>Wallet</code></a></p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.InvalidU32Bytes" class="variant small-section-header"><a href="#variant.InvalidU32Bytes" class="anchor field"></a><code>InvalidU32Bytes(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>)</code></h3><div class="docblock"><p>Wrong number of bytes found when trying to convert to u32</p>
-</div><h3 id="variant.Generic" class="variant small-section-header"><a href="#variant.Generic" class="anchor field"></a><code>Generic(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</code></h3><div class="docblock"><p>Generic error</p>
-</div><h3 id="variant.ScriptDoesntHaveAddressForm" class="variant small-section-header"><a href="#variant.ScriptDoesntHaveAddressForm" class="anchor field"></a><code>ScriptDoesntHaveAddressForm</code></h3><div class="docblock"><p>This error is thrown when trying to convert Bare and Public key script to address</p>
-</div><h3 id="variant.NoRecipients" class="variant small-section-header"><a href="#variant.NoRecipients" class="anchor field"></a><code>NoRecipients</code></h3><div class="docblock"><p>Cannot build a tx without recipients</p>
-</div><h3 id="variant.NoUtxosSelected" class="variant small-section-header"><a href="#variant.NoUtxosSelected" class="anchor field"></a><code>NoUtxosSelected</code></h3><div class="docblock"><p><code>manually_selected_only</code> option is selected but no utxo has been passed</p>
-</div><h3 id="variant.OutputBelowDustLimit" class="variant small-section-header"><a href="#variant.OutputBelowDustLimit" class="anchor field"></a><code>OutputBelowDustLimit(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</code></h3><div class="docblock"><p>Output created is under the dust limit, 546 satoshis</p>
-</div><h3 id="variant.InsufficientFunds" class="variant small-section-header"><a href="#variant.InsufficientFunds" class="anchor field"></a><code>InsufficientFunds</code></h3><div class="sub-variant" id="variant.InsufficientFunds.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InsufficientFunds.field.needed" class="variant small-section-header"><a href="#variant.InsufficientFunds.field.needed" class="anchor field"></a><code>needed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Sats needed for some transaction</p>
-</div></div><div class="sub-variant-field"><span id="variant.InsufficientFunds.field.available" class="variant small-section-header"><a href="#variant.InsufficientFunds.field.available" class="anchor field"></a><code>available: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Sats available for spending</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.InvalidU32Bytes" class="variant"><a href="#variant.InvalidU32Bytes" class="anchor">§</a><h3 class="code-header">InvalidU32Bytes(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>)</h3></section><div class="docblock"><p>Wrong number of bytes found when trying to convert to u32</p>
+</div><section id="variant.Generic" class="variant"><a href="#variant.Generic" class="anchor">§</a><h3 class="code-header">Generic(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h3></section><div class="docblock"><p>Generic error</p>
+</div><section id="variant.ScriptDoesntHaveAddressForm" class="variant"><a href="#variant.ScriptDoesntHaveAddressForm" class="anchor">§</a><h3 class="code-header">ScriptDoesntHaveAddressForm</h3></section><div class="docblock"><p>This error is thrown when trying to convert Bare and Public key script to address</p>
+</div><section id="variant.NoRecipients" class="variant"><a href="#variant.NoRecipients" class="anchor">§</a><h3 class="code-header">NoRecipients</h3></section><div class="docblock"><p>Cannot build a tx without recipients</p>
+</div><section id="variant.NoUtxosSelected" class="variant"><a href="#variant.NoUtxosSelected" class="anchor">§</a><h3 class="code-header">NoUtxosSelected</h3></section><div class="docblock"><p><code>manually_selected_only</code> option is selected but no utxo has been passed</p>
+</div><section id="variant.OutputBelowDustLimit" class="variant"><a href="#variant.OutputBelowDustLimit" class="anchor">§</a><h3 class="code-header">OutputBelowDustLimit(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h3></section><div class="docblock"><p>Output created is under the dust limit, 546 satoshis</p>
+</div><section id="variant.InsufficientFunds" class="variant"><a href="#variant.InsufficientFunds" class="anchor">§</a><h3 class="code-header">InsufficientFunds</h3></section><div class="sub-variant" id="variant.InsufficientFunds.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InsufficientFunds.field.needed" class="small-section-header"><a href="#variant.InsufficientFunds.field.needed" class="anchor field">§</a><code>needed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Sats needed for some transaction</p>
+</div></div><div class="sub-variant-field"><span id="variant.InsufficientFunds.field.available" class="small-section-header"><a href="#variant.InsufficientFunds.field.available" class="anchor field">§</a><code>available: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Sats available for spending</p>
</div></div></div><div class="docblock"><p>Wallet’s UTXO set is not enough to cover recipient’s requested plus fee</p>
-</div><h3 id="variant.BnBTotalTriesExceeded" class="variant small-section-header"><a href="#variant.BnBTotalTriesExceeded" class="anchor field"></a><code>BnBTotalTriesExceeded</code></h3><div class="docblock"><p>Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow
+</div><section id="variant.BnBTotalTriesExceeded" class="variant"><a href="#variant.BnBTotalTriesExceeded" class="anchor">§</a><h3 class="code-header">BnBTotalTriesExceeded</h3></section><div class="docblock"><p>Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow
exponentially, thus a limit is set, and when hit, this error is thrown</p>
-</div><h3 id="variant.BnBNoExactMatch" class="variant small-section-header"><a href="#variant.BnBNoExactMatch" class="anchor field"></a><code>BnBNoExactMatch</code></h3><div class="docblock"><p>Branch and bound coin selection tries to avoid needing a change by finding the right inputs for
+</div><section id="variant.BnBNoExactMatch" class="variant"><a href="#variant.BnBNoExactMatch" class="anchor">§</a><h3 class="code-header">BnBNoExactMatch</h3></section><div class="docblock"><p>Branch and bound coin selection tries to avoid needing a change by finding the right inputs for
the desired outputs plus fee, if there is not such combination this error is thrown</p>
-</div><h3 id="variant.UnknownUtxo" class="variant small-section-header"><a href="#variant.UnknownUtxo" class="anchor field"></a><code>UnknownUtxo</code></h3><div class="docblock"><p>Happens when trying to spend an UTXO that is not in the internal database</p>
-</div><h3 id="variant.TransactionNotFound" class="variant small-section-header"><a href="#variant.TransactionNotFound" class="anchor field"></a><code>TransactionNotFound</code></h3><div class="docblock"><p>Thrown when a tx is not found in the internal database</p>
-</div><h3 id="variant.TransactionConfirmed" class="variant small-section-header"><a href="#variant.TransactionConfirmed" class="anchor field"></a><code>TransactionConfirmed</code></h3><div class="docblock"><p>Happens when trying to bump a transaction that is already confirmed</p>
-</div><h3 id="variant.IrreplaceableTransaction" class="variant small-section-header"><a href="#variant.IrreplaceableTransaction" class="anchor field"></a><code>IrreplaceableTransaction</code></h3><div class="docblock"><p>Trying to replace a tx that has a sequence >= <code>0xFFFFFFFE</code></p>
-</div><h3 id="variant.FeeRateTooLow" class="variant small-section-header"><a href="#variant.FeeRateTooLow" class="anchor field"></a><code>FeeRateTooLow</code></h3><div class="sub-variant" id="variant.FeeRateTooLow.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.FeeRateTooLow.field.required" class="variant small-section-header"><a href="#variant.FeeRateTooLow.field.required" class="anchor field"></a><code>required: <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></code></span><div class="docblock"><p>Required fee rate (satoshi/vbyte)</p>
+</div><section id="variant.UnknownUtxo" class="variant"><a href="#variant.UnknownUtxo" class="anchor">§</a><h3 class="code-header">UnknownUtxo</h3></section><div class="docblock"><p>Happens when trying to spend an UTXO that is not in the internal database</p>
+</div><section id="variant.TransactionNotFound" class="variant"><a href="#variant.TransactionNotFound" class="anchor">§</a><h3 class="code-header">TransactionNotFound</h3></section><div class="docblock"><p>Thrown when a tx is not found in the internal database</p>
+</div><section id="variant.TransactionConfirmed" class="variant"><a href="#variant.TransactionConfirmed" class="anchor">§</a><h3 class="code-header">TransactionConfirmed</h3></section><div class="docblock"><p>Happens when trying to bump a transaction that is already confirmed</p>
+</div><section id="variant.IrreplaceableTransaction" class="variant"><a href="#variant.IrreplaceableTransaction" class="anchor">§</a><h3 class="code-header">IrreplaceableTransaction</h3></section><div class="docblock"><p>Trying to replace a tx that has a sequence >= <code>0xFFFFFFFE</code></p>
+</div><section id="variant.FeeRateTooLow" class="variant"><a href="#variant.FeeRateTooLow" class="anchor">§</a><h3 class="code-header">FeeRateTooLow</h3></section><div class="sub-variant" id="variant.FeeRateTooLow.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.FeeRateTooLow.field.required" class="small-section-header"><a href="#variant.FeeRateTooLow.field.required" class="anchor field">§</a><code>required: <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></code></span><div class="docblock"><p>Required fee rate (satoshi/vbyte)</p>
</div></div></div><div class="docblock"><p>When bumping a tx the fee rate requested is lower than required</p>
-</div><h3 id="variant.FeeTooLow" class="variant small-section-header"><a href="#variant.FeeTooLow" class="anchor field"></a><code>FeeTooLow</code></h3><div class="sub-variant" id="variant.FeeTooLow.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.FeeTooLow.field.required" class="variant small-section-header"><a href="#variant.FeeTooLow.field.required" class="anchor field"></a><code>required: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Required fee absolute value (satoshi)</p>
+</div><section id="variant.FeeTooLow" class="variant"><a href="#variant.FeeTooLow" class="anchor">§</a><h3 class="code-header">FeeTooLow</h3></section><div class="sub-variant" id="variant.FeeTooLow.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.FeeTooLow.field.required" class="small-section-header"><a href="#variant.FeeTooLow.field.required" class="anchor field">§</a><code>required: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Required fee absolute value (satoshi)</p>
</div></div></div><div class="docblock"><p>When bumping a tx the absolute fee requested is lower than replaced tx absolute fee</p>
-</div><h3 id="variant.FeeRateUnavailable" class="variant small-section-header"><a href="#variant.FeeRateUnavailable" class="anchor field"></a><code>FeeRateUnavailable</code></h3><div class="docblock"><p>Node doesn’t have data to estimate a fee rate</p>
-</div><h3 id="variant.MissingKeyOrigin" class="variant small-section-header"><a href="#variant.MissingKeyOrigin" class="anchor field"></a><code>MissingKeyOrigin(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</code></h3><div class="docblock"><p>In order to use the <a href="wallet/tx_builder/struct.TxBuilder.html#method.add_global_xpubs"><code>TxBuilder::add_global_xpubs</code></a> option every extended
+</div><section id="variant.FeeRateUnavailable" class="variant"><a href="#variant.FeeRateUnavailable" class="anchor">§</a><h3 class="code-header">FeeRateUnavailable</h3></section><div class="docblock"><p>Node doesn’t have data to estimate a fee rate</p>
+</div><section id="variant.MissingKeyOrigin" class="variant"><a href="#variant.MissingKeyOrigin" class="anchor">§</a><h3 class="code-header">MissingKeyOrigin(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h3></section><div class="docblock"><p>In order to use the <a href="wallet/tx_builder/struct.TxBuilder.html#method.add_global_xpubs"><code>TxBuilder::add_global_xpubs</code></a> option every extended
key in the descriptor must either be a master key itself (having depth = 0) or have an
explicit origin provided</p>
-</div><h3 id="variant.Key" class="variant small-section-header"><a href="#variant.Key" class="anchor field"></a><code>Key(<a class="enum" href="keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>)</code></h3><div class="docblock"><p>Error while working with <a href="keys/index.html"><code>keys</code></a></p>
-</div><h3 id="variant.ChecksumMismatch" class="variant small-section-header"><a href="#variant.ChecksumMismatch" class="anchor field"></a><code>ChecksumMismatch</code></h3><div class="docblock"><p>Descriptor checksum mismatch</p>
-</div><h3 id="variant.SpendingPolicyRequired" class="variant small-section-header"><a href="#variant.SpendingPolicyRequired" class="anchor field"></a><code>SpendingPolicyRequired(<a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>)</code></h3><div class="docblock"><p>Spending policy is not compatible with this <a href="enum.KeychainKind.html"><code>KeychainKind</code></a></p>
-</div><h3 id="variant.InvalidPolicyPathError" class="variant small-section-header"><a href="#variant.InvalidPolicyPathError" class="anchor field"></a><code>InvalidPolicyPathError(<a class="enum" href="descriptor/policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>)</code></h3><div class="docblock"><p>Error while extracting and manipulating policies</p>
-</div><h3 id="variant.Signer" class="variant small-section-header"><a href="#variant.Signer" class="anchor field"></a><code>Signer(<a class="enum" href="wallet/signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>)</code></h3><div class="docblock"><p>Signing error</p>
-</div><h3 id="variant.InvalidNetwork" class="variant small-section-header"><a href="#variant.InvalidNetwork" class="anchor field"></a><code>InvalidNetwork</code></h3><div class="sub-variant" id="variant.InvalidNetwork.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InvalidNetwork.field.requested" class="variant small-section-header"><a href="#variant.InvalidNetwork.field.requested" class="anchor field"></a><code>requested: Network</code></span><div class="docblock"><p>requested network, for example what is given as bdk-cli option</p>
-</div></div><div class="sub-variant-field"><span id="variant.InvalidNetwork.field.found" class="variant small-section-header"><a href="#variant.InvalidNetwork.field.found" class="anchor field"></a><code>found: Network</code></span><div class="docblock"><p>found network, for example the network of the bitcoin node</p>
+</div><section id="variant.Key" class="variant"><a href="#variant.Key" class="anchor">§</a><h3 class="code-header">Key(<a class="enum" href="keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>)</h3></section><div class="docblock"><p>Error while working with <a href="keys/index.html"><code>keys</code></a></p>
+</div><section id="variant.ChecksumMismatch" class="variant"><a href="#variant.ChecksumMismatch" class="anchor">§</a><h3 class="code-header">ChecksumMismatch</h3></section><div class="docblock"><p>Descriptor checksum mismatch</p>
+</div><section id="variant.SpendingPolicyRequired" class="variant"><a href="#variant.SpendingPolicyRequired" class="anchor">§</a><h3 class="code-header">SpendingPolicyRequired(<a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>)</h3></section><div class="docblock"><p>Spending policy is not compatible with this <a href="enum.KeychainKind.html"><code>KeychainKind</code></a></p>
+</div><section id="variant.InvalidPolicyPathError" class="variant"><a href="#variant.InvalidPolicyPathError" class="anchor">§</a><h3 class="code-header">InvalidPolicyPathError(<a class="enum" href="descriptor/policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>)</h3></section><div class="docblock"><p>Error while extracting and manipulating policies</p>
+</div><section id="variant.Signer" class="variant"><a href="#variant.Signer" class="anchor">§</a><h3 class="code-header">Signer(<a class="enum" href="wallet/signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>)</h3></section><div class="docblock"><p>Signing error</p>
+</div><section id="variant.InvalidNetwork" class="variant"><a href="#variant.InvalidNetwork" class="anchor">§</a><h3 class="code-header">InvalidNetwork</h3></section><div class="sub-variant" id="variant.InvalidNetwork.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InvalidNetwork.field.requested" class="small-section-header"><a href="#variant.InvalidNetwork.field.requested" class="anchor field">§</a><code>requested: Network</code></span><div class="docblock"><p>requested network, for example what is given as bdk-cli option</p>
+</div></div><div class="sub-variant-field"><span id="variant.InvalidNetwork.field.found" class="small-section-header"><a href="#variant.InvalidNetwork.field.found" class="anchor field">§</a><code>found: Network</code></span><div class="docblock"><p>found network, for example the network of the bitcoin node</p>
</div></div></div><div class="docblock"><p>Invalid network</p>
-</div><h3 id="variant.Verification" class="variant small-section-header"><a href="#variant.Verification" class="anchor field"></a><code>Verification(<a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>)</code></h3><div class="docblock"><p>Transaction verification error</p>
-</div><h3 id="variant.InvalidProgressValue" class="variant small-section-header"><a href="#variant.InvalidProgressValue" class="anchor field"></a><code>InvalidProgressValue(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>)</code></h3><div class="docblock"><p>Progress value must be between <code>0.0</code> (included) and <code>100.0</code> (included)</p>
-</div><h3 id="variant.ProgressUpdateError" class="variant small-section-header"><a href="#variant.ProgressUpdateError" class="anchor field"></a><code>ProgressUpdateError</code></h3><div class="docblock"><p>Progress update error (maybe the channel has been closed)</p>
-</div><h3 id="variant.InvalidOutpoint" class="variant small-section-header"><a href="#variant.InvalidOutpoint" class="anchor field"></a><code>InvalidOutpoint(OutPoint)</code></h3><div class="docblock"><p>Requested outpoint doesn’t exist in the tx (vout greater than available outputs)</p>
-</div><h3 id="variant.Descriptor" class="variant small-section-header"><a href="#variant.Descriptor" class="anchor field"></a><code>Descriptor(<a class="enum" href="descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>)</code></h3><div class="docblock"><p>Error related to the parsing and usage of descriptors</p>
-</div><h3 id="variant.Encode" class="variant small-section-header"><a href="#variant.Encode" class="anchor field"></a><code>Encode(Error)</code></h3><div class="docblock"><p>Encoding error</p>
-</div><h3 id="variant.Miniscript" class="variant small-section-header"><a href="#variant.Miniscript" class="anchor field"></a><code>Miniscript(Error)</code></h3><div class="docblock"><p>Miniscript error</p>
-</div><h3 id="variant.MiniscriptPsbt" class="variant small-section-header"><a href="#variant.MiniscriptPsbt" class="anchor field"></a><code>MiniscriptPsbt(MiniscriptPsbtError)</code></h3><div class="docblock"><p>Miniscript PSBT error</p>
-</div><h3 id="variant.Bip32" class="variant small-section-header"><a href="#variant.Bip32" class="anchor field"></a><code>Bip32(Error)</code></h3><div class="docblock"><p>BIP32 error</p>
-</div><h3 id="variant.Secp256k1" class="variant small-section-header"><a href="#variant.Secp256k1" class="anchor field"></a><code>Secp256k1(Error)</code></h3><div class="docblock"><p>An ECDSA error</p>
-</div><h3 id="variant.Json" class="variant small-section-header"><a href="#variant.Json" class="anchor field"></a><code>Json(<a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a>)</code></h3><div class="docblock"><p>Error serializing or deserializing JSON data</p>
-</div><h3 id="variant.Hex" class="variant small-section-header"><a href="#variant.Hex" class="anchor field"></a><code>Hex(Error)</code></h3><div class="docblock"><p>Hex decoding error</p>
-</div><h3 id="variant.Psbt" class="variant small-section-header"><a href="#variant.Psbt" class="anchor field"></a><code>Psbt(Error)</code></h3><div class="docblock"><p>Partially signed bitcoin transaction error</p>
-</div><h3 id="variant.PsbtParse" class="variant small-section-header"><a href="#variant.PsbtParse" class="anchor field"></a><code>PsbtParse(PsbtParseError)</code></h3><div class="docblock"><p>Partially signed bitcoin transaction parse error</p>
-</div><h3 id="variant.MissingCachedScripts" class="variant small-section-header"><a href="#variant.MissingCachedScripts" class="anchor field"></a><code>MissingCachedScripts(MissingCachedScripts)</code></h3><div class="docblock"><p><a href="blockchain/trait.WalletSync.html" title="crate::blockchain::WalletSync"><code>crate::blockchain::WalletSync</code></a> sync attempt failed due to missing scripts in cache which
+</div><section id="variant.Verification" class="variant"><a href="#variant.Verification" class="anchor">§</a><h3 class="code-header">Verification(<a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>)</h3></section><div class="docblock"><p>Transaction verification error</p>
+</div><section id="variant.InvalidProgressValue" class="variant"><a href="#variant.InvalidProgressValue" class="anchor">§</a><h3 class="code-header">InvalidProgressValue(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>)</h3></section><div class="docblock"><p>Progress value must be between <code>0.0</code> (included) and <code>100.0</code> (included)</p>
+</div><section id="variant.ProgressUpdateError" class="variant"><a href="#variant.ProgressUpdateError" class="anchor">§</a><h3 class="code-header">ProgressUpdateError</h3></section><div class="docblock"><p>Progress update error (maybe the channel has been closed)</p>
+</div><section id="variant.InvalidOutpoint" class="variant"><a href="#variant.InvalidOutpoint" class="anchor">§</a><h3 class="code-header">InvalidOutpoint(OutPoint)</h3></section><div class="docblock"><p>Requested outpoint doesn’t exist in the tx (vout greater than available outputs)</p>
+</div><section id="variant.Descriptor" class="variant"><a href="#variant.Descriptor" class="anchor">§</a><h3 class="code-header">Descriptor(<a class="enum" href="descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>)</h3></section><div class="docblock"><p>Error related to the parsing and usage of descriptors</p>
+</div><section id="variant.Encode" class="variant"><a href="#variant.Encode" class="anchor">§</a><h3 class="code-header">Encode(Error)</h3></section><div class="docblock"><p>Encoding error</p>
+</div><section id="variant.Miniscript" class="variant"><a href="#variant.Miniscript" class="anchor">§</a><h3 class="code-header">Miniscript(Error)</h3></section><div class="docblock"><p>Miniscript error</p>
+</div><section id="variant.MiniscriptPsbt" class="variant"><a href="#variant.MiniscriptPsbt" class="anchor">§</a><h3 class="code-header">MiniscriptPsbt(MiniscriptPsbtError)</h3></section><div class="docblock"><p>Miniscript PSBT error</p>
+</div><section id="variant.Bip32" class="variant"><a href="#variant.Bip32" class="anchor">§</a><h3 class="code-header">Bip32(Error)</h3></section><div class="docblock"><p>BIP32 error</p>
+</div><section id="variant.Secp256k1" class="variant"><a href="#variant.Secp256k1" class="anchor">§</a><h3 class="code-header">Secp256k1(Error)</h3></section><div class="docblock"><p>An ECDSA error</p>
+</div><section id="variant.Json" class="variant"><a href="#variant.Json" class="anchor">§</a><h3 class="code-header">Json(<a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a>)</h3></section><div class="docblock"><p>Error serializing or deserializing JSON data</p>
+</div><section id="variant.Hex" class="variant"><a href="#variant.Hex" class="anchor">§</a><h3 class="code-header">Hex(Error)</h3></section><div class="docblock"><p>Hex decoding error</p>
+</div><section id="variant.Psbt" class="variant"><a href="#variant.Psbt" class="anchor">§</a><h3 class="code-header">Psbt(Error)</h3></section><div class="docblock"><p>Partially signed bitcoin transaction error</p>
+</div><section id="variant.PsbtParse" class="variant"><a href="#variant.PsbtParse" class="anchor">§</a><h3 class="code-header">PsbtParse(PsbtParseError)</h3></section><div class="docblock"><p>Partially signed bitcoin transaction parse error</p>
+</div><section id="variant.MissingCachedScripts" class="variant"><a href="#variant.MissingCachedScripts" class="anchor">§</a><h3 class="code-header">MissingCachedScripts(MissingCachedScripts)</h3></section><div class="docblock"><p><a href="blockchain/trait.WalletSync.html" title="crate::blockchain::WalletSync"><code>crate::blockchain::WalletSync</code></a> sync attempt failed due to missing scripts in cache which
are needed to satisfy <code>stop_gap</code>.</p>
-</div><h3 id="variant.Electrum" class="variant small-section-header"><a href="#variant.Electrum" class="anchor field"></a><code>Electrum(Error)</code></h3><div class="docblock"><p>Electrum client error</p>
-</div><h3 id="variant.Esplora" class="variant small-section-header"><a href="#variant.Esplora" class="anchor field"></a><code>Esplora(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="blockchain/esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">EsploraError</a>>)</code></h3><div class="docblock"><p>Esplora client error</p>
-</div><h3 id="variant.CompactFilters" class="variant small-section-header"><a href="#variant.CompactFilters" class="anchor field"></a><code>CompactFilters(<a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>)</code></h3><div class="docblock"><p>Compact filters client error)</p>
-</div><h3 id="variant.Sled" class="variant small-section-header"><a href="#variant.Sled" class="anchor field"></a><code>Sled(Error)</code></h3><div class="docblock"><p>Sled database error</p>
-</div><h3 id="variant.Rpc" class="variant small-section-header"><a href="#variant.Rpc" class="anchor field"></a><code>Rpc(Error)</code></h3><div class="docblock"><p>Rpc client error</p>
-</div><h3 id="variant.Rusqlite" class="variant small-section-header"><a href="#variant.Rusqlite" class="anchor field"></a><code>Rusqlite(Error)</code></h3><div class="docblock"><p>Rusqlite client error</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#19" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#19" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#170-174" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#171-173" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#176" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CCompactFiltersError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#226-233" title="goto source code">source</a></div><a href="#impl-From%3CCompactFiltersError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-16" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#227-232" title="goto source code">source</a></div><a href="#method.from-16" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#191" title="goto source code">source</a></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#191" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#206" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#206" title="goto source code">source</a></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-10" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#221" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-10" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-14" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#221" title="goto source code">source</a></div><a href="#method.from-14" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-11" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#223" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-11" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-15" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#223" title="goto source code">source</a></div><a href="#method.from-15" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-12" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#246-250" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-12" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="blockchain/esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-18" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#247-249" title="goto source code">source</a></div><a href="#method.from-18" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="blockchain/esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">EsploraError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-13" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/blockchain/compact_filters/mod.rs.html#590-594" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-13" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>compact_filters</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-19" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/blockchain/compact_filters/mod.rs.html#591-593" title="goto source code">source</a></div><a href="#method.from-19" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-14" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/wallet/verify.rs.html#100-104" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-14" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>verify</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-20" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/wallet/verify.rs.html#101-103" title="goto source code">source</a></div><a href="#method.from-20" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#207" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-5" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#207" title="goto source code">source</a></div><a href="#method.from-5" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#209" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-3" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-6" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#209" title="goto source code">source</a></div><a href="#method.from-6" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-4" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#210" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-4" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-7" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#210" title="goto source code">source</a></div><a href="#method.from-7" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-5" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#211" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-5" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-8" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#211" title="goto source code">source</a></div><a href="#method.from-8" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-6" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#212" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-6" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-9" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#212" title="goto source code">source</a></div><a href="#method.from-9" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-7" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#213" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-7" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-10" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#213" title="goto source code">source</a></div><a href="#method.from-10" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-8" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#217" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-8" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-12" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#217" title="goto source code">source</a></div><a href="#method.from-12" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-9" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#219" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-9" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-13" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#219" title="goto source code">source</a></div><a href="#method.from-13" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CKeyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#195-204" title="goto source code">source</a></div><a href="#impl-From%3CKeyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#196-203" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(key_error: <a class="enum" href="keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CPolicyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#192" title="goto source code">source</a></div><a href="#impl-From%3CPolicyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="descriptor/policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#192" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="descriptor/policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CPsbtParseError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#214" title="goto source code">source</a></div><a href="#impl-From%3CPsbtParseError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><PsbtParseError> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-11" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#214" title="goto source code">source</a></div><a href="#method.from-11" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: PsbtParseError) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSignerError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#193" title="goto source code">source</a></div><a href="#impl-From%3CSignerError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="wallet/signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#193" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="wallet/signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CVerifyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#236-243" title="goto source code">source</a></div><a href="#impl-From%3CVerifyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-17" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/error.rs.html#237-242" title="goto source code">source</a></div><a href="#method.from-17" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-21" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-21" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><section id="variant.Electrum" class="variant"><a href="#variant.Electrum" class="anchor">§</a><h3 class="code-header">Electrum(Error)</h3></section><div class="docblock"><p>Electrum client error</p>
+</div><section id="variant.Esplora" class="variant"><a href="#variant.Esplora" class="anchor">§</a><h3 class="code-header">Esplora(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="blockchain/esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">EsploraError</a>>)</h3></section><div class="docblock"><p>Esplora client error</p>
+</div><section id="variant.CompactFilters" class="variant"><a href="#variant.CompactFilters" class="anchor">§</a><h3 class="code-header">CompactFilters(<a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>)</h3></section><div class="docblock"><p>Compact filters client error)</p>
+</div><section id="variant.Sled" class="variant"><a href="#variant.Sled" class="anchor">§</a><h3 class="code-header">Sled(Error)</h3></section><div class="docblock"><p>Sled database error</p>
+</div><section id="variant.Rpc" class="variant"><a href="#variant.Rpc" class="anchor">§</a><h3 class="code-header">Rpc(Error)</h3></section><div class="docblock"><p>Rpc client error</p>
+</div><section id="variant.Rusqlite" class="variant"><a href="#variant.Rusqlite" class="anchor">§</a><h3 class="code-header">Rusqlite(Error)</h3></section><div class="docblock"><p>Rusqlite client error</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#19">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#19">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#170-174">source</a><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#171-173">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#176">source</a><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CCompactFiltersError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#226-233">source</a><a href="#impl-From%3CCompactFiltersError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-16" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#227-232">source</a><a href="#method.from-16" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-CompactFiltersError" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/blockchain/compact_filters/mod.rs.html#590-594">source</a><a href="#impl-From%3CError%3E-for-CompactFiltersError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="blockchain/compact_filters/enum.CompactFiltersError.html" title="enum bdk::blockchain::compact_filters::CompactFiltersError">CompactFiltersError</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>compact_filters</code></strong> only.</div></span></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-19" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/blockchain/compact_filters/mod.rs.html#591-593">source</a><a href="#method.from-19" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#191">source</a><a href="#impl-From%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#191">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-1" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#206">source</a><a href="#impl-From%3CError%3E-for-Error-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#206">source</a><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-10" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#221">source</a><a href="#impl-From%3CError%3E-for-Error-10" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-14" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#221">source</a><a href="#method.from-14" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-11" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#223">source</a><a href="#impl-From%3CError%3E-for-Error-11" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-15" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#223">source</a><a href="#method.from-15" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-12" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#246-250">source</a><a href="#impl-From%3CError%3E-for-Error-12" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="blockchain/esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-18" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#247-249">source</a><a href="#method.from-18" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="blockchain/esplora/enum.EsploraError.html" title="enum bdk::blockchain::esplora::EsploraError">EsploraError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-2" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#207">source</a><a href="#impl-From%3CError%3E-for-Error-2" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-5" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#207">source</a><a href="#method.from-5" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-3" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#209">source</a><a href="#impl-From%3CError%3E-for-Error-3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-6" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#209">source</a><a href="#method.from-6" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-4" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#210">source</a><a href="#impl-From%3CError%3E-for-Error-4" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-7" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#210">source</a><a href="#method.from-7" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-5" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#211">source</a><a href="#impl-From%3CError%3E-for-Error-5" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-8" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#211">source</a><a href="#method.from-8" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-6" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#212">source</a><a href="#impl-From%3CError%3E-for-Error-6" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-9" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#212">source</a><a href="#method.from-9" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-7" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#213">source</a><a href="#impl-From%3CError%3E-for-Error-7" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-10" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#213">source</a><a href="#method.from-10" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-8" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#217">source</a><a href="#impl-From%3CError%3E-for-Error-8" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-12" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#217">source</a><a href="#method.from-12" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error-9" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#219">source</a><a href="#impl-From%3CError%3E-for-Error-9" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-13" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#219">source</a><a href="#method.from-13" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/wallet/verify.rs.html#100-104">source</a><a href="#impl-From%3CError%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>verify</code></strong> only.</div></span></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-20" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/wallet/verify.rs.html#101-103">source</a><a href="#method.from-20" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CKeyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#195-204">source</a><a href="#impl-From%3CKeyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#196-203">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(key_error: <a class="enum" href="keys/enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CPolicyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#192">source</a><a href="#impl-From%3CPolicyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="descriptor/policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#192">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="descriptor/policy/enum.PolicyError.html" title="enum bdk::descriptor::policy::PolicyError">PolicyError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CPsbtParseError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#214">source</a><a href="#impl-From%3CPsbtParseError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><PsbtParseError> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-11" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#214">source</a><a href="#method.from-11" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: PsbtParseError) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSignerError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#193">source</a><a href="#impl-From%3CSignerError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="wallet/signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#193">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="wallet/signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CVerifyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#236-243">source</a><a href="#impl-From%3CVerifyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-17" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/error.rs.html#237-242">source</a><a href="#method.from-17" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="wallet/verify/enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl has-srclink"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl has-srclink"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl has-srclink"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-21" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-21" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Error" class="impl has-srclink"><a href="#impl-Pointable-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-Error" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Error" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Types of keychains"><meta name="keywords" content="rust, rustlang, rust-lang, KeychainKind"><title>KeychainKind in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">KeychainKind</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.External">External</a><a href="#variant.Internal">Internal</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.as_byte">as_byte</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-AsRef%3C%5Bu8%5D%3E">AsRef<[u8]></a><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-PartialEq%3CKeychainKind%3E">PartialEq<KeychainKind></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Base32Len">Base32Len</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-CheckBase32%3CVec%3Cu5%2C%20Global%3E%3E">CheckBase32<Vec<u5, Global>></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToBase32">ToBase32</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="KeychainKind" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="index.html">bdk</a>::<wbr><a class="enum" href="#">KeychainKind</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#22-27" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum KeychainKind {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Types of keychains"><meta name="keywords" content="rust, rustlang, rust-lang, KeychainKind"><title>KeychainKind in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">KeychainKind</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.External">External</a></li><li><a href="#variant.Internal">Internal</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.as_byte">as_byte</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-KeychainKind">AsRef<[u8]></a></li><li><a href="#impl-Clone-for-KeychainKind">Clone</a></li><li><a href="#impl-Copy-for-KeychainKind">Copy</a></li><li><a href="#impl-Debug-for-KeychainKind">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-KeychainKind">Deserialize<'de></a></li><li><a href="#impl-Eq-for-KeychainKind">Eq</a></li><li><a href="#impl-Hash-for-KeychainKind">Hash</a></li><li><a href="#impl-PartialEq%3CKeychainKind%3E-for-KeychainKind">PartialEq<KeychainKind></a></li><li><a href="#impl-Serialize-for-KeychainKind">Serialize</a></li><li><a href="#impl-StructuralEq-for-KeychainKind">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-KeychainKind">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-KeychainKind">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeychainKind">Send</a></li><li><a href="#impl-Sync-for-KeychainKind">Sync</a></li><li><a href="#impl-Unpin-for-KeychainKind">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeychainKind">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-KeychainKind">Any</a></li><li><a href="#impl-Base32Len-for-KeychainKind">Base32Len</a></li><li><a href="#impl-Borrow%3CT%3E-for-KeychainKind">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-KeychainKind">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-KeychainKind">CallHasher</a></li><li><a href="#impl-CheckBase32%3CVec%3Cu5%2C%20Global%3E%3E-for-KeychainKind">CheckBase32<Vec<u5, Global>></a></li><li><a href="#impl-DeserializeOwned-for-KeychainKind">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-KeychainKind">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-KeychainKind">Into<U></a></li><li><a href="#impl-Pointable-for-KeychainKind">Pointable</a></li><li><a href="#impl-ToBase32-for-KeychainKind">ToBase32</a></li><li><a href="#impl-ToOwned-for-KeychainKind">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-KeychainKind">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-KeychainKind">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-KeychainKind">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="index.html">bdk</a>::<wbr><a class="enum" href="#">KeychainKind</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#22-27">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum KeychainKind {
External,
Internal,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Types of keychains</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.External" class="variant small-section-header"><a href="#variant.External" class="anchor field"></a><code>External</code></h3><div class="docblock"><p>External</p>
-</div><h3 id="variant.Internal" class="variant small-section-header"><a href="#variant.Internal" class="anchor field"></a><code>Internal</code></h3><div class="docblock"><p>Internal, usually used for change outputs</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#29-37" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_byte" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#31-36" title="goto source code">source</a></div><a href="#method.as_byte" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.as_byte" class="fnname">as_byte</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a></h4></div></summary><div class="docblock"><p>Return <a href="enum.KeychainKind.html" title="KeychainKind"><code>KeychainKind</code></a> as a byte</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-AsRef%3C%5Bu8%5D%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#39-46" title="goto source code">source</a></div><a href="#impl-AsRef%3C%5Bu8%5D%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_ref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#40-45" title="goto source code">source</a></div><a href="#method.as_ref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fnname">as_ref</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&'_ mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a></div><code class="content"><span class="where fmt-newline">impl<'_> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&'_ mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a></span><span class="where fmt-newline">impl<'_> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html" title="trait std::io::Read">Read</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&'_ [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a></span></code></span></div></span></span></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CKeychainKind%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-PartialEq%3CKeychainKind%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#21" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Base32Len" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Base32Len" class="anchor"></a><h3 class="code-header in-band">impl<T> Base32Len for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.base32_len" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.base32_len" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">base32_len</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Calculate the base32 serialized length</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CheckBase32%3CVec%3Cu5%2C%20Global%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CheckBase32%3CVec%3Cu5%2C%20Global%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> CheckBase32<<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Err" class="associatedtype">Err</a> = Error</h4></div></summary><div class='docblock'><p>Error type if conversion fails</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.check_base32" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_base32" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">check_base32</a>(<br> self<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <T as CheckBase32<<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>>>::Err></h4></div></summary><div class='docblock'><p>Check if all values are in range and return array-like struct of <code>u5</code> values</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToBase32" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ToBase32" class="anchor"></a><h3 class="code-header in-band">impl<T> ToBase32 for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.write_base32" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.write_base32" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">write_base32</a><W>(<br> &self, <br> writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>W<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <W as WriteBase32>::Err> <span class="where fmt-newline">where<br> W: WriteBase32, </span></h4></div></summary><div class='docblock'><p>Encode as base32 and write it to the supplied writer
-Implementations shouldn’t allocate. <a href="#tymethod.write_base32">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_base32" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.to_base32" class="anchor"></a><h4 class="code-header">fn <a href="#method.to_base32" class="fnname">to_base32</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A></div><code class="content"><span class="where fmt-newline">impl<A> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A> <span class="where fmt-newline">where<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>, </span></span></code></span></div></span></span></h4></div></summary><div class='docblock'><p>Convert <code>Self</code> to base32 vector</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.External" class="variant"><a href="#variant.External" class="anchor">§</a><h3 class="code-header">External</h3></section><div class="docblock"><p>External</p>
+</div><section id="variant.Internal" class="variant"><a href="#variant.Internal" class="anchor">§</a><h3 class="code-header">Internal</h3></section><div class="docblock"><p>Internal, usually used for change outputs</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#29-37">source</a><a href="#impl-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_byte" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#31-36">source</a><h4 class="code-header">pub fn <a href="#method.as_byte" class="fn">as_byte</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a></h4></section></summary><div class="docblock"><p>Return <a href="enum.KeychainKind.html" title="KeychainKind"><code>KeychainKind</code></a> as a byte</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-AsRef%3C%5Bu8%5D%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#39-46">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#40-45">source</a><a href="#method.as_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&self) -> &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="notable-traits" data-ty="&[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Clone-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Debug-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Deserialize%3C%27de%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Hash-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CKeychainKind%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-PartialEq%3CKeychainKind%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Serialize-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Copy-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-Eq-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-Eq-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-StructuralEq-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-StructuralEq-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-StructuralPartialEq-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#21">source</a><a href="#impl-StructuralPartialEq-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-KeychainKind" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-Send-for-KeychainKind" class="impl has-srclink"><a href="#impl-Send-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-Sync-for-KeychainKind" class="impl has-srclink"><a href="#impl-Sync-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-Unpin-for-KeychainKind" class="impl has-srclink"><a href="#impl-Unpin-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section><section id="impl-UnwindSafe-for-KeychainKind" class="impl has-srclink"><a href="#impl-UnwindSafe-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Base32Len-for-KeychainKind" class="impl has-srclink"><a href="#impl-Base32Len-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> Base32Len for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.base32_len" class="method trait-impl has-srclink"><a href="#method.base32_len" class="anchor">§</a><h4 class="code-header">fn <a class="fn">base32_len</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Calculate the base32 serialized length</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-KeychainKind" class="impl has-srclink"><a href="#impl-CallHasher-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CheckBase32%3CVec%3Cu5%2C%20Global%3E%3E-for-KeychainKind" class="impl has-srclink"><a href="#impl-CheckBase32%3CVec%3Cu5%2C%20Global%3E%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> CheckBase32<<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Err</a> = Error</h4></section></summary><div class='docblock'>Error type if conversion fails</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_base32" class="method trait-impl has-srclink"><a href="#method.check_base32" class="anchor">§</a><h4 class="code-header">fn <a class="fn">check_base32</a>(<br> self<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <T as CheckBase32<<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>>>::Err></h4></section></summary><div class='docblock'>Check if all values are in range and return array-like struct of <code>u5</code> values</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-KeychainKind" class="impl has-srclink"><a href="#impl-Pointable-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToBase32-for-KeychainKind" class="impl has-srclink"><a href="#impl-ToBase32-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> ToBase32 for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.write_base32" class="method trait-impl has-srclink"><a href="#method.write_base32" class="anchor">§</a><h4 class="code-header">fn <a class="fn">write_base32</a><W>(&self, writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>W) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <W as WriteBase32>::Err><span class="where fmt-newline">where<br> W: WriteBase32,</span></h4></section></summary><div class='docblock'>Encode as base32 and write it to the supplied writer
+Implementations shouldn’t allocate. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_base32" class="method trait-impl has-srclink"><a href="#method.to_base32" class="anchor">§</a><h4 class="code-header">fn <a class="fn">to_base32</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><u5, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>> <a href="#" class="notable-traits" data-ty="Vec<u5, Global>">ⓘ</a></h4></section></summary><div class='docblock'>Convert <code>Self</code> to base32 vector</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-KeychainKind" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-KeychainKind" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-KeychainKind" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</span><span class=\"where fmt-newline\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</span>","Vec<u5, Global>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A></code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl<A> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A><span class=\"where fmt-newline\">where<br> A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</span></span>"}</script></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An unspent transaction output (UTXO)."><meta name="keywords" content="rust, rustlang, rust-lang, Utxo"><title>Utxo in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Utxo</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Foreign">Foreign</a><a href="#variant.Local">Local</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.outpoint">outpoint</a><a href="#method.txout">txout</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CUtxo%3E">PartialEq<Utxo></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="Utxo" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="index.html">bdk</a>::<wbr><a class="enum" href="#">Utxo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#182-193" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Utxo {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An unspent transaction output (UTXO)."><meta name="keywords" content="rust, rustlang, rust-lang, Utxo"><title>Utxo in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Utxo</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Foreign">Foreign</a></li><li><a href="#variant.Local">Local</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.outpoint">outpoint</a></li><li><a href="#method.txout">txout</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Utxo">Clone</a></li><li><a href="#impl-Debug-for-Utxo">Debug</a></li><li><a href="#impl-Eq-for-Utxo">Eq</a></li><li><a href="#impl-PartialEq%3CUtxo%3E-for-Utxo">PartialEq<Utxo></a></li><li><a href="#impl-StructuralEq-for-Utxo">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Utxo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Utxo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Utxo">Send</a></li><li><a href="#impl-Sync-for-Utxo">Sync</a></li><li><a href="#impl-Unpin-for-Utxo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Utxo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Utxo">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Utxo">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Utxo">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Utxo">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Utxo">Into<U></a></li><li><a href="#impl-Pointable-for-Utxo">Pointable</a></li><li><a href="#impl-ToOwned-for-Utxo">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Utxo">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Utxo">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Utxo">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="index.html">bdk</a>::<wbr><a class="enum" href="#">Utxo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#182-193">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Utxo {
Local(<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>),
Foreign {
outpoint: OutPoint,
psbt_input: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><Input>,
},
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An unspent transaction output (UTXO).</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Local" class="variant small-section-header"><a href="#variant.Local" class="anchor field"></a><code>Local(<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>)</code></h3><div class="docblock"><p>A UTXO owned by the local wallet.</p>
-</div><h3 id="variant.Foreign" class="variant small-section-header"><a href="#variant.Foreign" class="anchor field"></a><code>Foreign</code></h3><div class="sub-variant" id="variant.Foreign.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Foreign.field.outpoint" class="variant small-section-header"><a href="#variant.Foreign.field.outpoint" class="anchor field"></a><code>outpoint: OutPoint</code></span><div class="docblock"><p>The location of the output.</p>
-</div></div><div class="sub-variant-field"><span id="variant.Foreign.field.psbt_input" class="variant small-section-header"><a href="#variant.Foreign.field.psbt_input" class="anchor field"></a><code>psbt_input: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><Input></code></span><div class="docblock"><p>The information about the input we require to add it to a PSBT.</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Local" class="variant"><a href="#variant.Local" class="anchor">§</a><h3 class="code-header">Local(<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>)</h3></section><div class="docblock"><p>A UTXO owned by the local wallet.</p>
+</div><section id="variant.Foreign" class="variant"><a href="#variant.Foreign" class="anchor">§</a><h3 class="code-header">Foreign</h3></section><div class="sub-variant" id="variant.Foreign.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Foreign.field.outpoint" class="small-section-header"><a href="#variant.Foreign.field.outpoint" class="anchor field">§</a><code>outpoint: OutPoint</code></span><div class="docblock"><p>The location of the output.</p>
+</div></div><div class="sub-variant-field"><span id="variant.Foreign.field.psbt_input" class="small-section-header"><a href="#variant.Foreign.field.psbt_input" class="anchor field">§</a><code>psbt_input: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><Input></code></span><div class="docblock"><p>The information about the input we require to add it to a PSBT.</p>
</div></div></div><div class="docblock"><p>A UTXO owned by another wallet.</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#195-224" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.outpoint" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#197-202" title="goto source code">source</a></div><a href="#method.outpoint" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.outpoint" class="fnname">outpoint</a>(&self) -> OutPoint</h4></div></summary><div class="docblock"><p>Get the location of the UTXO</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.txout" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#205-223" title="goto source code">source</a></div><a href="#method.txout" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.txout" class="fnname">txout</a>(&self) -> &TxOut</h4></div></summary><div class="docblock"><p>Get the <code>TxOut</code> of the UTXO</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CUtxo%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#impl-PartialEq%3CUtxo%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#180" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#195-224">source</a><a href="#impl-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.outpoint" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#197-202">source</a><h4 class="code-header">pub fn <a href="#method.outpoint" class="fn">outpoint</a>(&self) -> OutPoint</h4></section></summary><div class="docblock"><p>Get the location of the UTXO</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.txout" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#205-223">source</a><h4 class="code-header">pub fn <a href="#method.txout" class="fn">txout</a>(&self) -> &TxOut</h4></section></summary><div class="docblock"><p>Get the <code>TxOut</code> of the UTXO</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#impl-Clone-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#impl-Debug-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CUtxo%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#impl-PartialEq%3CUtxo%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Eq-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#impl-Eq-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section><section id="impl-StructuralEq-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#impl-StructuralEq-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section><section id="impl-StructuralPartialEq-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#180">source</a><a href="#impl-StructuralPartialEq-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Utxo" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section><section id="impl-Send-for-Utxo" class="impl has-srclink"><a href="#impl-Send-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section><section id="impl-Sync-for-Utxo" class="impl has-srclink"><a href="#impl-Sync-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section><section id="impl-Unpin-for-Utxo" class="impl has-srclink"><a href="#impl-Unpin-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section><section id="impl-UnwindSafe-for-Utxo" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Utxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Utxo" class="impl has-srclink"><a href="#impl-Pointable-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Utxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Utxo" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Utxo" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Get the version of BDK at runtime"><meta name="keywords" content="rust, rustlang, rust-lang, version"><title>version in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="version" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="index.html">bdk</a>::<wbr><a class="fn" href="#">version</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/lib.rs.html#283-285" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn version() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Get the version of BDK at runtime</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Get the version of BDK at runtime"><meta name="keywords" content="rust, rustlang, rust-lang, version"><title>version in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="index.html">bdk</a>::<wbr><a class="fn" href="#">version</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/lib.rs.html#283-285">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn version() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Get the version of BDK at runtime</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A modern, lightweight, descriptor-based wallet library written in Rust."><meta name="keywords" content="rust, rustlang, rust-lang, bdk"><title>bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Crate bdk</a></h2><div class="sidebar-elems"><div class="block"><ul><li class="version">Version 0.25.0</li><li><a id="all-types" href="all.html">All Items</a></li></div></ul><div class="block items"><ul><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="bdk" data-ty="mod" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">bdk</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/lib.rs.html#13-285" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A modern, lightweight, descriptor-based wallet library written in Rust.</p>
-<h2 id="about" class="section-header"><a href="#about">About</a></h2>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A modern, lightweight, descriptor-based wallet library written in Rust."><meta name="keywords" content="rust, rustlang, rust-lang, bdk"><title>bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Crate bdk</a></h2><div class="sidebar-elems"><ul class="block"><li class="version">Version 0.25.0</li><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Crate <a class="mod" href="#">bdk</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/lib.rs.html#13-285">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A modern, lightweight, descriptor-based wallet library written in Rust.</p>
+<h2 id="about"><a href="#about">About</a></h2>
<p>The BDK library aims to be the core building block for Bitcoin wallets of any kind.</p>
<ul>
<li>It uses <a href="https://github.com/rust-bitcoin/rust-miniscript">Miniscript</a> to support descriptors with generalized conditions. This exact same library can be used to build
<li>It is built to be cross-platform: the core logic works on desktop, mobile, and even WebAssembly.</li>
<li>It is very easy to extend: developers can implement customized logic for blockchain backends, databases, signers, coin selection, and more, without having to fork and modify this library.</li>
</ul>
-<h2 id="a-tour-of-bdk" class="section-header"><a href="#a-tour-of-bdk">A Tour of BDK</a></h2>
+<h2 id="a-tour-of-bdk"><a href="#a-tour-of-bdk">A Tour of BDK</a></h2>
<p>BDK consists of a number of modules that provide a range of functionality
essential for implementing descriptor based Bitcoin wallet applications in Rust. In this
section, we will take a brief tour of BDK, summarizing the major APIs and
The default features include a simple key-value database (<a href="sled"><code>sled</code></a>) to cache
blockchain data and an <a href="https://docs.rs/electrum-client/">electrum</a> blockchain client to
interact with the bitcoin P2P network.</p>
-<h2 id="examples" class="section-header"><a href="#examples">Examples</a></h2><h3 id="sync-the-balance-of-a-descriptor" class="section-header"><a href="#sync-the-balance-of-a-descriptor">Sync the balance of a descriptor</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk</span>::{<span class="ident">Wallet</span>, <span class="ident">SyncOptions</span>};
-<span class="kw">use</span> <span class="ident">bdk::database::MemoryDatabase</span>;
-<span class="kw">use</span> <span class="ident">bdk::blockchain::ElectrumBlockchain</span>;
-<span class="kw">use</span> <span class="ident">bdk::electrum_client::Client</span>;
-
-<span class="kw">fn</span> <span class="ident">main</span>() -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">bdk::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">Client::new</span>(<span class="string">"ssl://electrum.blockstream.info:60002"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">ElectrumBlockchain::from</span>(<span class="ident">client</span>);
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+<h2 id="examples"><a href="#examples">Examples</a></h2><h3 id="sync-the-balance-of-a-descriptor"><a href="#sync-the-balance-of-a-descriptor">Sync the balance of a descriptor</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::{Wallet, SyncOptions};
+<span class="kw">use </span>bdk::database::MemoryDatabase;
+<span class="kw">use </span>bdk::blockchain::ElectrumBlockchain;
+<span class="kw">use </span>bdk::electrum_client::Client;
+
+<span class="kw">fn </span>main() -> <span class="prelude-ty">Result</span><(), bdk::Error> {
+ <span class="kw">let </span>client = Client::new(<span class="string">"ssl://electrum.blockstream.info:60002"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>blockchain = ElectrumBlockchain::from(client);
+ <span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"</span>,
<span class="prelude-val">Some</span>(<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"</span>),
- <span class="ident">bitcoin::Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ bitcoin::Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
- <span class="ident">wallet</span>.<span class="ident">sync</span>(<span class="kw-2">&</span><span class="ident">blockchain</span>, <span class="ident">SyncOptions::default</span>())<span class="question-mark">?</span>;
+ wallet.sync(<span class="kw-2">&</span>blockchain, SyncOptions::default())<span class="question-mark">?</span>;
- <span class="macro">println!</span>(<span class="string">"Descriptor balance: {} SAT"</span>, <span class="ident">wallet</span>.<span class="ident">get_balance</span>()<span class="question-mark">?</span>);
+ <span class="macro">println!</span>(<span class="string">"Descriptor balance: {} SAT"</span>, wallet.get_balance()<span class="question-mark">?</span>);
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
-<h3 id="generate-a-few-addresses" class="section-header"><a href="#generate-a-few-addresses">Generate a few addresses</a></h3><h4 id="example" class="section-header"><a href="#example">Example</a></h4>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk</span>::{<span class="ident">Wallet</span>};
-<span class="kw">use</span> <span class="ident">bdk::database::MemoryDatabase</span>;
-<span class="kw">use</span> <span class="ident">bdk::wallet::AddressIndex::New</span>;
+<h3 id="generate-a-few-addresses"><a href="#generate-a-few-addresses">Generate a few addresses</a></h3><h4 id="example"><a href="#example">Example</a></h4>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::{Wallet};
+<span class="kw">use </span>bdk::database::MemoryDatabase;
+<span class="kw">use </span>bdk::wallet::AddressIndex::New;
-<span class="kw">fn</span> <span class="ident">main</span>() -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">bdk::Error</span><span class="op">></span> {
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+<span class="kw">fn </span>main() -> <span class="prelude-ty">Result</span><(), bdk::Error> {
+<span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"</span>,
<span class="prelude-val">Some</span>(<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"</span>),
- <span class="ident">bitcoin::Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ bitcoin::Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
- <span class="macro">println!</span>(<span class="string">"Address #0: {}"</span>, <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>);
- <span class="macro">println!</span>(<span class="string">"Address #1: {}"</span>, <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>);
- <span class="macro">println!</span>(<span class="string">"Address #2: {}"</span>, <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>);
+ <span class="macro">println!</span>(<span class="string">"Address #0: {}"</span>, wallet.get_address(New)<span class="question-mark">?</span>);
+ <span class="macro">println!</span>(<span class="string">"Address #1: {}"</span>, wallet.get_address(New)<span class="question-mark">?</span>);
+ <span class="macro">println!</span>(<span class="string">"Address #2: {}"</span>, wallet.get_address(New)<span class="question-mark">?</span>);
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
-<h3 id="create-a-transaction" class="section-header"><a href="#create-a-transaction">Create a transaction</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk</span>::{<span class="ident">FeeRate</span>, <span class="ident">Wallet</span>, <span class="ident">SyncOptions</span>};
-<span class="kw">use</span> <span class="ident">bdk::database::MemoryDatabase</span>;
-<span class="kw">use</span> <span class="ident">bdk::blockchain::ElectrumBlockchain</span>;
-<span class="kw">use</span> <span class="ident">bdk::electrum_client::Client</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::serialize</span>;
-<span class="kw">use</span> <span class="ident">bdk::wallet::AddressIndex::New</span>;
-
-<span class="kw">fn</span> <span class="ident">main</span>() -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">bdk::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">Client::new</span>(<span class="string">"ssl://electrum.blockstream.info:60002"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+<h3 id="create-a-transaction"><a href="#create-a-transaction">Create a transaction</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::{FeeRate, Wallet, SyncOptions};
+<span class="kw">use </span>bdk::database::MemoryDatabase;
+<span class="kw">use </span>bdk::blockchain::ElectrumBlockchain;
+<span class="kw">use </span>bdk::electrum_client::Client;
+
+<span class="kw">use </span>bitcoin::consensus::serialize;
+<span class="kw">use </span>bdk::wallet::AddressIndex::New;
+
+<span class="kw">fn </span>main() -> <span class="prelude-ty">Result</span><(), bdk::Error> {
+ <span class="kw">let </span>client = Client::new(<span class="string">"ssl://electrum.blockstream.info:60002"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"</span>,
<span class="prelude-val">Some</span>(<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"</span>),
- <span class="ident">bitcoin::Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ bitcoin::Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">ElectrumBlockchain::from</span>(<span class="ident">client</span>);
+ <span class="kw">let </span>blockchain = ElectrumBlockchain::from(client);
- <span class="ident">wallet</span>.<span class="ident">sync</span>(<span class="kw-2">&</span><span class="ident">blockchain</span>, <span class="ident">SyncOptions::default</span>())<span class="question-mark">?</span>;
+ wallet.sync(<span class="kw-2">&</span>blockchain, SyncOptions::default())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">send_to</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">send_to</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>)
- .<span class="ident">enable_rbf</span>()
- .<span class="ident">do_not_spend_change</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
- };
+ <span class="kw">let </span>send_to = wallet.get_address(New)<span class="question-mark">?</span>;
+ <span class="kw">let </span>(psbt, details) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(send_to.script_pubkey(), <span class="number">50_000</span>)
+ .enable_rbf()
+ .do_not_spend_change()
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>));
+ builder.finish()<span class="question-mark">?
+ </span>};
- <span class="macro">println!</span>(<span class="string">"Transaction details: {:#?}"</span>, <span class="ident">details</span>);
- <span class="macro">println!</span>(<span class="string">"Unsigned PSBT: {}"</span>, <span class="kw-2">&</span><span class="ident">psbt</span>);
+ <span class="macro">println!</span>(<span class="string">"Transaction details: {:#?}"</span>, details);
+ <span class="macro">println!</span>(<span class="string">"Unsigned PSBT: {}"</span>, <span class="kw-2">&</span>psbt);
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
-<h3 id="sign-a-transaction" class="section-header"><a href="#sign-a-transaction">Sign a transaction</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<h3 id="sign-a-transaction"><a href="#sign-a-transaction">Sign a transaction</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::str::FromStr;
-<span class="kw">use</span> <span class="ident">bitcoin::util::psbt::PartiallySignedTransaction</span> <span class="kw">as</span> <span class="ident">Psbt</span>;
+<span class="kw">use </span>bitcoin::util::psbt::PartiallySignedTransaction <span class="kw">as </span>Psbt;
-<span class="kw">use</span> <span class="ident">bdk</span>::{<span class="ident">Wallet</span>, <span class="ident">SignOptions</span>};
-<span class="kw">use</span> <span class="ident">bdk::database::MemoryDatabase</span>;
+<span class="kw">use </span>bdk::{Wallet, SignOptions};
+<span class="kw">use </span>bdk::database::MemoryDatabase;
-<span class="kw">fn</span> <span class="ident">main</span>() -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">bdk::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+<span class="kw">fn </span>main() -> <span class="prelude-ty">Result</span><(), bdk::Error> {
+ <span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/0/*)"</span>,
<span class="prelude-val">Some</span>(<span class="string">"wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/1/*)"</span>),
- <span class="ident">bitcoin::Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ bitcoin::Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="string">"..."</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">psbt</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>psbt = <span class="string">"..."</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>psbt = Psbt::from_str(psbt)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>())<span class="question-mark">?</span>;
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, SignOptions::default())<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
-<h2 id="feature-flags" class="section-header"><a href="#feature-flags">Feature flags</a></h2>
+<h2 id="feature-flags"><a href="#feature-flags">Feature flags</a></h2>
<p>BDK uses a set of <a href="https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section">feature flags</a>
to reduce the amount of compiled code by allowing projects to only enable the features they need.
By default, BDK enables two internal features, <code>key-value-db</code> and <code>electrum</code>.</p>
<li><code>async-interface</code>: async functions in bdk traits</li>
<li><code>keys-bip39</code>: <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">BIP-39</a> mnemonic codes for generating deterministic keys</li>
</ul>
-<h2 id="internal-features" class="section-header"><a href="#internal-features">Internal features</a></h2>
+<h2 id="internal-features"><a href="#internal-features">Internal features</a></h2>
<p>These features do not expose any new API, but influence internal implementation aspects of
BDK.</p>
<ul>
<li><code>esplora</code>: <a href="blockchain/esplora/index.html"><code>esplora</code></a> client protocol for interacting with blockstream <a href="https://github.com/Blockstream/electrs">electrs</a> servers</li>
<li><code>key-value-db</code>: key value <a href="database/index.html"><code>database</code></a> based on <a href="crate::sled"><code>sled</code></a> for caching blockchain data</li>
</ul>
-</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left"><code>pub extern crate bitcoin;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate bitcoincore_rpc;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate electrum_client;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate esplora_client;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate hwi;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate miniscript;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate rusqlite;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate sled;</code></div></div><div class="item-row"><div class="item-left import-item"><code>pub use descriptor::<a class="mod" href="descriptor/template/index.html" title="mod bdk::descriptor::template">template</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use descriptor::<a class="type" href="descriptor/type.HdKeyPaths.html" title="type bdk::descriptor::HdKeyPaths">HdKeyPaths</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use wallet::<a class="mod" href="wallet/signer/index.html" title="mod bdk::wallet::signer">signer</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use wallet::signer::<a class="struct" href="wallet/signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use wallet::tx_builder::<a class="struct" href="wallet/tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use wallet::<a class="struct" href="wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a>;</code></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left import-item"><code>pub use wallet::<a class="struct" href="wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a>;</code></div><div class="item-right docblock-short"></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="blockchain/index.html" title="bdk::blockchain mod">blockchain</a></div><div class="item-right docblock-short"><p>Blockchain backends</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="database/index.html" title="bdk::database mod">database</a></div><div class="item-right docblock-short"><p>Database types</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="descriptor/index.html" title="bdk::descriptor mod">descriptor</a></div><div class="item-right docblock-short"><p>Descriptors</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="keys/index.html" title="bdk::keys mod">keys</a></div><div class="item-right docblock-short"><p>Key formats</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="psbt/index.html" title="bdk::psbt mod">psbt</a></div><div class="item-right docblock-short"><p>Additional functions on the <code>rust-bitcoin</code> <code>PartiallySignedTransaction</code> structure.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="wallet/index.html" title="bdk::wallet mod">wallet</a></div><div class="item-right docblock-short"><p>Wallet</p>
-</div></div></div><h2 id="macros" class="small-section-header"><a href="#macros">Macros</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.descriptor.html" title="bdk::descriptor macro">descriptor</a></div><div class="item-right docblock-short"><p>Macro to write full descriptors with code</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.fragment.html" title="bdk::fragment macro">fragment</a></div><div class="item-right docblock-short"><p>Macro to write descriptor fragments with code</p>
-</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Balance.html" title="bdk::Balance struct">Balance</a></div><div class="item-right docblock-short"><p>Balance differentiated in various categories</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BlockTime.html" title="bdk::BlockTime struct">BlockTime</a></div><div class="item-right docblock-short"><p>Block height and timestamp of a block</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.FeeRate.html" title="bdk::FeeRate struct">FeeRate</a></div><div class="item-right docblock-short"><p>Fee rate</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.LocalUtxo.html" title="bdk::LocalUtxo struct">LocalUtxo</a></div><div class="item-right docblock-short"><p>An unspent output owned by a <a href="wallet/struct.Wallet.html"><code>Wallet</code></a>.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.TransactionDetails.html" title="bdk::TransactionDetails struct">TransactionDetails</a></div><div class="item-right docblock-short"><p>A wallet transaction</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.WeightedUtxo.html" title="bdk::WeightedUtxo struct">WeightedUtxo</a></div><div class="item-right docblock-short"><p>A <a href="enum.Utxo.html" title="Utxo"><code>Utxo</code></a> with its <code>satisfaction_weight</code>.</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Error.html" title="bdk::Error enum">Error</a></div><div class="item-right docblock-short"><p>Errors that can be thrown by the <a href="wallet/struct.Wallet.html"><code>Wallet</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.KeychainKind.html" title="bdk::KeychainKind enum">KeychainKind</a></div><div class="item-right docblock-short"><p>Types of keychains</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Utxo.html" title="bdk::Utxo enum">Utxo</a></div><div class="item-right docblock-short"><p>An unspent transaction output (UTXO).</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Vbytes.html" title="bdk::Vbytes trait">Vbytes</a></div><div class="item-right docblock-short"><p>Trait implemented by types that can be used to measure weight units.</p>
-</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.version.html" title="bdk::version fn">version</a></div><div class="item-right docblock-short"><p>Get the version of BDK at runtime</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ConfirmationTime.html" title="bdk::ConfirmationTime type">ConfirmationTime</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short"><p><strong>DEPRECATED</strong>: Confirmation time of a transaction</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2><div class="item-table"><div class="item-row"><div class="item-left"><code>pub extern crate bitcoin;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate bitcoincore_rpc;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate electrum_client;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate esplora_client;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate hwi;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate miniscript;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate rusqlite;</code></div></div><div class="item-row"><div class="item-left"><code>pub extern crate sled;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.template"><code>pub use descriptor::<a class="mod" href="descriptor/template/index.html" title="mod bdk::descriptor::template">template</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.HdKeyPaths"><code>pub use descriptor::<a class="type" href="descriptor/type.HdKeyPaths.html" title="type bdk::descriptor::HdKeyPaths">HdKeyPaths</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.signer"><code>pub use wallet::<a class="mod" href="wallet/signer/index.html" title="mod bdk::wallet::signer">signer</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.SignOptions"><code>pub use wallet::signer::<a class="struct" href="wallet/signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.TxBuilder"><code>pub use wallet::tx_builder::<a class="struct" href="wallet/tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.SyncOptions"><code>pub use wallet::<a class="struct" href="wallet/struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a>;</code></div></div><div class="item-row"><div class="item-left import-item" id="reexport.Wallet"><code>pub use wallet::<a class="struct" href="wallet/struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a>;</code></div></div></div><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="blockchain/index.html" title="bdk::blockchain mod">blockchain</a></div><div class="item-right docblock-short">Blockchain backends</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="database/index.html" title="bdk::database mod">database</a></div><div class="item-right docblock-short">Database types</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="descriptor/index.html" title="bdk::descriptor mod">descriptor</a></div><div class="item-right docblock-short">Descriptors</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="keys/index.html" title="bdk::keys mod">keys</a></div><div class="item-right docblock-short">Key formats</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="psbt/index.html" title="bdk::psbt mod">psbt</a></div><div class="item-right docblock-short">Additional functions on the <code>rust-bitcoin</code> <code>PartiallySignedTransaction</code> structure.</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="wallet/index.html" title="bdk::wallet mod">wallet</a></div><div class="item-right docblock-short">Wallet</div></div></div><h2 id="macros" class="small-section-header"><a href="#macros">Macros</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.descriptor.html" title="bdk::descriptor macro">descriptor</a></div><div class="item-right docblock-short">Macro to write full descriptors with code</div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.fragment.html" title="bdk::fragment macro">fragment</a></div><div class="item-right docblock-short">Macro to write descriptor fragments with code</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Balance.html" title="bdk::Balance struct">Balance</a></div><div class="item-right docblock-short">Balance differentiated in various categories</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BlockTime.html" title="bdk::BlockTime struct">BlockTime</a></div><div class="item-right docblock-short">Block height and timestamp of a block</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.FeeRate.html" title="bdk::FeeRate struct">FeeRate</a></div><div class="item-right docblock-short">Fee rate</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.LocalUtxo.html" title="bdk::LocalUtxo struct">LocalUtxo</a></div><div class="item-right docblock-short">An unspent output owned by a <a href="wallet/struct.Wallet.html"><code>Wallet</code></a>.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.TransactionDetails.html" title="bdk::TransactionDetails struct">TransactionDetails</a></div><div class="item-right docblock-short">A wallet transaction</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.WeightedUtxo.html" title="bdk::WeightedUtxo struct">WeightedUtxo</a></div><div class="item-right docblock-short">A <a href="enum.Utxo.html" title="Utxo"><code>Utxo</code></a> with its <code>satisfaction_weight</code>.</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Error.html" title="bdk::Error enum">Error</a></div><div class="item-right docblock-short">Errors that can be thrown by the <a href="wallet/struct.Wallet.html"><code>Wallet</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.KeychainKind.html" title="bdk::KeychainKind enum">KeychainKind</a></div><div class="item-right docblock-short">Types of keychains</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Utxo.html" title="bdk::Utxo enum">Utxo</a></div><div class="item-right docblock-short">An unspent transaction output (UTXO).</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Vbytes.html" title="bdk::Vbytes trait">Vbytes</a></div><div class="item-right docblock-short">Trait implemented by types that can be used to measure weight units.</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.version.html" title="bdk::version fn">version</a></div><div class="item-right docblock-short">Get the version of BDK at runtime</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ConfirmationTime.html" title="bdk::ConfirmationTime type">ConfirmationTime</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short"><strong>DEPRECATED</strong>: Confirmation time of a transaction</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A BIP39 error."><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.AmbiguousLanguages">AmbiguousLanguages</a><a href="#variant.BadEntropyBitCount">BadEntropyBitCount</a><a href="#variant.BadWordCount">BadWordCount</a><a href="#variant.InvalidChecksum">InvalidChecksum</a><a href="#variant.UnknownWord">UnknownWord</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-Error">Error</a><a href="#impl-PartialEq%3CError%3E">PartialEq<Error></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a></h2><div id="sidebar-vars" data-name="Error" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Error {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A BIP39 error."><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.AmbiguousLanguages">AmbiguousLanguages</a></li><li><a href="#variant.BadEntropyBitCount">BadEntropyBitCount</a></li><li><a href="#variant.BadWordCount">BadWordCount</a></li><li><a href="#variant.InvalidChecksum">InvalidChecksum</a></li><li><a href="#variant.UnknownWord">UnknownWord</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Error">Clone</a></li><li><a href="#impl-Copy-for-Error">Copy</a></li><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Eq-for-Error">Eq</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-PartialEq%3CError%3E-for-Error">PartialEq<Error></a></li><li><a href="#impl-StructuralEq-for-Error">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Error">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Error">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Error">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Error">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Error">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Error">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Error">Into<U></a></li><li><a href="#impl-Pointable-for-Error">Pointable</a></li><li><a href="#impl-Provider-for-Error">Provider</a></li><li><a href="#impl-ToOwned-for-Error">ToOwned</a></li><li><a href="#impl-ToString-for-Error">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Error">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Error">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Error">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys::bip39</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Error {
BadWordCount(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>),
UnknownWord(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>),
BadEntropyBitCount(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>),
InvalidChecksum,
AmbiguousLanguages(AmbiguousLanguages),
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A BIP39 error.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.BadWordCount" class="variant small-section-header"><a href="#variant.BadWordCount" class="anchor field"></a><code>BadWordCount(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</code></h3><div class="docblock"><p>Mnemonic has a word count that is not a multiple of 6.</p>
-</div><h3 id="variant.UnknownWord" class="variant small-section-header"><a href="#variant.UnknownWord" class="anchor field"></a><code>UnknownWord(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</code></h3><div class="docblock"><p>Mnemonic contains an unknown word.
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A BIP39 error.</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.BadWordCount" class="variant"><a href="#variant.BadWordCount" class="anchor">§</a><h3 class="code-header">BadWordCount(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h3></section><div class="docblock"><p>Mnemonic has a word count that is not a multiple of 6.</p>
+</div><section id="variant.UnknownWord" class="variant"><a href="#variant.UnknownWord" class="anchor">§</a><h3 class="code-header">UnknownWord(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h3></section><div class="docblock"><p>Mnemonic contains an unknown word.
Error contains the index of the word.
Use <code>mnemonic.split_whitespace().get(i)</code> to get the word.</p>
-</div><h3 id="variant.BadEntropyBitCount" class="variant small-section-header"><a href="#variant.BadEntropyBitCount" class="anchor field"></a><code>BadEntropyBitCount(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</code></h3><div class="docblock"><p>Entropy was not a multiple of 32 bits or between 128-256n bits in length.</p>
-</div><h3 id="variant.InvalidChecksum" class="variant small-section-header"><a href="#variant.InvalidChecksum" class="anchor field"></a><code>InvalidChecksum</code></h3><div class="docblock"><p>The mnemonic has an invalid checksum.</p>
-</div><h3 id="variant.AmbiguousLanguages" class="variant small-section-header"><a href="#variant.AmbiguousLanguages" class="anchor field"></a><code>AmbiguousLanguages(AmbiguousLanguages)</code></h3><div class="docblock"><p>The mnemonic can be interpreted as multiple languages.
+</div><section id="variant.BadEntropyBitCount" class="variant"><a href="#variant.BadEntropyBitCount" class="anchor">§</a><h3 class="code-header">BadEntropyBitCount(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h3></section><div class="docblock"><p>Entropy was not a multiple of 32 bits or between 128-256n bits in length.</p>
+</div><section id="variant.InvalidChecksum" class="variant"><a href="#variant.InvalidChecksum" class="anchor">§</a><h3 class="code-header">InvalidChecksum</h3></section><div class="docblock"><p>The mnemonic has an invalid checksum.</p>
+</div><section id="variant.AmbiguousLanguages" class="variant"><a href="#variant.AmbiguousLanguages" class="anchor">§</a><h3 class="code-header">AmbiguousLanguages(AmbiguousLanguages)</h3></section><div class="docblock"><p>The mnemonic can be interpreted as multiple languages.
Use the helper methods of the inner struct to inspect
which languages are possible.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CError%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Error" class="impl has-srclink"><a href="#impl-Clone-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl has-srclink"><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl has-srclink"><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl has-srclink"><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CError%3E-for-Error" class="impl has-srclink"><a href="#impl-PartialEq%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Copy-for-Error" class="impl has-srclink"><a href="#impl-Copy-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-Eq-for-Error" class="impl has-srclink"><a href="#impl-Eq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-StructuralEq-for-Error" class="impl has-srclink"><a href="#impl-StructuralEq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-StructuralPartialEq-for-Error" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl has-srclink"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl has-srclink"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl has-srclink"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Error" class="impl has-srclink"><a href="#impl-Pointable-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-Error" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Error" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Error" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Language to be used for the mnemonic phrase."><meta name="keywords" content="rust, rustlang, rust-lang, Language"><title>Language in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Language</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.English">English</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.all">all</a><a href="#method.words_by_prefix">words_by_prefix</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CLanguage%3E">PartialEq<Language></a><a href="#impl-PartialOrd%3CLanguage%3E">PartialOrd<Language></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a></h2><div id="sidebar-vars" data-name="Language" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="enum" href="#">Language</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Language {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Language to be used for the mnemonic phrase."><meta name="keywords" content="rust, rustlang, rust-lang, Language"><title>Language in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Language</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.English">English</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.all">all</a></li><li><a href="#method.words_by_prefix">words_by_prefix</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Language">Clone</a></li><li><a href="#impl-Copy-for-Language">Copy</a></li><li><a href="#impl-Debug-for-Language">Debug</a></li><li><a href="#impl-Display-for-Language">Display</a></li><li><a href="#impl-Eq-for-Language">Eq</a></li><li><a href="#impl-Hash-for-Language">Hash</a></li><li><a href="#impl-Ord-for-Language">Ord</a></li><li><a href="#impl-PartialEq%3CLanguage%3E-for-Language">PartialEq<Language></a></li><li><a href="#impl-PartialOrd%3CLanguage%3E-for-Language">PartialOrd<Language></a></li><li><a href="#impl-StructuralEq-for-Language">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Language">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Language">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Language">Send</a></li><li><a href="#impl-Sync-for-Language">Sync</a></li><li><a href="#impl-Unpin-for-Language">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Language">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Language">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Language">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Language">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Language">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-Language">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Language">Into<U></a></li><li><a href="#impl-Pointable-for-Language">Pointable</a></li><li><a href="#impl-ToOwned-for-Language">ToOwned</a></li><li><a href="#impl-ToString-for-Language">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Language">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Language">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Language">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys::bip39</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="enum" href="#">Language</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Language {
English,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Language to be used for the mnemonic phrase.</p>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Language to be used for the mnemonic phrase.</p>
<p>The English language is always available, other languages are enabled using
the compilation features.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.English" class="variant small-section-header"><a href="#variant.English" class="anchor field"></a><code>English</code></h3><div class="docblock"><p>The English language.</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.all" class="method has-srclink"><div class="rightside"></div><a href="#method.all" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.all" class="fnname">all</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&'static [</a><a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a></h4></div></summary><div class="docblock"><p>The list of supported languages.
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.English" class="variant"><a href="#variant.English" class="anchor">§</a><h3 class="code-header">English</h3></section><div class="docblock"><p>The English language.</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Language" class="impl has-srclink"><a href="#impl-Language" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.all" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.all" class="fn">all</a>() -> &'static [<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>]</h4></section></summary><div class="docblock"><p>The list of supported languages.
Language support is managed by compile features.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.words_by_prefix" class="method has-srclink"><div class="rightside"></div><a href="#method.words_by_prefix" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.words_by_prefix" class="fnname">words_by_prefix</a>(self, prefix: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a>&'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a></h4></div></summary><div class="docblock"><p>Get words from the word list that start with the given prefix.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CLanguage%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CLanguage%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CLanguage%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CLanguage%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.words_by_prefix" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.words_by_prefix" class="fn">words_by_prefix</a>(self, prefix: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> &[&'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>]</h4></section></summary><div class="docblock"><p>Get words from the word list that start with the given prefix.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Language" class="impl has-srclink"><a href="#impl-Clone-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Language" class="impl has-srclink"><a href="#impl-Debug-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Language" class="impl has-srclink"><a href="#impl-Display-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Language" class="impl has-srclink"><a href="#impl-Hash-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Language" class="impl has-srclink"><a href="#impl-Ord-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CLanguage%3E-for-Language" class="impl has-srclink"><a href="#impl-PartialEq%3CLanguage%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CLanguage%3E-for-Language" class="impl has-srclink"><a href="#impl-PartialOrd%3CLanguage%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Copy-for-Language" class="impl has-srclink"><a href="#impl-Copy-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-Eq-for-Language" class="impl has-srclink"><a href="#impl-Eq-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-StructuralEq-for-Language" class="impl has-srclink"><a href="#impl-StructuralEq-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-StructuralPartialEq-for-Language" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Language" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-Send-for-Language" class="impl has-srclink"><a href="#impl-Send-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-Sync-for-Language" class="impl has-srclink"><a href="#impl-Sync-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-Unpin-for-Language" class="impl has-srclink"><a href="#impl-Unpin-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section><section id="impl-UnwindSafe-for-Language" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Language" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Language" class="impl has-srclink"><a href="#impl-CallHasher-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Language" class="impl has-srclink"><a href="#impl-Pointable-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Language" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Language" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Language" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Language" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type describing entropy length (aka word count) in the mnemonic"><meta name="keywords" content="rust, rustlang, rust-lang, WordCount"><title>WordCount in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">WordCount</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Words12">Words12</a><a href="#variant.Words15">Words15</a><a href="#variant.Words18">Words18</a><a href="#variant.Words21">Words21</a><a href="#variant.Words24">Words24</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a></h2><div id="sidebar-vars" data-name="WordCount" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="enum" href="#">WordCount</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#27-38" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum WordCount {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type describing entropy length (aka word count) in the mnemonic"><meta name="keywords" content="rust, rustlang, rust-lang, WordCount"><title>WordCount in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">WordCount</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Words12">Words12</a></li><li><a href="#variant.Words15">Words15</a></li><li><a href="#variant.Words18">Words18</a></li><li><a href="#variant.Words21">Words21</a></li><li><a href="#variant.Words24">Words24</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-WordCount">RefUnwindSafe</a></li><li><a href="#impl-Send-for-WordCount">Send</a></li><li><a href="#impl-Sync-for-WordCount">Sync</a></li><li><a href="#impl-Unpin-for-WordCount">Unpin</a></li><li><a href="#impl-UnwindSafe-for-WordCount">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-WordCount">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-WordCount">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-WordCount">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-WordCount">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-WordCount">Into<U></a></li><li><a href="#impl-Pointable-for-WordCount">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-WordCount">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-WordCount">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-WordCount">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys::bip39</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="enum" href="#">WordCount</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#27-38">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum WordCount {
Words12,
Words15,
Words18,
Words21,
Words24,
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type describing entropy length (aka word count) in the mnemonic</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Words12" class="variant small-section-header"><a href="#variant.Words12" class="anchor field"></a><code>Words12</code></h3><div class="docblock"><p>12 words mnemonic (128 bits entropy)</p>
-</div><h3 id="variant.Words15" class="variant small-section-header"><a href="#variant.Words15" class="anchor field"></a><code>Words15</code></h3><div class="docblock"><p>15 words mnemonic (160 bits entropy)</p>
-</div><h3 id="variant.Words18" class="variant small-section-header"><a href="#variant.Words18" class="anchor field"></a><code>Words18</code></h3><div class="docblock"><p>18 words mnemonic (192 bits entropy)</p>
-</div><h3 id="variant.Words21" class="variant small-section-header"><a href="#variant.Words21" class="anchor field"></a><code>Words21</code></h3><div class="docblock"><p>21 words mnemonic (224 bits entropy)</p>
-</div><h3 id="variant.Words24" class="variant small-section-header"><a href="#variant.Words24" class="anchor field"></a><code>Words24</code></h3><div class="docblock"><p>24 words mnemonic (256 bits entropy)</p>
-</div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type describing entropy length (aka word count) in the mnemonic</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Words12" class="variant"><a href="#variant.Words12" class="anchor">§</a><h3 class="code-header">Words12</h3></section><div class="docblock"><p>12 words mnemonic (128 bits entropy)</p>
+</div><section id="variant.Words15" class="variant"><a href="#variant.Words15" class="anchor">§</a><h3 class="code-header">Words15</h3></section><div class="docblock"><p>15 words mnemonic (160 bits entropy)</p>
+</div><section id="variant.Words18" class="variant"><a href="#variant.Words18" class="anchor">§</a><h3 class="code-header">Words18</h3></section><div class="docblock"><p>18 words mnemonic (192 bits entropy)</p>
+</div><section id="variant.Words21" class="variant"><a href="#variant.Words21" class="anchor">§</a><h3 class="code-header">Words21</h3></section><div class="docblock"><p>21 words mnemonic (224 bits entropy)</p>
+</div><section id="variant.Words24" class="variant"><a href="#variant.Words24" class="anchor">§</a><h3 class="code-header">Words24</h3></section><div class="docblock"><p>24 words mnemonic (256 bits entropy)</p>
+</div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-WordCount" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-WordCount" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></section><section id="impl-Send-for-WordCount" class="impl has-srclink"><a href="#impl-Send-for-WordCount" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></section><section id="impl-Sync-for-WordCount" class="impl has-srclink"><a href="#impl-Sync-for-WordCount" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></section><section id="impl-Unpin-for-WordCount" class="impl has-srclink"><a href="#impl-Unpin-for-WordCount" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></section><section id="impl-UnwindSafe-for-WordCount" class="impl has-srclink"><a href="#impl-UnwindSafe-for-WordCount" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-WordCount" class="impl has-srclink"><a href="#impl-Pointable-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-WordCount" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-WordCount" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-WordCount" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP-0039"><meta name="keywords" content="rust, rustlang, rust-lang, bip39"><title>bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module bip39</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="bip39" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a class="mod" href="#">bip39</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#12-225" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP-0039</p>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Mnemonic.html" title="bdk::keys::bip39::Mnemonic struct">Mnemonic</a></div><div class="item-right docblock-short"><p>A mnemonic code.</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Error.html" title="bdk::keys::bip39::Error enum">Error</a></div><div class="item-right docblock-short"><p>A BIP39 error.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Language.html" title="bdk::keys::bip39::Language enum">Language</a></div><div class="item-right docblock-short"><p>Language to be used for the mnemonic phrase.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.WordCount.html" title="bdk::keys::bip39::WordCount enum">WordCount</a></div><div class="item-right docblock-short"><p>Type describing entropy length (aka word count) in the mnemonic</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.MnemonicWithPassphrase.html" title="bdk::keys::bip39::MnemonicWithPassphrase type">MnemonicWithPassphrase</a></div><div class="item-right docblock-short"><p>Type for a BIP39 mnemonic with an optional passphrase</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BIP-0039"><meta name="keywords" content="rust, rustlang, rust-lang, bip39"><title>bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module bip39</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a class="mod" href="#">bip39</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#12-225">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BIP-0039</p>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Mnemonic.html" title="bdk::keys::bip39::Mnemonic struct">Mnemonic</a></div><div class="item-right docblock-short">A mnemonic code.</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Error.html" title="bdk::keys::bip39::Error enum">Error</a></div><div class="item-right docblock-short">A BIP39 error.</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Language.html" title="bdk::keys::bip39::Language enum">Language</a></div><div class="item-right docblock-short">Language to be used for the mnemonic phrase.</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.WordCount.html" title="bdk::keys::bip39::WordCount enum">WordCount</a></div><div class="item-right docblock-short">Type describing entropy length (aka word count) in the mnemonic</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.MnemonicWithPassphrase.html" title="bdk::keys::bip39::MnemonicWithPassphrase type">MnemonicWithPassphrase</a></div><div class="item-right docblock-short">Type for a BIP39 mnemonic with an optional passphrase</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Error","A BIP39 error."],["Language","Language to be used for the mnemonic phrase."],["WordCount","Type describing entropy length (aka word count) in the mnemonic"]],"struct":[["Mnemonic","A mnemonic code."]],"type":[["MnemonicWithPassphrase","Type for a BIP39 mnemonic with an optional passphrase"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Error","A BIP39 error."],["Language","Language to be used for the mnemonic phrase."],["WordCount","Type describing entropy length (aka word count) in the mnemonic"]],"struct":[["Mnemonic","A mnemonic code."]],"type":[["MnemonicWithPassphrase","Type for a BIP39 mnemonic with an optional passphrase"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A mnemonic code."><meta name="keywords" content="rust, rustlang, rust-lang, Mnemonic"><title>Mnemonic in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Mnemonic</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.from_entropy">from_entropy</a><a href="#method.from_entropy_in">from_entropy_in</a><a href="#method.generate_in_with">generate_in_with</a><a href="#method.language">language</a><a href="#method.language_of">language_of</a><a href="#method.parse">parse</a><a href="#method.parse_in">parse_in</a><a href="#method.parse_in_normalized">parse_in_normalized</a><a href="#method.parse_normalized">parse_normalized</a><a href="#method.to_entropy">to_entropy</a><a href="#method.to_entropy_array">to_entropy_array</a><a href="#method.to_seed">to_seed</a><a href="#method.to_seed_normalized">to_seed_normalized</a><a href="#method.word_count">word_count</a><a href="#method.word_iter">word_iter</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-DerivableKey%3CCtx%3E">DerivableKey<Ctx></a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-FromStr">FromStr</a><a href="#impl-GeneratableKey%3CCtx%3E">GeneratableKey<Ctx></a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CMnemonic%3E">PartialEq<Mnemonic></a><a href="#impl-PartialOrd%3CMnemonic%3E">PartialOrd<Mnemonic></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a></h2><div id="sidebar-vars" data-name="Mnemonic" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="struct" href="#">Mnemonic</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Mnemonic { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A mnemonic code.</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A mnemonic code."><meta name="keywords" content="rust, rustlang, rust-lang, Mnemonic"><title>Mnemonic in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Mnemonic</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.from_entropy">from_entropy</a></li><li><a href="#method.from_entropy_in">from_entropy_in</a></li><li><a href="#method.generate_in_with">generate_in_with</a></li><li><a href="#method.language">language</a></li><li><a href="#method.language_of">language_of</a></li><li><a href="#method.parse">parse</a></li><li><a href="#method.parse_in">parse_in</a></li><li><a href="#method.parse_in_normalized">parse_in_normalized</a></li><li><a href="#method.parse_normalized">parse_normalized</a></li><li><a href="#method.to_entropy">to_entropy</a></li><li><a href="#method.to_entropy_array">to_entropy_array</a></li><li><a href="#method.to_seed">to_seed</a></li><li><a href="#method.to_seed_normalized">to_seed_normalized</a></li><li><a href="#method.word_count">word_count</a></li><li><a href="#method.word_iter">word_iter</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Mnemonic">Clone</a></li><li><a href="#impl-Debug-for-Mnemonic">Debug</a></li><li><a href="#impl-DerivableKey%3CCtx%3E-for-Mnemonic">DerivableKey<Ctx></a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-Mnemonic">Deserialize<'de></a></li><li><a href="#impl-Display-for-Mnemonic">Display</a></li><li><a href="#impl-Eq-for-Mnemonic">Eq</a></li><li><a href="#impl-FromStr-for-Mnemonic">FromStr</a></li><li><a href="#impl-GeneratableKey%3CCtx%3E-for-Mnemonic">GeneratableKey<Ctx></a></li><li><a href="#impl-Hash-for-Mnemonic">Hash</a></li><li><a href="#impl-Ord-for-Mnemonic">Ord</a></li><li><a href="#impl-PartialEq%3CMnemonic%3E-for-Mnemonic">PartialEq<Mnemonic></a></li><li><a href="#impl-PartialOrd%3CMnemonic%3E-for-Mnemonic">PartialOrd<Mnemonic></a></li><li><a href="#impl-Serialize-for-Mnemonic">Serialize</a></li><li><a href="#impl-StructuralEq-for-Mnemonic">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Mnemonic">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Mnemonic">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Mnemonic">Send</a></li><li><a href="#impl-Sync-for-Mnemonic">Sync</a></li><li><a href="#impl-Unpin-for-Mnemonic">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Mnemonic">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Mnemonic">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Mnemonic">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Mnemonic">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-Mnemonic">CallHasher</a></li><li><a href="#impl-DeserializeOwned-for-Mnemonic">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-Mnemonic">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Mnemonic">Into<U></a></li><li><a href="#impl-Pointable-for-Mnemonic">Pointable</a></li><li><a href="#impl-ToOwned-for-Mnemonic">ToOwned</a></li><li><a href="#impl-ToString-for-Mnemonic">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Mnemonic">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Mnemonic">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Mnemonic">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys::bip39</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="struct" href="#">Mnemonic</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Mnemonic { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A mnemonic code.</p>
<p>The <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="core::str::FromStr">core::str::FromStr</a> implementation will try to determine the language of the
mnemonic from all the supported languages. (Languages have to be explicitly enabled using
the Cargo features.)</p>
<p>Supported number of words are 12, 18 and 24.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_entropy_in" class="method has-srclink"><div class="rightside"></div><a href="#method.from_entropy_in" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_entropy_in" class="fnname">from_entropy_in</a>(<br> language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, <br> entropy: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></summary><div class="docblock"><p>Create a new <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a> in the specified language from the given entropy.
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Mnemonic" class="impl has-srclink"><a href="#impl-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_entropy_in" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.from_entropy_in" class="fn">from_entropy_in</a>(<br> language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>,<br> entropy: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></summary><div class="docblock"><p>Create a new <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a> in the specified language from the given entropy.
Entropy must be a multiple of 32 bits (4 bytes) and 128-256 bits in length.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_entropy" class="method has-srclink"><div class="rightside"></div><a href="#method.from_entropy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_entropy" class="fnname">from_entropy</a>(entropy: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></summary><div class="docblock"><p>Create a new English <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a> from the given entropy.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_entropy" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.from_entropy" class="fn">from_entropy</a>(entropy: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></summary><div class="docblock"><p>Create a new English <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a> from the given entropy.
Entropy must be a multiple of 32 bits (4 bytes) and 128-256 bits in length.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.generate_in_with" class="method has-srclink"><div class="rightside"></div><a href="#method.generate_in_with" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.generate_in_with" class="fnname">generate_in_with</a><R>(<br> rng: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>R, <br> language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, <br> word_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>> <span class="where fmt-newline">where<br> R: <a class="trait" href="https://rust-random.github.io/rand/rand_core/trait.RngCore.html" title="trait rand_core::RngCore">RngCore</a> + <a class="trait" href="https://rust-random.github.io/rand/rand_core/trait.CryptoRng.html" title="trait rand_core::CryptoRng">CryptoRng</a>, </span></h4></div></summary><div class="docblock"><p>Generate a new <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a> in the given language
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.generate_in_with" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.generate_in_with" class="fn">generate_in_with</a><R>(<br> rng: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>R,<br> language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>,<br> word_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>><span class="where fmt-newline">where<br> R: <a class="trait" href="https://rust-random.github.io/rand/rand_core/trait.RngCore.html" title="trait rand_core::RngCore">RngCore</a> + <a class="trait" href="https://rust-random.github.io/rand/rand_core/trait.CryptoRng.html" title="trait rand_core::CryptoRng">CryptoRng</a>,</span></h4></section></summary><div class="docblock"><p>Generate a new <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a> in the given language
with the given randomness source.
For the different supported word counts, see documentation on <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a>.</p>
<p>Example:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">rand</span>;
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">bip39</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">extern crate </span>rand;
+<span class="kw">extern crate </span>bip39;
-<span class="kw">use</span> <span class="ident">bip39</span>::{<span class="ident">Mnemonic</span>, <span class="ident">Language</span>};
+<span class="kw">use </span>bip39::{Mnemonic, Language};
-<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span> <span class="op">=</span> <span class="ident">rand::thread_rng</span>();
-<span class="kw">let</span> <span class="ident">m</span> <span class="op">=</span> <span class="ident">Mnemonic::generate_in_with</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>, <span class="ident">Language::English</span>, <span class="number">24</span>).<span class="ident">unwrap</span>();</code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.language" class="method has-srclink"><div class="rightside"></div><a href="#method.language" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.language" class="fnname">language</a>(&self) -> <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h4></div></summary><div class="docblock"><p>Get the language of the <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.word_iter" class="method has-srclink"><div class="rightside"></div><a href="#method.word_iter" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.word_iter" class="fnname">word_iter</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></h4></div></summary><div class="docblock"><p>Get an iterator over the words.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.language_of" class="method has-srclink"><div class="rightside"></div><a href="#method.language_of" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.language_of" class="fnname">language_of</a><S>(mnemonic: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>, </span></h4></div></summary><div class="docblock"><p>Determine the language of the mnemonic.</p>
+<span class="kw">let </span><span class="kw-2">mut </span>rng = rand::thread_rng();
+<span class="kw">let </span>m = Mnemonic::generate_in_with(<span class="kw-2">&mut </span>rng, Language::English, <span class="number">24</span>).unwrap();</code></pre></div>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.language" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.language" class="fn">language</a>(&self) -> <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a></h4></section></summary><div class="docblock"><p>Get the language of the <a href="struct.Mnemonic.html" title="Mnemonic">Mnemonic</a>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.word_iter" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.word_iter" class="fn">word_iter</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></h4></section></summary><div class="docblock"><p>Get an iterator over the words.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.language_of" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.language_of" class="fn">language_of</a><S>(mnemonic: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>,</span></h4></section></summary><div class="docblock"><p>Determine the language of the mnemonic.</p>
<p>NOTE: This method only guarantees that the returned language is the
correct language on the assumption that the mnemonic is valid.
It does not itself validate the mnemonic.</p>
word lists. In the extremely unlikely case that a word list can be
interpreted in multiple languages, an <a href="enum.Error.html#variant.AmbiguousLanguages" title="Error::AmbiguousLanguages">Error::AmbiguousLanguages</a> is
returned, containing the possible languages.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse_in_normalized" class="method has-srclink"><div class="rightside"></div><a href="#method.parse_in_normalized" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse_in_normalized" class="fnname">parse_in_normalized</a>(<br> language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, <br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></summary><div class="docblock"><p>Parse a mnemonic in normalized UTF8 in the given language.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse_normalized" class="method has-srclink"><div class="rightside"></div><a href="#method.parse_normalized" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse_normalized" class="fnname">parse_normalized</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></summary><div class="docblock"><p>Parse a mnemonic in normalized UTF8.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse_in" class="method has-srclink"><div class="rightside"></div><a href="#method.parse_in" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse_in" class="fnname">parse_in</a><'a, S>(language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, s: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="enum" href="https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html" title="enum alloc::borrow::Cow">Cow</a><'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>>, </span></h4></div></summary><div class="docblock"><p>Parse a mnemonic in the given language.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.parse" class="method has-srclink"><div class="rightside"></div><a href="#method.parse" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.parse" class="fnname">parse</a><'a, S>(s: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="enum" href="https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html" title="enum alloc::borrow::Cow">Cow</a><'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>>, </span></h4></div></summary><div class="docblock"><p>Parse a mnemonic and detect the language from the enabled languages.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.word_count" class="method has-srclink"><div class="rightside"></div><a href="#method.word_count" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.word_count" class="fnname">word_count</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class="docblock"><p>Get the number of words in the mnemonic.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_seed_normalized" class="method has-srclink"><div class="rightside"></div><a href="#method.to_seed_normalized" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_seed_normalized" class="fnname">to_seed_normalized</a>(&self, normalized_passphrase: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 64]</a></h4></div></summary><div class="docblock"><p>Convert to seed bytes with a passphrase in normalized UTF8.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_seed" class="method has-srclink"><div class="rightside"></div><a href="#method.to_seed" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_seed" class="fnname">to_seed</a><'a, P>(&self, passphrase: P) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 64]</a> <span class="where fmt-newline">where<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="enum" href="https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html" title="enum alloc::borrow::Cow">Cow</a><'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>>, </span></h4></div></summary><div class="docblock"><p>Convert to seed bytes.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_entropy_array" class="method has-srclink"><div class="rightside"></div><a href="#method.to_entropy_array" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_entropy_array" class="fnname">to_entropy_array</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 33]</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h4></div></summary><div class="docblock"><p>Convert the mnemonic back to the entropy used to generate it.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse_in_normalized" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse_in_normalized" class="fn">parse_in_normalized</a>(<br> language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>,<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></summary><div class="docblock"><p>Parse a mnemonic in normalized UTF8 in the given language.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse_normalized" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse_normalized" class="fn">parse_normalized</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></summary><div class="docblock"><p>Parse a mnemonic in normalized UTF8.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse_in" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse_in" class="fn">parse_in</a><'a, S>(language: <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>, s: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="enum" href="https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html" title="enum alloc::borrow::Cow">Cow</a><'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>>,</span></h4></section></summary><div class="docblock"><p>Parse a mnemonic in the given language.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.parse" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.parse" class="fn">parse</a><'a, S>(s: S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="enum" href="https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html" title="enum alloc::borrow::Cow">Cow</a><'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>>,</span></h4></section></summary><div class="docblock"><p>Parse a mnemonic and detect the language from the enabled languages.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.word_count" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.word_count" class="fn">word_count</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Get the number of words in the mnemonic.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_seed_normalized" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_seed_normalized" class="fn">to_seed_normalized</a>(&self, normalized_passphrase: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">64</a>]</h4></section></summary><div class="docblock"><p>Convert to seed bytes with a passphrase in normalized UTF8.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_seed" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_seed" class="fn">to_seed</a><'a, P>(&self, passphrase: P) -> [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">64</a>]<span class="where fmt-newline">where<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="enum" href="https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html" title="enum alloc::borrow::Cow">Cow</a><'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>>,</span></h4></section></summary><div class="docblock"><p>Convert to seed bytes.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_entropy_array" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_entropy_array" class="fn">to_entropy_array</a>(&self) -> ([<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">33</a>], <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Convert the mnemonic back to the entropy used to generate it.
The return value is a byte array and the size.
Use <a href="struct.Mnemonic.html#method.to_entropy" title="Mnemonic::to_entropy">Mnemonic::to_entropy</a> (needs <code>std</code>) to get a <a href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="Vec<u8>">Vec<u8></a>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_entropy" class="method has-srclink"><div class="rightside"></div><a href="#method.to_entropy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_entropy" class="fnname">to_entropy</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A></div><code class="content"><span class="where fmt-newline">impl<A> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A> <span class="where fmt-newline">where<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>, </span></span></code></span></div></span></span></h4></div></summary><div class="docblock"><p>Convert the mnemonic back to the entropy used to generate it.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DerivableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#115-131" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="../trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_extended_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#116-118" title="goto source code">source</a></div><a href="#method.into_extended_key" class="anchor"></a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into an <a href="../enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="../trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#120-130" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into a <a href="../enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
-key origin and derivation path <a href="../trait.DerivableKey.html#method.into_descriptor_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">pub fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><D>(<br> deserializer: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <D as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></summary><div class='docblock'><p>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-GeneratableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#134-149" title="goto source code">source</a></div><a href="#impl-GeneratableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="../trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Entropy" class="type trait-impl has-srclink"><a href="#associatedtype.Entropy" class="anchor"></a><h4 class="code-header">type <a href="../trait.GeneratableKey.html#associatedtype.Entropy" class="associatedtype">Entropy</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 32]</a></h4></div></summary><div class='docblock'><p>Type specifying the amount of entropy required e.g. <code>[u8;32]</code></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Options" class="type trait-impl has-srclink"><a href="#associatedtype.Options" class="anchor"></a><h4 class="code-header">type <a href="../trait.GeneratableKey.html#associatedtype.Options" class="associatedtype">Options</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a>, <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h4></div></summary><div class='docblock'><p>Extra options required by the <code>generate_with_entropy</code></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="../trait.GeneratableKey.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></summary><div class='docblock'><p>Returned error in case of failure</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.generate_with_entropy" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#140-148" title="goto source code">source</a></div><a href="#method.generate_with_entropy" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GeneratableKey.html#tymethod.generate_with_entropy" class="fnname">generate_with_entropy</a>(<br> (word_count, language): Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>, <br> entropy: Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></summary><div class='docblock'><p>Generate a key given the extra options and the entropy</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.generate" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/mod.rs.html#631-637" title="goto source code">source</a></div><a href="#method.generate" class="anchor"></a><h4 class="code-header">fn <a href="../trait.GeneratableKey.html#method.generate" class="fnname">generate</a>(<br> options: Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></summary><div class='docblock'><p>Generate a key given the options with a random entropy</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CMnemonic%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CMnemonic%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CMnemonic%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CMnemonic%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">pub fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><S>(<br> &self, <br> serializer: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<S as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, <S as <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-2" class="type trait-impl has-srclink"><a href="#associatedtype.Error-2" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_entropy" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_entropy" class="fn">to_entropy</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>> <a href="#" class="notable-traits" data-ty="Vec<u8, Global>">ⓘ</a></h4></section></summary><div class="docblock"><p>Convert the mnemonic back to the entropy used to generate it.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Mnemonic" class="impl has-srclink"><a href="#impl-Clone-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Mnemonic" class="impl has-srclink"><a href="#impl-Debug-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DerivableKey%3CCtx%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#115-131">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="../trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_extended_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#116-118">source</a><a href="#method.into_extended_key" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into an <a href="../enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="../trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#120-130">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into a <a href="../enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
+key origin and derivation path <a href="../trait.DerivableKey.html#method.into_descriptor_key">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-Mnemonic" class="impl has-srclink"><a href="#impl-Deserialize%3C%27de%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><D>(<br> deserializer: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <D as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Mnemonic" class="impl has-srclink"><a href="#impl-Display-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-Mnemonic" class="impl has-srclink"><a href="#impl-FromStr-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a></h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GeneratableKey%3CCtx%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#134-149">source</a><a href="#impl-GeneratableKey%3CCtx%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="../trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Entropy" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Entropy" class="anchor">§</a><h4 class="code-header">type <a href="../trait.GeneratableKey.html#associatedtype.Entropy" class="associatedtype">Entropy</a> = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">32</a>]</h4></section></summary><div class='docblock'>Type specifying the amount of entropy required e.g. <code>[u8;32]</code></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Options" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Options" class="anchor">§</a><h4 class="code-header">type <a href="../trait.GeneratableKey.html#associatedtype.Options" class="associatedtype">Options</a> = (<a class="enum" href="enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a>, <a class="enum" href="enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>)</h4></section></summary><div class='docblock'>Extra options required by the <code>generate_with_entropy</code></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="../trait.GeneratableKey.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></summary><div class='docblock'>Returned error in case of failure</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.generate_with_entropy" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#140-148">source</a><a href="#method.generate_with_entropy" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GeneratableKey.html#tymethod.generate_with_entropy" class="fn">generate_with_entropy</a>(<br> (word_count, language): Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>,<br> entropy: Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></summary><div class='docblock'>Generate a key given the extra options and the entropy</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.generate" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/mod.rs.html#631-637">source</a><a href="#method.generate" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.GeneratableKey.html#method.generate" class="fn">generate</a>(<br> options: Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="../trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></summary><div class='docblock'>Generate a key given the options with a random entropy</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Mnemonic" class="impl has-srclink"><a href="#impl-Hash-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Mnemonic" class="impl has-srclink"><a href="#impl-Ord-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CMnemonic%3E-for-Mnemonic" class="impl has-srclink"><a href="#impl-PartialEq%3CMnemonic%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CMnemonic%3E-for-Mnemonic" class="impl has-srclink"><a href="#impl-PartialOrd%3CMnemonic%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Mnemonic" class="impl has-srclink"><a href="#impl-Serialize-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><S>(<br> &self,<br> serializer: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<S as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, <S as <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>>::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Mnemonic" class="impl has-srclink"><a href="#impl-Eq-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section><section id="impl-StructuralEq-for-Mnemonic" class="impl has-srclink"><a href="#impl-StructuralEq-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section><section id="impl-StructuralPartialEq-for-Mnemonic" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Mnemonic" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section><section id="impl-Send-for-Mnemonic" class="impl has-srclink"><a href="#impl-Send-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section><section id="impl-Sync-for-Mnemonic" class="impl has-srclink"><a href="#impl-Sync-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section><section id="impl-Unpin-for-Mnemonic" class="impl has-srclink"><a href="#impl-Unpin-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section><section id="impl-UnwindSafe-for-Mnemonic" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-Mnemonic" class="impl has-srclink"><a href="#impl-CallHasher-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Mnemonic" class="impl has-srclink"><a href="#impl-Pointable-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-2" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Mnemonic" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div><script type="text/json" id="notable-traits-data">{"Vec<u8, Global>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A></code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl<A> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A><span class=\"where fmt-newline\">where<br> A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</span></span>"}</script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type for a BIP39 mnemonic with an optional passphrase"><meta name="keywords" content="rust, rustlang, rust-lang, MnemonicWithPassphrase"><title>MnemonicWithPassphrase in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">MnemonicWithPassphrase</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DerivableKey%3CCtx%3E">DerivableKey<Ctx></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a></h2><div id="sidebar-vars" data-name="MnemonicWithPassphrase" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="type" href="#">MnemonicWithPassphrase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#54" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type MnemonicWithPassphrase = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type for a BIP39 mnemonic with an optional passphrase</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DerivableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#76-95" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="../trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="type" href="type.MnemonicWithPassphrase.html" title="type bdk::keys::bip39::MnemonicWithPassphrase">MnemonicWithPassphrase</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_extended_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#77-82" title="goto source code">source</a></div><a href="#method.into_extended_key" class="anchor"></a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into an <a href="../enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="../trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#84-94" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into a <a href="../enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
-key origin and derivation path <a href="../trait.DerivableKey.html#method.into_descriptor_key">Read more</a></p>
-</div></details></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Type for a BIP39 mnemonic with an optional passphrase"><meta name="keywords" content="rust, rustlang, rust-lang, MnemonicWithPassphrase"><title>MnemonicWithPassphrase in bdk::keys::bip39 - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">MnemonicWithPassphrase</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DerivableKey%3CCtx%3E-for-MnemonicWithPassphrase">DerivableKey<Ctx></a></li></ul></section><h2><a href="index.html">In bdk::keys::bip39</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">keys</a>::<wbr><a href="index.html">bip39</a>::<wbr><a class="type" href="#">MnemonicWithPassphrase</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/keys/bip39.rs.html#54">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type MnemonicWithPassphrase = (<a class="struct" href="struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>);</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Type for a BIP39 mnemonic with an optional passphrase</p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DerivableKey%3CCtx%3E-for-MnemonicWithPassphrase" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#76-95">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-MnemonicWithPassphrase" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="../trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="../trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="type" href="type.MnemonicWithPassphrase.html" title="type bdk::keys::bip39::MnemonicWithPassphrase">MnemonicWithPassphrase</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_extended_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#77-82">source</a><a href="#method.into_extended_key" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into an <a href="../enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="../trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/keys/bip39.rs.html#84-94">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.DerivableKey.html#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="../enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="../enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into a <a href="../enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
+key origin and derivation path <a href="../trait.DerivableKey.html#method.into_descriptor_key">Read more</a></div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Container for public or secret keys"><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorKey"><title>DescriptorKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.from_public">from_public</a><a href="#method.from_secret">from_secret</a><a href="#method.override_valid_networks">override_valid_networks</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-IntoDescriptorKey%3CCtx%3E">IntoDescriptorKey<Ctx></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="DescriptorKey" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">DescriptorKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#71-76" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum DescriptorKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Container for public or secret keys"><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorKey"><title>DescriptorKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorKey</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.from_public">from_public</a></li><li><a href="#method.from_secret">from_secret</a></li><li><a href="#method.override_valid_networks">override_valid_networks</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-DescriptorKey%3CCtx%3E">Debug</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorKey%3CCtx%3E">IntoDescriptorKey<Ctx></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-DescriptorKey%3CCtx%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DescriptorKey%3CCtx%3E">Send</a></li><li><a href="#impl-Sync-for-DescriptorKey%3CCtx%3E">Sync</a></li><li><a href="#impl-Unpin-for-DescriptorKey%3CCtx%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DescriptorKey%3CCtx%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-DescriptorKey%3CCtx%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-DescriptorKey%3CCtx%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-DescriptorKey%3CCtx%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-DescriptorKey%3CCtx%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-DescriptorKey%3CCtx%3E">Into<U></a></li><li><a href="#impl-Pointable-for-DescriptorKey%3CCtx%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-DescriptorKey%3CCtx%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-DescriptorKey%3CCtx%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-DescriptorKey%3CCtx%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">DescriptorKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#71-76">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum DescriptorKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> {
// some variants omitted
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Container for public or secret keys</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#78-121" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_public" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#80-82" title="goto source code">source</a></div><a href="#method.from_public" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_public" class="fnname">from_public</a>(public: <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, networks: <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> Self</h4></div></summary><div class="docblock"><p>Create an instance given a public key and a set of valid networks</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_secret" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#85-87" title="goto source code">source</a></div><a href="#method.from_secret" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_secret" class="fnname">from_secret</a>(secret: <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, networks: <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> Self</h4></div></summary><div class="docblock"><p>Create an instance given a secret key and a set of valid networks</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.override_valid_networks" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#90-95" title="goto source code">source</a></div><a href="#method.override_valid_networks" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.override_valid_networks" class="fnname">override_valid_networks</a>(self, networks: <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> Self</h4></div></summary><div class="docblock"><p>Override the computed set of valid networks</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#70" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#70" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoDescriptorKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#836-840" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></div></summary><div class="docblock"><p>The “identity” conversion is used internally by some <code>bdk::fragment</code>s</p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#837-839" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#78-121">source</a><a href="#impl-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_public" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#80-82">source</a><h4 class="code-header">pub fn <a href="#method.from_public" class="fn">from_public</a>(public: <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, networks: <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> Self</h4></section></summary><div class="docblock"><p>Create an instance given a public key and a set of valid networks</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_secret" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#85-87">source</a><h4 class="code-header">pub fn <a href="#method.from_secret" class="fn">from_secret</a>(secret: <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, networks: <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> Self</h4></section></summary><div class="docblock"><p>Create an instance given a secret key and a set of valid networks</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.override_valid_networks" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#90-95">source</a><h4 class="code-header">pub fn <a href="#method.override_valid_networks" class="fn">override_valid_networks</a>(self, networks: <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> Self</h4></section></summary><div class="docblock"><p>Override the computed set of valid networks</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#70">source</a><a href="#impl-Debug-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#70">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#836-840">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></section></summary><div class="docblock"><p>The “identity” conversion is used internally by some <code>bdk::fragment</code>s</p>
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#837-839">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Send-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Sync-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Unpin-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Pointable-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The descriptor pubkey, either a single pubkey or an xpub."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorPublicKey"><title>DescriptorPublicKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorPublicKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Single">Single</a><a href="#variant.XPub">XPub</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.at_derivation_index">at_derivation_index</a><a href="#method.derive">derive</a><a href="#method.full_derivation_path">full_derivation_path</a><a href="#method.has_wildcard">has_wildcard</a><a href="#method.is_deriveable">is_deriveable</a><a href="#method.master_fingerprint">master_fingerprint</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CDefiniteDescriptorKey%3E">From<DefiniteDescriptorKey></a><a href="#impl-FromStr">FromStr</a><a href="#impl-Hash">Hash</a><a href="#impl-IntoDescriptorKey%3CCtx%3E">IntoDescriptorKey<Ctx></a><a href="#impl-MiniscriptKey">MiniscriptKey</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CDescriptorPublicKey%3E">PartialEq<DescriptorPublicKey></a><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E">PartialOrd<DescriptorPublicKey></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="DescriptorPublicKey" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">DescriptorPublicKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum DescriptorPublicKey {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The descriptor pubkey, either a single pubkey or an xpub."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorPublicKey"><title>DescriptorPublicKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorPublicKey</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Single">Single</a></li><li><a href="#variant.XPub">XPub</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.at_derivation_index">at_derivation_index</a></li><li><a href="#method.derive">derive</a></li><li><a href="#method.full_derivation_path">full_derivation_path</a></li><li><a href="#method.has_wildcard">has_wildcard</a></li><li><a href="#method.is_deriveable">is_deriveable</a></li><li><a href="#method.master_fingerprint">master_fingerprint</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-DescriptorPublicKey">Clone</a></li><li><a href="#impl-Debug-for-DescriptorPublicKey">Debug</a></li><li><a href="#impl-Display-for-DescriptorPublicKey">Display</a></li><li><a href="#impl-Eq-for-DescriptorPublicKey">Eq</a></li><li><a href="#impl-From%3CDefiniteDescriptorKey%3E-for-DescriptorPublicKey">From<DefiniteDescriptorKey></a></li><li><a href="#impl-FromStr-for-DescriptorPublicKey">FromStr</a></li><li><a href="#impl-Hash-for-DescriptorPublicKey">Hash</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey">IntoDescriptorKey<Ctx></a></li><li><a href="#impl-MiniscriptKey-for-DescriptorPublicKey">MiniscriptKey</a></li><li><a href="#impl-Ord-for-DescriptorPublicKey">Ord</a></li><li><a href="#impl-PartialEq%3CDescriptorPublicKey%3E-for-DescriptorPublicKey">PartialEq<DescriptorPublicKey></a></li><li><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E-for-DescriptorPublicKey">PartialOrd<DescriptorPublicKey></a></li><li><a href="#impl-StructuralEq-for-DescriptorPublicKey">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-DescriptorPublicKey">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-DescriptorPublicKey">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DescriptorPublicKey">Send</a></li><li><a href="#impl-Sync-for-DescriptorPublicKey">Sync</a></li><li><a href="#impl-Unpin-for-DescriptorPublicKey">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DescriptorPublicKey">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-DescriptorPublicKey">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-DescriptorPublicKey">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-DescriptorPublicKey">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-DescriptorPublicKey">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-DescriptorPublicKey">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-DescriptorPublicKey">Into<U></a></li><li><a href="#impl-Pointable-for-DescriptorPublicKey">Pointable</a></li><li><a href="#impl-ToOwned-for-DescriptorPublicKey">ToOwned</a></li><li><a href="#impl-ToString-for-DescriptorPublicKey">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-DescriptorPublicKey">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-DescriptorPublicKey">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-DescriptorPublicKey">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">DescriptorPublicKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum DescriptorPublicKey {
Single(<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>),
XPub(<a class="struct" href="../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPubKey>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The descriptor pubkey, either a single pubkey or an xpub.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Single" class="variant small-section-header"><a href="#variant.Single" class="anchor field"></a><code>Single(<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>)</code></h3><div class="docblock"><p>Single public key.</p>
-</div><h3 id="variant.XPub" class="variant small-section-header"><a href="#variant.XPub" class="anchor field"></a><code>XPub(<a class="struct" href="../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPubKey>)</code></h3><div class="docblock"><p>Extended public key (xpub).</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.master_fingerprint" class="method has-srclink"><div class="rightside"></div><a href="#method.master_fingerprint" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.master_fingerprint" class="fnname">master_fingerprint</a>(&self) -> Fingerprint</h4></div></summary><div class="docblock"><p>The fingerprint of the master key associated with this key, <code>0x00000000</code> if none.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.full_derivation_path" class="method has-srclink"><div class="rightside"></div><a href="#method.full_derivation_path" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.full_derivation_path" class="fnname">full_derivation_path</a>(&self) -> DerivationPath</h4></div></summary><div class="docblock"><p>Full path, from the master key</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Single" class="variant"><a href="#variant.Single" class="anchor">§</a><h3 class="code-header">Single(<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>)</h3></section><div class="docblock"><p>Single public key.</p>
+</div><section id="variant.XPub" class="variant"><a href="#variant.XPub" class="anchor">§</a><h3 class="code-header">XPub(<a class="struct" href="../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPubKey>)</h3></section><div class="docblock"><p>Extended public key (xpub).</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.master_fingerprint" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.master_fingerprint" class="fn">master_fingerprint</a>(&self) -> Fingerprint</h4></section></summary><div class="docblock"><p>The fingerprint of the master key associated with this key, <code>0x00000000</code> if none.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.full_derivation_path" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.full_derivation_path" class="fn">full_derivation_path</a>(&self) -> DerivationPath</h4></section></summary><div class="docblock"><p>Full path, from the master key</p>
<p>For wildcard keys this will return the path up to the wildcard, so you
can get full paths by appending one additional derivation step, according
to the wildcard type (hardened or normal)</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_deriveable" class="method has-srclink"><div class="rightside"></div><a href="#method.is_deriveable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_deriveable" class="fnname">is_deriveable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>use has_wildcard instead</p>
-</div></div></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_wildcard" class="method has-srclink"><div class="rightside"></div><a href="#method.has_wildcard" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_wildcard" class="fnname">has_wildcard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.derive" class="method has-srclink"><div class="rightside"></div><a href="#method.derive" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.derive" class="fnname">derive</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>use at_derivation_index instead</p>
-</div></div></summary><div class="docblock"><p>Deprecated name of [<code>at_derivation_index</code>].</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.at_derivation_index" class="method has-srclink"><div class="rightside"></div><a href="#method.at_derivation_index" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.at_derivation_index" class="fnname">at_derivation_index</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></div></summary><div class="docblock"><p>Replaces any wildcard (i.e. <code>/*</code>) in the key with a particular derivation index, turning it into a
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_deriveable" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_deriveable" class="fn">is_deriveable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: use has_wildcard instead</span></div></span></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_wildcard" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.has_wildcard" class="fn">has_wildcard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Whether or not the key has a wildcard</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.derive" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.derive" class="fn">derive</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: use at_derivation_index instead</span></div></span></summary><div class="docblock"><p>Deprecated name of [<code>at_derivation_index</code>].</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.at_derivation_index" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.at_derivation_index" class="fn">at_derivation_index</a>(self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> DefiniteDescriptorKey</h4></section></summary><div class="docblock"><p>Replaces any wildcard (i.e. <code>/*</code>) in the key with a particular derivation index, turning it into a
<em>definite</em> key (i.e. one where all the derivation paths are set).</p>
-<h5 id="returns" class="section-header"><a href="#returns">Returns</a></h5>
+<h5 id="returns"><a href="#returns">Returns</a></h5>
<ul>
<li>If this key is not an xpub, returns <code>self</code>.</li>
<li>If this key is an xpub but does not have a wildcard, returns <code>self</code>.</li>
<li>Otherwise, returns the xpub at derivation <code>index</code> (removing the wildcard).</li>
</ul>
-<h5 id="panics" class="section-header"><a href="#panics">Panics</a></h5>
+<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>If <code>index</code> ≥ 2^31</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CDefiniteDescriptorKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-From%3CDefiniteDescriptorKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><DefiniteDescriptorKey> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(d: DefiniteDescriptorKey) -> <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = DescriptorKeyParseError</h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></div></summary><div class='docblock'><p>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoDescriptorKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#842-856" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#843-855" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-MiniscriptKey" class="impl has-srclink"><div class="rightside"></div><a href="#impl-MiniscriptKey" class="anchor"></a><h3 class="code-header in-band">impl MiniscriptKey for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Sha256" class="type trait-impl has-srclink"><a href="#associatedtype.Sha256" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Sha256" class="associatedtype">Sha256</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>sha256::Hash</code>] for this [<code>MiniscriptKey</code>],
-used in the hash256 fragment. <a href="#associatedtype.Sha256">Read more</a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Hash256" class="type trait-impl has-srclink"><a href="#associatedtype.Hash256" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Hash256" class="associatedtype">Hash256</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>hash256::Hash</code>] for this [<code>MiniscriptKey</code>],
-used in the hash256 fragment. <a href="#associatedtype.Hash256">Read more</a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Ripemd160" class="type trait-impl has-srclink"><a href="#associatedtype.Ripemd160" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Ripemd160" class="associatedtype">Ripemd160</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>ripedmd160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
-used in the ripemd160 fragment <a href="#associatedtype.Ripemd160">Read more</a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Hash160" class="type trait-impl has-srclink"><a href="#associatedtype.Hash160" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Hash160" class="associatedtype">Hash160</a> = Hash</h4></div></summary><div class='docblock'><p>The associated [<code>hash160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
-used in the hash160 fragment <a href="#associatedtype.Hash160">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_uncompressed" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.is_uncompressed" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_uncompressed" class="fnname">is_uncompressed</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns true if the pubkey is uncompressed. Defaults to <code>false</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_x_only_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.is_x_only_key" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_x_only_key" class="fnname">is_x_only_key</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>Returns true if the pubkey is an x-only pubkey. Defaults to <code>false</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CDescriptorPublicKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CDescriptorPublicKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CDescriptorPublicKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Clone-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Debug-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Display-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CDefiniteDescriptorKey%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-From%3CDefiniteDescriptorKey%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><DefiniteDescriptorKey> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(d: DefiniteDescriptorKey) -> <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-FromStr-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = DescriptorKeyParseError</h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Hash-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#842-856">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#843-855">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-MiniscriptKey-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-MiniscriptKey-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl MiniscriptKey for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Sha256" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Sha256" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Sha256</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>sha256::Hash</code>] for this [<code>MiniscriptKey</code>],
+used in the hash256 fragment. <a>Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Hash256" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Hash256" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Hash256</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>hash256::Hash</code>] for this [<code>MiniscriptKey</code>],
+used in the hash256 fragment. <a>Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Ripemd160" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Ripemd160" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Ripemd160</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>ripedmd160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
+used in the ripemd160 fragment <a>Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Hash160" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Hash160" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Hash160</a> = Hash</h4></section></summary><div class='docblock'>The associated [<code>hash160::Hash</code>] for this [<code>MiniscriptKey</code>] type.
+used in the hash160 fragment <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_uncompressed" class="method trait-impl has-srclink"><a href="#method.is_uncompressed" class="anchor">§</a><h4 class="code-header">fn <a class="fn">is_uncompressed</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns true if the pubkey is uncompressed. Defaults to <code>false</code>.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_x_only_key" class="method trait-impl has-srclink"><a href="#method.is_x_only_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">is_x_only_key</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Returns true if the pubkey is an x-only pubkey. Defaults to <code>false</code>.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Ord-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-PartialEq%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-PartialOrd%3CDescriptorPublicKey%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Eq-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-StructuralEq-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-StructuralEq-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-StructuralPartialEq-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-Send-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Send-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-Sync-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Sync-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-Unpin-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Unpin-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-UnwindSafe-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-UnwindSafe-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-CallHasher-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-Pointable-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-DescriptorPublicKey" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The descriptor secret key, either a single private key or an xprv."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorSecretKey"><title>DescriptorSecretKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DescriptorSecretKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Single">Single</a><a href="#variant.XPrv">XPrv</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.to_public">to_public</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-FromStr">FromStr</a><a href="#impl-IntoDescriptorKey%3CCtx%3E">IntoDescriptorKey<Ctx></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="DescriptorSecretKey" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">DescriptorSecretKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum DescriptorSecretKey {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The descriptor secret key, either a single private key or an xprv."><meta name="keywords" content="rust, rustlang, rust-lang, DescriptorSecretKey"><title>DescriptorSecretKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DescriptorSecretKey</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Single">Single</a></li><li><a href="#variant.XPrv">XPrv</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.to_public">to_public</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-DescriptorSecretKey">Debug</a></li><li><a href="#impl-Display-for-DescriptorSecretKey">Display</a></li><li><a href="#impl-FromStr-for-DescriptorSecretKey">FromStr</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorSecretKey">IntoDescriptorKey<Ctx></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-DescriptorSecretKey">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DescriptorSecretKey">Send</a></li><li><a href="#impl-Sync-for-DescriptorSecretKey">Sync</a></li><li><a href="#impl-Unpin-for-DescriptorSecretKey">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DescriptorSecretKey">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-DescriptorSecretKey">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-DescriptorSecretKey">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-DescriptorSecretKey">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-DescriptorSecretKey">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-DescriptorSecretKey">Into<U></a></li><li><a href="#impl-Pointable-for-DescriptorSecretKey">Pointable</a></li><li><a href="#impl-ToString-for-DescriptorSecretKey">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-DescriptorSecretKey">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-DescriptorSecretKey">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-DescriptorSecretKey">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">DescriptorSecretKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum DescriptorSecretKey {
Single(<a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a>),
XPrv(<a class="struct" href="../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The descriptor secret key, either a single private key or an xprv.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Single" class="variant small-section-header"><a href="#variant.Single" class="anchor field"></a><code>Single(<a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a>)</code></h3><div class="docblock"><p>Single private key.</p>
-</div><h3 id="variant.XPrv" class="variant small-section-header"><a href="#variant.XPrv" class="anchor field"></a><code>XPrv(<a class="struct" href="../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>)</code></h3><div class="docblock"><p>Extended private key (xpriv).</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_public" class="method has-srclink"><div class="rightside"></div><a href="#method.to_public" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_public" class="fnname">to_public</a><C>(<br> &self, <br> secp: &Secp256k1<C><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, DescriptorKeyParseError> <span class="where fmt-newline">where<br> C: Signing, </span></h4></div></summary><div class="docblock"><p>Returns the public version of this key.</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Single" class="variant"><a href="#variant.Single" class="anchor">§</a><h3 class="code-header">Single(<a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a>)</h3></section><div class="docblock"><p>Single private key.</p>
+</div><section id="variant.XPrv" class="variant"><a href="#variant.XPrv" class="anchor">§</a><h3 class="code-header">XPrv(<a class="struct" href="../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>)</h3></section><div class="docblock"><p>Extended private key (xpriv).</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_public" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_public" class="fn">to_public</a><C>(<br> &self,<br> secp: &Secp256k1<C><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, DescriptorKeyParseError><span class="where fmt-newline">where<br> C: Signing,</span></h4></section></summary><div class="docblock"><p>Returns the public version of this key.</p>
<p>If the key is an “XPrv”, the hardened derivation steps will be applied
before converting it to a public key.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = DescriptorKeyParseError</h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <<a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></div></summary><div class='docblock'><p>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoDescriptorKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#878-894" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#879-893" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-Debug-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-Display-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-FromStr-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = DescriptorKeyParseError</h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(<br> s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <<a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#878-894">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#879-893">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section><section id="impl-Send-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-Send-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section><section id="impl-Sync-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-Sync-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section><section id="impl-Unpin-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-Unpin-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section><section id="impl-UnwindSafe-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-UnwindSafe-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-Pointable-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-DescriptorSecretKey" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Enum for extended keys that can be either `xprv` or `xpub`"><meta name="keywords" content="rust, rustlang, rust-lang, ExtendedKey"><title>ExtendedKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ExtendedKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Private">Private</a><a href="#variant.Public">Public</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.has_secret">has_secret</a><a href="#method.into_xprv">into_xprv</a><a href="#method.into_xpub">into_xpub</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-DerivableKey%3CCtx%3E">DerivableKey<Ctx></a><a href="#impl-From%3CExtendedPrivKey%3E">From<ExtendedPrivKey></a><a href="#impl-From%3CExtendedPubKey%3E">From<ExtendedPubKey></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="ExtendedKey" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">ExtendedKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#313-318" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum ExtendedKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> = <a class="enum" href="../descriptor/enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>> {
- Private(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>ExtendedPrivKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>),
- Public(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>ExtendedPubKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>),
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Enum for extended keys that can be either `xprv` or `xpub`"><meta name="keywords" content="rust, rustlang, rust-lang, ExtendedKey"><title>ExtendedKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ExtendedKey</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Private">Private</a></li><li><a href="#variant.Public">Public</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.has_secret">has_secret</a></li><li><a href="#method.into_xprv">into_xprv</a></li><li><a href="#method.into_xpub">into_xpub</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedKey%3CCtx%3E">DerivableKey<Ctx></a></li><li><a href="#impl-From%3CExtendedPrivKey%3E-for-ExtendedKey%3CCtx%3E">From<ExtendedPrivKey></a></li><li><a href="#impl-From%3CExtendedPubKey%3E-for-ExtendedKey%3CCtx%3E">From<ExtendedPubKey></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ExtendedKey%3CCtx%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ExtendedKey%3CCtx%3E">Send</a></li><li><a href="#impl-Sync-for-ExtendedKey%3CCtx%3E">Sync</a></li><li><a href="#impl-Unpin-for-ExtendedKey%3CCtx%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ExtendedKey%3CCtx%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ExtendedKey%3CCtx%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ExtendedKey%3CCtx%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ExtendedKey%3CCtx%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-ExtendedKey%3CCtx%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-ExtendedKey%3CCtx%3E">Into<U></a></li><li><a href="#impl-Pointable-for-ExtendedKey%3CCtx%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ExtendedKey%3CCtx%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-ExtendedKey%3CCtx%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-ExtendedKey%3CCtx%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">ExtendedKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#313-318">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum ExtendedKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> = <a class="enum" href="../descriptor/enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>> {
+ Private((ExtendedPrivKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx>)),
+ Public((ExtendedPubKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx>)),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Enum for extended keys that can be either <code>xprv</code> or <code>xpub</code></p>
<p>An instance of <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> can be constructed from an <a href="bip32::ExtendedPrivKey"><code>ExtendedPrivKey</code></a>
or an <a href="bip32::ExtendedPubKey"><code>ExtendedPubKey</code></a> by using the <code>From</code> trait.</p>
<p>Defaults to the <a href="../descriptor/enum.Legacy.html"><code>Legacy</code></a> context.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Private" class="variant small-section-header"><a href="#variant.Private" class="anchor field"></a><code>Private(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>ExtendedPrivKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>)</code></h3><div class="docblock"><p>A private extended key, aka an <code>xprv</code></p>
-</div><h3 id="variant.Public" class="variant small-section-header"><a href="#variant.Public" class="anchor field"></a><code>Public(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>ExtendedPubKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>)</code></h3><div class="docblock"><p>A public extended key, aka an <code>xpub</code></p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#320-356" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.has_secret" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#322-327" title="goto source code">source</a></div><a href="#method.has_secret" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.has_secret" class="fnname">has_secret</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Return whether or not the key contains the private data</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_xprv" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#331-339" title="goto source code">source</a></div><a href="#method.into_xprv" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.into_xprv" class="fnname">into_xprv</a>(self, network: Network) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><ExtendedPrivKey></h4></div></summary><div class="docblock"><p>Transform the <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> into an <a href="bip32::ExtendedPrivKey"><code>ExtendedPrivKey</code></a> for the
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Private" class="variant"><a href="#variant.Private" class="anchor">§</a><h3 class="code-header">Private((ExtendedPrivKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx>))</h3></section><div class="docblock"><p>A private extended key, aka an <code>xprv</code></p>
+</div><section id="variant.Public" class="variant"><a href="#variant.Public" class="anchor">§</a><h3 class="code-header">Public((ExtendedPubKey, <a class="struct" href="https://doc.rust-lang.org/nightly/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a><Ctx>))</h3></section><div class="docblock"><p>A public extended key, aka an <code>xpub</code></p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#320-356">source</a><a href="#impl-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.has_secret" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#322-327">source</a><h4 class="code-header">pub fn <a href="#method.has_secret" class="fn">has_secret</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return whether or not the key contains the private data</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_xprv" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#331-339">source</a><h4 class="code-header">pub fn <a href="#method.into_xprv" class="fn">into_xprv</a>(self, network: Network) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><ExtendedPrivKey></h4></section></summary><div class="docblock"><p>Transform the <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> into an <a href="bip32::ExtendedPrivKey"><code>ExtendedPrivKey</code></a> for the
given [<code>Network</code>], if the key contains the private data</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_xpub" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#343-355" title="goto source code">source</a></div><a href="#method.into_xpub" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.into_xpub" class="fnname">into_xpub</a><C: Signing>(<br> self, <br> network: Network, <br> secp: &Secp256k1<C><br>) -> ExtendedPubKey</h4></div></summary><div class="docblock"><p>Transform the <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> into an <a href="bip32::ExtendedPubKey"><code>ExtendedPubKey</code></a> for the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_xpub" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#343-355">source</a><h4 class="code-header">pub fn <a href="#method.into_xpub" class="fn">into_xpub</a><C: Signing>(<br> self,<br> network: Network,<br> secp: &Secp256k1<C><br>) -> ExtendedPubKey</h4></section></summary><div class="docblock"><p>Transform the <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> into an <a href="bip32::ExtendedPubKey"><code>ExtendedPubKey</code></a> for the
given [<code>Network</code>]</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DerivableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#515-519" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></div></summary><div class="docblock"><p>Identity conversion</p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_extended_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#516-518" title="goto source code">source</a></div><a href="#method.into_extended_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.DerivableKey.html#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into an <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#490-511" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.DerivableKey.html#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
-key origin and derivation path <a href="trait.DerivableKey.html#method.into_descriptor_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CExtendedPrivKey%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#364-368" title="goto source code">source</a></div><a href="#impl-From%3CExtendedPrivKey%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><ExtendedPrivKey> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#365-367" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(xprv: ExtendedPrivKey) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CExtendedPubKey%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#358-362" title="goto source code">source</a></div><a href="#impl-From%3CExtendedPubKey%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><ExtendedPubKey> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#359-361" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(xpub: ExtendedPubKey) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DerivableKey%3CCtx%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#515-519">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></section></summary><div class="docblock"><p>Identity conversion</p>
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_extended_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#516-518">source</a><a href="#method.into_extended_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DerivableKey.html#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into an <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#490-511">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DerivableKey.html#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
+key origin and derivation path <a href="trait.DerivableKey.html#method.into_descriptor_key">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CExtendedPrivKey%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#364-368">source</a><a href="#impl-From%3CExtendedPrivKey%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><ExtendedPrivKey> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#365-367">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(xprv: ExtendedPrivKey) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CExtendedPubKey%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#358-362">source</a><a href="#impl-From%3CExtendedPubKey%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><ExtendedPubKey> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#359-361">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(xpub: ExtendedPubKey) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Send-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Sync-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Unpin-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-Pointable-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors thrown while working with `keys`"><meta name="keywords" content="rust, rustlang, rust-lang, KeyError"><title>KeyError in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">KeyError</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Bip32">Bip32</a><a href="#variant.InvalidChecksum">InvalidChecksum</a><a href="#variant.InvalidNetwork">InvalidNetwork</a><a href="#variant.InvalidScriptContext">InvalidScriptContext</a><a href="#variant.Message">Message</a><a href="#variant.Miniscript">Miniscript</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Error">Error</a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CKeyError%3E">From<KeyError></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="KeyError" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">KeyError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#916-931" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum KeyError {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Errors thrown while working with `keys`"><meta name="keywords" content="rust, rustlang, rust-lang, KeyError"><title>KeyError in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">KeyError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Bip32">Bip32</a></li><li><a href="#variant.InvalidChecksum">InvalidChecksum</a></li><li><a href="#variant.InvalidNetwork">InvalidNetwork</a></li><li><a href="#variant.InvalidScriptContext">InvalidScriptContext</a></li><li><a href="#variant.Message">Message</a></li><li><a href="#variant.Miniscript">Miniscript</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-KeyError">Debug</a></li><li><a href="#impl-Display-for-KeyError">Display</a></li><li><a href="#impl-Error-for-KeyError">Error</a></li><li><a href="#impl-From%3CError%3E-for-KeyError">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-KeyError-1">From<Error></a></li><li><a href="#impl-From%3CKeyError%3E-for-Error">From<KeyError></a></li><li><a href="#impl-From%3CKeyError%3E-for-Error-1">From<KeyError></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-KeyError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyError">Send</a></li><li><a href="#impl-Sync-for-KeyError">Sync</a></li><li><a href="#impl-Unpin-for-KeyError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-KeyError">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-KeyError">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-KeyError">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-KeyError">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-KeyError">Into<U></a></li><li><a href="#impl-Pointable-for-KeyError">Pointable</a></li><li><a href="#impl-Provider-for-KeyError">Provider</a></li><li><a href="#impl-ToString-for-KeyError">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-KeyError">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-KeyError">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-KeyError">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">KeyError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#916-931">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum KeyError {
InvalidScriptContext,
InvalidNetwork,
InvalidChecksum,
Bip32(Error),
Miniscript(Error),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Errors thrown while working with <a href="index.html"><code>keys</code></a></p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.InvalidScriptContext" class="variant small-section-header"><a href="#variant.InvalidScriptContext" class="anchor field"></a><code>InvalidScriptContext</code></h3><div class="docblock"><p>The key cannot exist in the given script context</p>
-</div><h3 id="variant.InvalidNetwork" class="variant small-section-header"><a href="#variant.InvalidNetwork" class="anchor field"></a><code>InvalidNetwork</code></h3><div class="docblock"><p>The key is not valid for the given network</p>
-</div><h3 id="variant.InvalidChecksum" class="variant small-section-header"><a href="#variant.InvalidChecksum" class="anchor field"></a><code>InvalidChecksum</code></h3><div class="docblock"><p>The key has an invalid checksum</p>
-</div><h3 id="variant.Message" class="variant small-section-header"><a href="#variant.Message" class="anchor field"></a><code>Message(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</code></h3><div class="docblock"><p>Custom error message</p>
-</div><h3 id="variant.Bip32" class="variant small-section-header"><a href="#variant.Bip32" class="anchor field"></a><code>Bip32(Error)</code></h3><div class="docblock"><p>BIP32 error</p>
-</div><h3 id="variant.Miniscript" class="variant small-section-header"><a href="#variant.Miniscript" class="anchor field"></a><code>Miniscript(Error)</code></h3><div class="docblock"><p>Miniscript error</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#915" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#915" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#936-940" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#937-939" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#942" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#933" title="goto source code">source</a></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#933" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#934" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#934" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CKeyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/error.rs.html#195-204" title="goto source code">source</a></div><a href="#impl-From%3CKeyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/error.rs.html#196-203" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(key_error: <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CKeyError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/error.rs.html#44-52" title="goto source code">source</a></div><a href="#impl-From%3CKeyError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="../descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/descriptor/error.rs.html#45-51" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(key_error: <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="../descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-4" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-4" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.InvalidScriptContext" class="variant"><a href="#variant.InvalidScriptContext" class="anchor">§</a><h3 class="code-header">InvalidScriptContext</h3></section><div class="docblock"><p>The key cannot exist in the given script context</p>
+</div><section id="variant.InvalidNetwork" class="variant"><a href="#variant.InvalidNetwork" class="anchor">§</a><h3 class="code-header">InvalidNetwork</h3></section><div class="docblock"><p>The key is not valid for the given network</p>
+</div><section id="variant.InvalidChecksum" class="variant"><a href="#variant.InvalidChecksum" class="anchor">§</a><h3 class="code-header">InvalidChecksum</h3></section><div class="docblock"><p>The key has an invalid checksum</p>
+</div><section id="variant.Message" class="variant"><a href="#variant.Message" class="anchor">§</a><h3 class="code-header">Message(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h3></section><div class="docblock"><p>Custom error message</p>
+</div><section id="variant.Bip32" class="variant"><a href="#variant.Bip32" class="anchor">§</a><h3 class="code-header">Bip32(Error)</h3></section><div class="docblock"><p>BIP32 error</p>
+</div><section id="variant.Miniscript" class="variant"><a href="#variant.Miniscript" class="anchor">§</a><h3 class="code-header">Miniscript(Error)</h3></section><div class="docblock"><p>Miniscript error</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#915">source</a><a href="#impl-Debug-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#915">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#936-940">source</a><a href="#impl-Display-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#937-939">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#942">source</a><a href="#impl-Error-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#933">source</a><a href="#impl-From%3CError%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#933">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-KeyError-1" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#934">source</a><a href="#impl-From%3CError%3E-for-KeyError-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#934">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CKeyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/error.rs.html#195-204">source</a><a href="#impl-From%3CKeyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/error.rs.html#196-203">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(key_error: <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CKeyError%3E-for-Error-1" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/error.rs.html#44-52">source</a><a href="#impl-From%3CKeyError%3E-for-Error-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> for <a class="enum" href="../descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/descriptor/error.rs.html#45-51">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(key_error: <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>) -> <a class="enum" href="../descriptor/error/enum.Error.html" title="enum bdk::descriptor::error::Error">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-KeyError" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section><section id="impl-Send-for-KeyError" class="impl has-srclink"><a href="#impl-Send-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section><section id="impl-Sync-for-KeyError" class="impl has-srclink"><a href="#impl-Sync-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section><section id="impl-Unpin-for-KeyError" class="impl has-srclink"><a href="#impl-Unpin-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section><section id="impl-UnwindSafe-for-KeyError" class="impl has-srclink"><a href="#impl-UnwindSafe-for-KeyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-4" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-KeyError" class="impl has-srclink"><a href="#impl-Pointable-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-KeyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-KeyError" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-KeyError" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Enum representation of the known valid [`ScriptContext`]s"><meta name="keywords" content="rust, rustlang, rust-lang, ScriptContextEnum"><title>ScriptContextEnum in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ScriptContextEnum</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Legacy">Legacy</a><a href="#variant.Segwitv0">Segwitv0</a><a href="#variant.Tap">Tap</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.is_legacy">is_legacy</a><a href="#method.is_segwit_v0">is_segwit_v0</a><a href="#method.is_taproot">is_taproot</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CScriptContextEnum%3E">PartialEq<ScriptContextEnum></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="ScriptContextEnum" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">ScriptContextEnum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#125-132" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum ScriptContextEnum {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Enum representation of the known valid [`ScriptContext`]s"><meta name="keywords" content="rust, rustlang, rust-lang, ScriptContextEnum"><title>ScriptContextEnum in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ScriptContextEnum</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Legacy">Legacy</a></li><li><a href="#variant.Segwitv0">Segwitv0</a></li><li><a href="#variant.Tap">Tap</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.is_legacy">is_legacy</a></li><li><a href="#method.is_segwit_v0">is_segwit_v0</a></li><li><a href="#method.is_taproot">is_taproot</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-ScriptContextEnum">Clone</a></li><li><a href="#impl-Copy-for-ScriptContextEnum">Copy</a></li><li><a href="#impl-Debug-for-ScriptContextEnum">Debug</a></li><li><a href="#impl-Eq-for-ScriptContextEnum">Eq</a></li><li><a href="#impl-PartialEq%3CScriptContextEnum%3E-for-ScriptContextEnum">PartialEq<ScriptContextEnum></a></li><li><a href="#impl-StructuralEq-for-ScriptContextEnum">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-ScriptContextEnum">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ScriptContextEnum">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ScriptContextEnum">Send</a></li><li><a href="#impl-Sync-for-ScriptContextEnum">Sync</a></li><li><a href="#impl-Unpin-for-ScriptContextEnum">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ScriptContextEnum">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ScriptContextEnum">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ScriptContextEnum">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ScriptContextEnum">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-ScriptContextEnum">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-ScriptContextEnum">Into<U></a></li><li><a href="#impl-Pointable-for-ScriptContextEnum">Pointable</a></li><li><a href="#impl-ToOwned-for-ScriptContextEnum">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ScriptContextEnum">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-ScriptContextEnum">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-ScriptContextEnum">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">ScriptContextEnum</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#125-132">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum ScriptContextEnum {
Legacy,
Segwitv0,
Tap,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Enum representation of the known valid <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a>s</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Legacy" class="variant small-section-header"><a href="#variant.Legacy" class="anchor field"></a><code>Legacy</code></h3><div class="docblock"><p>Legacy scripts</p>
-</div><h3 id="variant.Segwitv0" class="variant small-section-header"><a href="#variant.Segwitv0" class="anchor field"></a><code>Segwitv0</code></h3><div class="docblock"><p>Segwitv0 scripts</p>
-</div><h3 id="variant.Tap" class="variant small-section-header"><a href="#variant.Tap" class="anchor field"></a><code>Tap</code></h3><div class="docblock"><p>Taproot scripts</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#134-149" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_legacy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#136-138" title="goto source code">source</a></div><a href="#method.is_legacy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_legacy" class="fnname">is_legacy</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the script context is <a href="enum.ScriptContextEnum.html#variant.Legacy" title="ScriptContextEnum::Legacy"><code>ScriptContextEnum::Legacy</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_segwit_v0" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#141-143" title="goto source code">source</a></div><a href="#method.is_segwit_v0" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_segwit_v0" class="fnname">is_segwit_v0</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the script context is <a href="enum.ScriptContextEnum.html#variant.Segwitv0" title="ScriptContextEnum::Segwitv0"><code>ScriptContextEnum::Segwitv0</code></a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_taproot" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#146-148" title="goto source code">source</a></div><a href="#method.is_taproot" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_taproot" class="fnname">is_taproot</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the script context is <a href="enum.ScriptContextEnum.html#variant.Tap" title="ScriptContextEnum::Tap"><code>ScriptContextEnum::Tap</code></a></p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CScriptContextEnum%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-PartialEq%3CScriptContextEnum%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a>> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#124" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Legacy" class="variant"><a href="#variant.Legacy" class="anchor">§</a><h3 class="code-header">Legacy</h3></section><div class="docblock"><p>Legacy scripts</p>
+</div><section id="variant.Segwitv0" class="variant"><a href="#variant.Segwitv0" class="anchor">§</a><h3 class="code-header">Segwitv0</h3></section><div class="docblock"><p>Segwitv0 scripts</p>
+</div><section id="variant.Tap" class="variant"><a href="#variant.Tap" class="anchor">§</a><h3 class="code-header">Tap</h3></section><div class="docblock"><p>Taproot scripts</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#134-149">source</a><a href="#impl-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_legacy" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#136-138">source</a><h4 class="code-header">pub fn <a href="#method.is_legacy" class="fn">is_legacy</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the script context is <a href="enum.ScriptContextEnum.html#variant.Legacy" title="ScriptContextEnum::Legacy"><code>ScriptContextEnum::Legacy</code></a></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_segwit_v0" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#141-143">source</a><h4 class="code-header">pub fn <a href="#method.is_segwit_v0" class="fn">is_segwit_v0</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the script context is <a href="enum.ScriptContextEnum.html#variant.Segwitv0" title="ScriptContextEnum::Segwitv0"><code>ScriptContextEnum::Segwitv0</code></a></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_taproot" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#146-148">source</a><h4 class="code-header">pub fn <a href="#method.is_taproot" class="fn">is_taproot</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the script context is <a href="enum.ScriptContextEnum.html#variant.Tap" title="ScriptContextEnum::Tap"><code>ScriptContextEnum::Tap</code></a></p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-Clone-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-Debug-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CScriptContextEnum%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-PartialEq%3CScriptContextEnum%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a>> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Copy-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-Copy-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-Eq-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-Eq-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-StructuralEq-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-StructuralEq-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-StructuralPartialEq-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#124">source</a><a href="#impl-StructuralPartialEq-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-Send-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-Send-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-Sync-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-Sync-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-Unpin-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-Unpin-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section><section id="impl-UnwindSafe-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-UnwindSafe-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-Pointable-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ScriptContextEnum" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-ScriptContextEnum" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-ScriptContextEnum" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Single public key without any origin or range information."><meta name="keywords" content="rust, rustlang, rust-lang, SinglePubKey"><title>SinglePubKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SinglePubKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.FullKey">FullKey</a><a href="#variant.XOnly">XOnly</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CSinglePubKey%3E">PartialEq<SinglePubKey></a><a href="#impl-PartialOrd%3CSinglePubKey%3E">PartialOrd<SinglePubKey></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="SinglePubKey" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">SinglePubKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum SinglePubKey {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Single public key without any origin or range information."><meta name="keywords" content="rust, rustlang, rust-lang, SinglePubKey"><title>SinglePubKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SinglePubKey</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.FullKey">FullKey</a></li><li><a href="#variant.XOnly">XOnly</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SinglePubKey">Clone</a></li><li><a href="#impl-Debug-for-SinglePubKey">Debug</a></li><li><a href="#impl-Eq-for-SinglePubKey">Eq</a></li><li><a href="#impl-Hash-for-SinglePubKey">Hash</a></li><li><a href="#impl-Ord-for-SinglePubKey">Ord</a></li><li><a href="#impl-PartialEq%3CSinglePubKey%3E-for-SinglePubKey">PartialEq<SinglePubKey></a></li><li><a href="#impl-PartialOrd%3CSinglePubKey%3E-for-SinglePubKey">PartialOrd<SinglePubKey></a></li><li><a href="#impl-StructuralEq-for-SinglePubKey">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SinglePubKey">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SinglePubKey">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SinglePubKey">Send</a></li><li><a href="#impl-Sync-for-SinglePubKey">Sync</a></li><li><a href="#impl-Unpin-for-SinglePubKey">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SinglePubKey">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SinglePubKey">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SinglePubKey">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SinglePubKey">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-SinglePubKey">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-SinglePubKey">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SinglePubKey">Into<U></a></li><li><a href="#impl-Pointable-for-SinglePubKey">Pointable</a></li><li><a href="#impl-ToOwned-for-SinglePubKey">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SinglePubKey">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SinglePubKey">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SinglePubKey">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="enum" href="#">SinglePubKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum SinglePubKey {
FullKey(PublicKey),
XOnly(XOnlyPublicKey),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Single public key without any origin or range information.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.FullKey" class="variant small-section-header"><a href="#variant.FullKey" class="anchor field"></a><code>FullKey(PublicKey)</code></h3><div class="docblock"><p>A bitcoin public key (compressed or uncompressed).</p>
-</div><h3 id="variant.XOnly" class="variant small-section-header"><a href="#variant.XOnly" class="anchor field"></a><code>XOnly(XOnlyPublicKey)</code></h3><div class="docblock"><p>An xonly public key.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSinglePubKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CSinglePubKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CSinglePubKey%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CSinglePubKey%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.FullKey" class="variant"><a href="#variant.FullKey" class="anchor">§</a><h3 class="code-header">FullKey(PublicKey)</h3></section><div class="docblock"><p>A bitcoin public key (compressed or uncompressed).</p>
+</div><section id="variant.XOnly" class="variant"><a href="#variant.XOnly" class="anchor">§</a><h3 class="code-header">XOnly(XOnlyPublicKey)</h3></section><div class="docblock"><p>An xonly public key.</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Clone-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Debug-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Hash-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Ord-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSinglePubKey%3E-for-SinglePubKey" class="impl has-srclink"><a href="#impl-PartialEq%3CSinglePubKey%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CSinglePubKey%3E-for-SinglePubKey" class="impl has-srclink"><a href="#impl-PartialOrd%3CSinglePubKey%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Eq-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section><section id="impl-StructuralEq-for-SinglePubKey" class="impl has-srclink"><a href="#impl-StructuralEq-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section><section id="impl-StructuralPartialEq-for-SinglePubKey" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SinglePubKey" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section><section id="impl-Send-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Send-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section><section id="impl-Sync-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Sync-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section><section id="impl-Unpin-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Unpin-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section><section id="impl-UnwindSafe-for-SinglePubKey" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-SinglePubKey" class="impl has-srclink"><a href="#impl-CallHasher-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SinglePubKey" class="impl has-srclink"><a href="#impl-Pointable-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SinglePubKey" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SinglePubKey" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SinglePubKey" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a set containing mainnet, testnet and regtest"><meta name="keywords" content="rust, rustlang, rust-lang, any_network"><title>any_network in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="any_network" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">any_network</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#44-53" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn any_network() -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a set containing mainnet, testnet and regtest</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a set containing mainnet, testnet and regtest"><meta name="keywords" content="rust, rustlang, rust-lang, any_network"><title>any_network in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">any_network</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#44-53">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn any_network() -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a set containing mainnet, testnet and regtest</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a set only containing mainnet"><meta name="keywords" content="rust, rustlang, rust-lang, mainnet_network"><title>mainnet_network in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="mainnet_network" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">mainnet_network</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#55-57" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn mainnet_network() -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a set only containing mainnet</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a set only containing mainnet"><meta name="keywords" content="rust, rustlang, rust-lang, mainnet_network"><title>mainnet_network in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">mainnet_network</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#55-57">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn mainnet_network() -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a set only containing mainnet</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the intersection of two sets"><meta name="keywords" content="rust, rustlang, rust-lang, merge_networks"><title>merge_networks in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="merge_networks" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">merge_networks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#65-67" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn merge_networks(a: &<a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>, b: &<a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the intersection of two sets</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Compute the intersection of two sets"><meta name="keywords" content="rust, rustlang, rust-lang, merge_networks"><title>merge_networks in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">merge_networks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#65-67">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn merge_networks(a: &<a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>, b: &<a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a>) -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Compute the intersection of two sets</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a set containing testnet and regtest"><meta name="keywords" content="rust, rustlang, rust-lang, test_networks"><title>test_networks in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="test_networks" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">test_networks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#59-63" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn test_networks() -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a set containing testnet and regtest</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Create a set containing testnet and regtest"><meta name="keywords" content="rust, rustlang, rust-lang, test_networks"><title>test_networks in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="fn" href="#">test_networks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#59-63">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn test_networks() -> <a class="type" href="type.ValidNetworks.html" title="type bdk::keys::ValidNetworks">ValidNetworks</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Create a set containing testnet and regtest</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Key formats"><meta name="keywords" content="rust, rustlang, rust-lang, keys"><title>bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module keys</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="keys" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">keys</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#12-987" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Key formats</p>
-</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="bip39/index.html" title="bdk::keys::bip39 mod">bip39</a><span class="stab portability" title="This is supported on crate feature `keys-bip39` only"><code>keys-bip39</code></span></div><div class="item-right docblock-short"><p>BIP-0039</p>
-</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.GeneratedKey.html" title="bdk::keys::GeneratedKey struct">GeneratedKey</a></div><div class="item-right docblock-short"><p>Output of a <a href="trait.GeneratableKey.html" title="GeneratableKey"><code>GeneratableKey</code></a> key generation</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="bdk::keys::PrivateKeyGenerateOptions struct">PrivateKeyGenerateOptions</a></div><div class="item-right docblock-short"><p>Options for generating a [<code>PrivateKey</code>]</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SinglePriv.html" title="bdk::keys::SinglePriv struct">SinglePriv</a></div><div class="item-right docblock-short"><p>A descriptor [<code>bitcoin::PrivateKey</code>] with optional origin information.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SinglePub.html" title="bdk::keys::SinglePub struct">SinglePub</a></div><div class="item-right docblock-short"><p>A descriptor <a href="enum.SinglePubKey.html" title="SinglePubKey"><code>SinglePubKey</code></a> with optional origin information.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SortedMultiVec.html" title="bdk::keys::SortedMultiVec struct">SortedMultiVec</a></div><div class="item-right docblock-short"><p>Contents of a “sortedmulti” descriptor</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorKey.html" title="bdk::keys::DescriptorKey enum">DescriptorKey</a></div><div class="item-right docblock-short"><p>Container for public or secret keys</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorPublicKey.html" title="bdk::keys::DescriptorPublicKey enum">DescriptorPublicKey</a></div><div class="item-right docblock-short"><p>The descriptor pubkey, either a single pubkey or an xpub.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorSecretKey.html" title="bdk::keys::DescriptorSecretKey enum">DescriptorSecretKey</a></div><div class="item-right docblock-short"><p>The descriptor secret key, either a single private key or an xprv.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.ExtendedKey.html" title="bdk::keys::ExtendedKey enum">ExtendedKey</a></div><div class="item-right docblock-short"><p>Enum for extended keys that can be either <code>xprv</code> or <code>xpub</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.KeyError.html" title="bdk::keys::KeyError enum">KeyError</a></div><div class="item-right docblock-short"><p>Errors thrown while working with <a href="index.html"><code>keys</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.ScriptContextEnum.html" title="bdk::keys::ScriptContextEnum enum">ScriptContextEnum</a></div><div class="item-right docblock-short"><p>Enum representation of the known valid <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a>s</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SinglePubKey.html" title="bdk::keys::SinglePubKey enum">SinglePubKey</a></div><div class="item-right docblock-short"><p>Single public key without any origin or range information.</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.DerivableKey.html" title="bdk::keys::DerivableKey trait">DerivableKey</a></div><div class="item-right docblock-short"><p>Trait for keys that can be derived.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ExtScriptContext.html" title="bdk::keys::ExtScriptContext trait">ExtScriptContext</a></div><div class="item-right docblock-short"><p>Trait that adds extra useful methods to <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a>s</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GeneratableDefaultOptions.html" title="bdk::keys::GeneratableDefaultOptions trait">GeneratableDefaultOptions</a></div><div class="item-right docblock-short"><p>Trait that allows generating a key with the default options</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GeneratableKey.html" title="bdk::keys::GeneratableKey trait">GeneratableKey</a></div><div class="item-right docblock-short"><p>Trait for keys that can be generated</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.IntoDescriptorKey.html" title="bdk::keys::IntoDescriptorKey trait">IntoDescriptorKey</a></div><div class="item-right docblock-short"><p>Trait for objects that can be turned into a public or secret <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ScriptContext.html" title="bdk::keys::ScriptContext trait">ScriptContext</a></div><div class="item-right docblock-short"><p>The ScriptContext for Miniscript. Additional type information associated with
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Key formats"><meta name="keywords" content="rust, rustlang, rust-lang, keys"><title>bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module keys</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">keys</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#12-987">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Key formats</p>
+</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="bip39/index.html" title="bdk::keys::bip39 mod">bip39</a><span class="stab portability" title="Available on crate feature `keys-bip39` only"><code>keys-bip39</code></span></div><div class="item-right docblock-short">BIP-0039</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.GeneratedKey.html" title="bdk::keys::GeneratedKey struct">GeneratedKey</a></div><div class="item-right docblock-short">Output of a <a href="trait.GeneratableKey.html" title="GeneratableKey"><code>GeneratableKey</code></a> key generation</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="bdk::keys::PrivateKeyGenerateOptions struct">PrivateKeyGenerateOptions</a></div><div class="item-right docblock-short">Options for generating a [<code>PrivateKey</code>]</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SinglePriv.html" title="bdk::keys::SinglePriv struct">SinglePriv</a></div><div class="item-right docblock-short">A descriptor [<code>bitcoin::PrivateKey</code>] with optional origin information.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SinglePub.html" title="bdk::keys::SinglePub struct">SinglePub</a></div><div class="item-right docblock-short">A descriptor <a href="enum.SinglePubKey.html" title="SinglePubKey"><code>SinglePubKey</code></a> with optional origin information.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SortedMultiVec.html" title="bdk::keys::SortedMultiVec struct">SortedMultiVec</a></div><div class="item-right docblock-short">Contents of a “sortedmulti” descriptor</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorKey.html" title="bdk::keys::DescriptorKey enum">DescriptorKey</a></div><div class="item-right docblock-short">Container for public or secret keys</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorPublicKey.html" title="bdk::keys::DescriptorPublicKey enum">DescriptorPublicKey</a></div><div class="item-right docblock-short">The descriptor pubkey, either a single pubkey or an xpub.</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.DescriptorSecretKey.html" title="bdk::keys::DescriptorSecretKey enum">DescriptorSecretKey</a></div><div class="item-right docblock-short">The descriptor secret key, either a single private key or an xprv.</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.ExtendedKey.html" title="bdk::keys::ExtendedKey enum">ExtendedKey</a></div><div class="item-right docblock-short">Enum for extended keys that can be either <code>xprv</code> or <code>xpub</code></div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.KeyError.html" title="bdk::keys::KeyError enum">KeyError</a></div><div class="item-right docblock-short">Errors thrown while working with <a href="index.html"><code>keys</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.ScriptContextEnum.html" title="bdk::keys::ScriptContextEnum enum">ScriptContextEnum</a></div><div class="item-right docblock-short">Enum representation of the known valid <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a>s</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SinglePubKey.html" title="bdk::keys::SinglePubKey enum">SinglePubKey</a></div><div class="item-right docblock-short">Single public key without any origin or range information.</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.DerivableKey.html" title="bdk::keys::DerivableKey trait">DerivableKey</a></div><div class="item-right docblock-short">Trait for keys that can be derived.</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ExtScriptContext.html" title="bdk::keys::ExtScriptContext trait">ExtScriptContext</a></div><div class="item-right docblock-short">Trait that adds extra useful methods to <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a>s</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GeneratableDefaultOptions.html" title="bdk::keys::GeneratableDefaultOptions trait">GeneratableDefaultOptions</a></div><div class="item-right docblock-short">Trait that allows generating a key with the default options</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.GeneratableKey.html" title="bdk::keys::GeneratableKey trait">GeneratableKey</a></div><div class="item-right docblock-short">Trait for keys that can be generated</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.IntoDescriptorKey.html" title="bdk::keys::IntoDescriptorKey trait">IntoDescriptorKey</a></div><div class="item-right docblock-short">Trait for objects that can be turned into a public or secret <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a></div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.ScriptContext.html" title="bdk::keys::ScriptContext trait">ScriptContext</a></div><div class="item-right docblock-short">The ScriptContext for Miniscript. Additional type information associated with
miniscript that is used for carrying out checks that dependent on the
context under which the script is used.
-For example, disallowing uncompressed keys in Segwit context</p>
-</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.any_network.html" title="bdk::keys::any_network fn">any_network</a></div><div class="item-right docblock-short"><p>Create a set containing mainnet, testnet and regtest</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.mainnet_network.html" title="bdk::keys::mainnet_network fn">mainnet_network</a></div><div class="item-right docblock-short"><p>Create a set only containing mainnet</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.merge_networks.html" title="bdk::keys::merge_networks fn">merge_networks</a></div><div class="item-right docblock-short"><p>Compute the intersection of two sets</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.test_networks.html" title="bdk::keys::test_networks fn">test_networks</a></div><div class="item-right docblock-short"><p>Create a set containing testnet and regtest</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.KeyMap.html" title="bdk::keys::KeyMap type">KeyMap</a></div><div class="item-right docblock-short"><p>Alias type for a map of public key to secret key</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ValidNetworks.html" title="bdk::keys::ValidNetworks type">ValidNetworks</a></div><div class="item-right docblock-short"><p>Set of valid networks for a key</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+For example, disallowing uncompressed keys in Segwit context</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.any_network.html" title="bdk::keys::any_network fn">any_network</a></div><div class="item-right docblock-short">Create a set containing mainnet, testnet and regtest</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.mainnet_network.html" title="bdk::keys::mainnet_network fn">mainnet_network</a></div><div class="item-right docblock-short">Create a set only containing mainnet</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.merge_networks.html" title="bdk::keys::merge_networks fn">merge_networks</a></div><div class="item-right docblock-short">Compute the intersection of two sets</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.test_networks.html" title="bdk::keys::test_networks fn">test_networks</a></div><div class="item-right docblock-short">Create a set containing testnet and regtest</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.KeyMap.html" title="bdk::keys::KeyMap type">KeyMap</a></div><div class="item-right docblock-short">Alias type for a map of public key to secret key</div></div><div class="item-row"><div class="item-left module-item"><a class="type" href="type.ValidNetworks.html" title="bdk::keys::ValidNetworks type">ValidNetworks</a></div><div class="item-right docblock-short">Set of valid networks for a key</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["DescriptorKey","Container for public or secret keys"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["DescriptorSecretKey","The descriptor secret key, either a single private key or an xprv."],["ExtendedKey","Enum for extended keys that can be either `xprv` or `xpub`"],["KeyError","Errors thrown while working with `keys`"],["ScriptContextEnum","Enum representation of the known valid [`ScriptContext`]s"],["SinglePubKey","Single public key without any origin or range information."]],"fn":[["any_network","Create a set containing mainnet, testnet and regtest"],["mainnet_network","Create a set only containing mainnet"],["merge_networks","Compute the intersection of two sets"],["test_networks","Create a set containing testnet and regtest"]],"mod":[["bip39","BIP-0039"]],"struct":[["GeneratedKey","Output of a [`GeneratableKey`] key generation"],["PrivateKeyGenerateOptions","Options for generating a [`PrivateKey`]"],["SinglePriv","A descriptor [`bitcoin::PrivateKey`] with optional origin information."],["SinglePub","A descriptor [`SinglePubKey`] with optional origin information."],["SortedMultiVec","Contents of a “sortedmulti” descriptor"]],"trait":[["DerivableKey","Trait for keys that can be derived."],["ExtScriptContext","Trait that adds extra useful methods to [`ScriptContext`]s"],["GeneratableDefaultOptions","Trait that allows generating a key with the default options"],["GeneratableKey","Trait for keys that can be generated"],["IntoDescriptorKey","Trait for objects that can be turned into a public or secret [`DescriptorKey`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["KeyMap","Alias type for a map of public key to secret key"],["ValidNetworks","Set of valid networks for a key"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["DescriptorKey","Container for public or secret keys"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["DescriptorSecretKey","The descriptor secret key, either a single private key or an xprv."],["ExtendedKey","Enum for extended keys that can be either `xprv` or `xpub`"],["KeyError","Errors thrown while working with `keys`"],["ScriptContextEnum","Enum representation of the known valid [`ScriptContext`]s"],["SinglePubKey","Single public key without any origin or range information."]],"fn":[["any_network","Create a set containing mainnet, testnet and regtest"],["mainnet_network","Create a set only containing mainnet"],["merge_networks","Compute the intersection of two sets"],["test_networks","Create a set containing testnet and regtest"]],"mod":[["bip39","BIP-0039"]],"struct":[["GeneratedKey","Output of a [`GeneratableKey`] key generation"],["PrivateKeyGenerateOptions","Options for generating a [`PrivateKey`]"],["SinglePriv","A descriptor [`bitcoin::PrivateKey`] with optional origin information."],["SinglePub","A descriptor [`SinglePubKey`] with optional origin information."],["SortedMultiVec","Contents of a “sortedmulti” descriptor"]],"trait":[["DerivableKey","Trait for keys that can be derived."],["ExtScriptContext","Trait that adds extra useful methods to [`ScriptContext`]s"],["GeneratableDefaultOptions","Trait that allows generating a key with the default options"],["GeneratableKey","Trait for keys that can be generated"],["IntoDescriptorKey","Trait for objects that can be turned into a public or secret [`DescriptorKey`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["KeyMap","Alias type for a map of public key to secret key"],["ValidNetworks","Set of valid networks for a key"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Output of a [`GeneratableKey`] key generation"><meta name="keywords" content="rust, rustlang, rust-lang, GeneratedKey"><title>GeneratedKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">GeneratedKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.into_key">into_key</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Deref">Deref</a><a href="#impl-DerivableKey%3CCtx%3E">DerivableKey<Ctx></a><a href="#impl-IntoDescriptorKey%3CCtx%3E">IntoDescriptorKey<Ctx></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="GeneratedKey" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">GeneratedKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#534-538" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct GeneratedKey<K, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Output of a <a href="trait.GeneratableKey.html" title="GeneratableKey"><code>GeneratableKey</code></a> key generation</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#540-553" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_key" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#550-552" title="goto source code">source</a></div><a href="#method.into_key" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.into_key" class="fnname">into_key</a>(self) -> K</h4></div></summary><div class="docblock"><p>Consumes <code>self</code> and returns the key</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#563-571" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#564-570" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#555-561" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = K</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#558-560" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-DerivableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#575-592" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx, K> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_extended_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#580-582" title="goto source code">source</a></div><a href="#method.into_extended_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.DerivableKey.html#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into an <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#584-591" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.DerivableKey.html#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Consume <code>self</code> and turn it into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
-key origin and derivation path <a href="trait.DerivableKey.html#method.into_descriptor_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-IntoDescriptorKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#596-605" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx, K> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into_descriptor_key-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#601-604" title="goto source code">source</a></div><a href="#method.into_descriptor_key-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class='docblock'><p>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Output of a [`GeneratableKey`] key generation"><meta name="keywords" content="rust, rustlang, rust-lang, GeneratedKey"><title>GeneratedKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">GeneratedKey</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.into_key">into_key</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-GeneratedKey%3CK%2C%20Ctx%3E">Clone</a></li><li><a href="#impl-Deref-for-GeneratedKey%3CK%2C%20Ctx%3E">Deref</a></li><li><a href="#impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">DerivableKey<Ctx></a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">IntoDescriptorKey<Ctx></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-GeneratedKey%3CK%2C%20Ctx%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-GeneratedKey%3CK%2C%20Ctx%3E">Send</a></li><li><a href="#impl-Sync-for-GeneratedKey%3CK%2C%20Ctx%3E">Sync</a></li><li><a href="#impl-Unpin-for-GeneratedKey%3CK%2C%20Ctx%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-GeneratedKey%3CK%2C%20Ctx%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-GeneratedKey%3CK%2C%20Ctx%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">Into<U></a></li><li><a href="#impl-Pointable-for-GeneratedKey%3CK%2C%20Ctx%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-GeneratedKey%3CK%2C%20Ctx%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-GeneratedKey%3CK%2C%20Ctx%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">GeneratedKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#534-538">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct GeneratedKey<K, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Output of a <a href="trait.GeneratableKey.html" title="GeneratableKey"><code>GeneratableKey</code></a> key generation</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#540-553">source</a><a href="#impl-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_key" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#550-552">source</a><h4 class="code-header">pub fn <a href="#method.into_key" class="fn">into_key</a>(self) -> K</h4></section></summary><div class="docblock"><p>Consumes <code>self</code> and returns the key</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#563-571">source</a><a href="#impl-Clone-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#564-570">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#555-561">source</a><a href="#impl-Deref-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = K</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#558-560">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#575-592">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx, K> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_extended_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#580-582">source</a><a href="#method.into_extended_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DerivableKey.html#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into an <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a> <a href="trait.DerivableKey.html#tymethod.into_extended_key">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#584-591">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.DerivableKey.html#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Consume <code>self</code> and turn it into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
+key origin and derivation path <a href="trait.DerivableKey.html#method.into_descriptor_key">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#596-605">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx, K> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#601-604">source</a><a href="#method.into_descriptor_key-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.IntoDescriptorKey.html#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class='docblock'>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Send-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Sync-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Unpin-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<K, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Pointable-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options for generating a [`PrivateKey`]"><meta name="keywords" content="rust, rustlang, rust-lang, PrivateKeyGenerateOptions"><title>PrivateKeyGenerateOptions in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">PrivateKeyGenerateOptions</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.compressed">compressed</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="PrivateKeyGenerateOptions" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">PrivateKeyGenerateOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#691-694" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct PrivateKeyGenerateOptions {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options for generating a [`PrivateKey`]"><meta name="keywords" content="rust, rustlang, rust-lang, PrivateKeyGenerateOptions"><title>PrivateKeyGenerateOptions in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">PrivateKeyGenerateOptions</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.compressed">compressed</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-PrivateKeyGenerateOptions">Clone</a></li><li><a href="#impl-Copy-for-PrivateKeyGenerateOptions">Copy</a></li><li><a href="#impl-Debug-for-PrivateKeyGenerateOptions">Debug</a></li><li><a href="#impl-Default-for-PrivateKeyGenerateOptions">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-PrivateKeyGenerateOptions">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PrivateKeyGenerateOptions">Send</a></li><li><a href="#impl-Sync-for-PrivateKeyGenerateOptions">Sync</a></li><li><a href="#impl-Unpin-for-PrivateKeyGenerateOptions">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PrivateKeyGenerateOptions">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-PrivateKeyGenerateOptions">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-PrivateKeyGenerateOptions">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-PrivateKeyGenerateOptions">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-PrivateKeyGenerateOptions">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-PrivateKeyGenerateOptions">Into<U></a></li><li><a href="#impl-Pointable-for-PrivateKeyGenerateOptions">Pointable</a></li><li><a href="#impl-ToOwned-for-PrivateKeyGenerateOptions">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-PrivateKeyGenerateOptions">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-PrivateKeyGenerateOptions">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-PrivateKeyGenerateOptions">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">PrivateKeyGenerateOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#691-694">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct PrivateKeyGenerateOptions {
pub compressed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Options for generating a [<code>PrivateKey</code>]</p>
<p>Defaults to creating compressed keys, which save on-chain bytes and fees</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.compressed" class="structfield small-section-header"><a href="#structfield.compressed" class="anchor field"></a><code>compressed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the generated key should be “compressed” or not</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#690" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#690" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#690" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#690" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#696-700" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#697-699" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#690" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.compressed" class="structfield small-section-header"><a href="#structfield.compressed" class="anchor field">§</a><code>compressed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the generated key should be “compressed” or not</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#690">source</a><a href="#impl-Clone-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#690">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#690">source</a><a href="#impl-Debug-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#690">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#696-700">source</a><a href="#impl-Default-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#697-699">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><section id="impl-Copy-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#690">source</a><a href="#impl-Copy-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section><section id="impl-Send-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-Send-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section><section id="impl-Sync-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-Sync-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section><section id="impl-Unpin-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-Unpin-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section><section id="impl-UnwindSafe-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-UnwindSafe-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-Pointable-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-PrivateKeyGenerateOptions" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-PrivateKeyGenerateOptions" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A descriptor [`bitcoin::PrivateKey`] with optional origin information."><meta name="keywords" content="rust, rustlang, rust-lang, SinglePriv"><title>SinglePriv in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SinglePriv</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.key">key</a><a href="#structfield.origin">origin</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="SinglePriv" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">SinglePriv</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SinglePriv {
- pub origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A descriptor [`bitcoin::PrivateKey`] with optional origin information."><meta name="keywords" content="rust, rustlang, rust-lang, SinglePriv"><title>SinglePriv in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SinglePriv</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.key">key</a></li><li><a href="#structfield.origin">origin</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-SinglePriv">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SinglePriv">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SinglePriv">Send</a></li><li><a href="#impl-Sync-for-SinglePriv">Sync</a></li><li><a href="#impl-Unpin-for-SinglePriv">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SinglePriv">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SinglePriv">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SinglePriv">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SinglePriv">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SinglePriv">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SinglePriv">Into<U></a></li><li><a href="#impl-Pointable-for-SinglePriv">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SinglePriv">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SinglePriv">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SinglePriv">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">SinglePriv</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SinglePriv {
+ pub origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(Fingerprint, DerivationPath)>,
pub key: PrivateKey,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A descriptor [<code>bitcoin::PrivateKey</code>] with optional origin information.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.origin" class="structfield small-section-header"><a href="#structfield.origin" class="anchor field"></a><code>origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>></code></span><div class="docblock"><p>Origin information (fingerprint and derivation path).</p>
-</div><span id="structfield.key" class="structfield small-section-header"><a href="#structfield.key" class="anchor field"></a><code>key: PrivateKey</code></span><div class="docblock"><p>The private key.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.origin" class="structfield small-section-header"><a href="#structfield.origin" class="anchor field">§</a><code>origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(Fingerprint, DerivationPath)></code></span><div class="docblock"><p>Origin information (fingerprint and derivation path).</p>
+</div><span id="structfield.key" class="structfield small-section-header"><a href="#structfield.key" class="anchor field">§</a><code>key: PrivateKey</code></span><div class="docblock"><p>The private key.</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SinglePriv" class="impl has-srclink"><a href="#impl-Debug-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SinglePriv" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></section><section id="impl-Send-for-SinglePriv" class="impl has-srclink"><a href="#impl-Send-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></section><section id="impl-Sync-for-SinglePriv" class="impl has-srclink"><a href="#impl-Sync-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></section><section id="impl-Unpin-for-SinglePriv" class="impl has-srclink"><a href="#impl-Unpin-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></section><section id="impl-UnwindSafe-for-SinglePriv" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SinglePriv.html" title="struct bdk::keys::SinglePriv">SinglePriv</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SinglePriv" class="impl has-srclink"><a href="#impl-Pointable-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SinglePriv" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SinglePriv" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SinglePriv" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A descriptor [`SinglePubKey`] with optional origin information."><meta name="keywords" content="rust, rustlang, rust-lang, SinglePub"><title>SinglePub in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SinglePub</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.key">key</a><a href="#structfield.origin">origin</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CSinglePub%3E">PartialEq<SinglePub></a><a href="#impl-PartialOrd%3CSinglePub%3E">PartialOrd<SinglePub></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="SinglePub" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">SinglePub</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SinglePub {
- pub origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A descriptor [`SinglePubKey`] with optional origin information."><meta name="keywords" content="rust, rustlang, rust-lang, SinglePub"><title>SinglePub in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SinglePub</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.key">key</a></li><li><a href="#structfield.origin">origin</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SinglePub">Clone</a></li><li><a href="#impl-Debug-for-SinglePub">Debug</a></li><li><a href="#impl-Eq-for-SinglePub">Eq</a></li><li><a href="#impl-Hash-for-SinglePub">Hash</a></li><li><a href="#impl-Ord-for-SinglePub">Ord</a></li><li><a href="#impl-PartialEq%3CSinglePub%3E-for-SinglePub">PartialEq<SinglePub></a></li><li><a href="#impl-PartialOrd%3CSinglePub%3E-for-SinglePub">PartialOrd<SinglePub></a></li><li><a href="#impl-StructuralEq-for-SinglePub">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SinglePub">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SinglePub">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SinglePub">Send</a></li><li><a href="#impl-Sync-for-SinglePub">Sync</a></li><li><a href="#impl-Unpin-for-SinglePub">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SinglePub">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SinglePub">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SinglePub">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SinglePub">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-SinglePub">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-SinglePub">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SinglePub">Into<U></a></li><li><a href="#impl-Pointable-for-SinglePub">Pointable</a></li><li><a href="#impl-ToOwned-for-SinglePub">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SinglePub">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SinglePub">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SinglePub">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">SinglePub</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SinglePub {
+ pub origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(Fingerprint, DerivationPath)>,
pub key: <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A descriptor <a href="enum.SinglePubKey.html" title="SinglePubKey"><code>SinglePubKey</code></a> with optional origin information.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.origin" class="structfield small-section-header"><a href="#structfield.origin" class="anchor field"></a><code>origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Fingerprint, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>></code></span><div class="docblock"><p>Origin information (fingerprint and derivation path).</p>
-</div><span id="structfield.key" class="structfield small-section-header"><a href="#structfield.key" class="anchor field"></a><code>key: <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></code></span><div class="docblock"><p>The public key.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSinglePub%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CSinglePub%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CSinglePub%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CSinglePub%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.origin" class="structfield small-section-header"><a href="#structfield.origin" class="anchor field">§</a><code>origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(Fingerprint, DerivationPath)></code></span><div class="docblock"><p>Origin information (fingerprint and derivation path).</p>
+</div><span id="structfield.key" class="structfield small-section-header"><a href="#structfield.key" class="anchor field">§</a><code>key: <a class="enum" href="enum.SinglePubKey.html" title="enum bdk::keys::SinglePubKey">SinglePubKey</a></code></span><div class="docblock"><p>The public key.</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SinglePub" class="impl has-srclink"><a href="#impl-Clone-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SinglePub" class="impl has-srclink"><a href="#impl-Debug-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-SinglePub" class="impl has-srclink"><a href="#impl-Hash-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-SinglePub" class="impl has-srclink"><a href="#impl-Ord-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSinglePub%3E-for-SinglePub" class="impl has-srclink"><a href="#impl-PartialEq%3CSinglePub%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CSinglePub%3E-for-SinglePub" class="impl has-srclink"><a href="#impl-PartialOrd%3CSinglePub%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-SinglePub" class="impl has-srclink"><a href="#impl-Eq-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section><section id="impl-StructuralEq-for-SinglePub" class="impl has-srclink"><a href="#impl-StructuralEq-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section><section id="impl-StructuralPartialEq-for-SinglePub" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SinglePub" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section><section id="impl-Send-for-SinglePub" class="impl has-srclink"><a href="#impl-Send-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section><section id="impl-Sync-for-SinglePub" class="impl has-srclink"><a href="#impl-Sync-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section><section id="impl-Unpin-for-SinglePub" class="impl has-srclink"><a href="#impl-Unpin-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section><section id="impl-UnwindSafe-for-SinglePub" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SinglePub.html" title="struct bdk::keys::SinglePub">SinglePub</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-SinglePub" class="impl has-srclink"><a href="#impl-CallHasher-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SinglePub" class="impl has-srclink"><a href="#impl-Pointable-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SinglePub" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SinglePub" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SinglePub" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Contents of a “sortedmulti” descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, SortedMultiVec"><title>SortedMultiVec in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SortedMultiVec</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.k">k</a><a href="#structfield.pks">pks</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.encode">encode</a><a href="#method.from_tree">from_tree</a><a href="#method.max_satisfaction_size">max_satisfaction_size</a><a href="#method.max_satisfaction_witness_elements">max_satisfaction_witness_elements</a><a href="#method.new">new</a><a href="#method.sanity_check">sanity_check</a><a href="#method.satisfy">satisfy</a><a href="#method.script_size">script_size</a><a href="#method.sorted_node">sorted_node</a><a href="#method.translate_pk">translate_pk</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-ForEachKey%3CPk%3E">ForEachKey<Pk></a><a href="#impl-Hash">Hash</a><a href="#impl-Liftable%3CPk%3E">Liftable<Pk></a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E">PartialEq<SortedMultiVec<Pk, Ctx>></a><a href="#impl-PartialOrd%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E">PartialOrd<SortedMultiVec<Pk, Ctx>></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="SortedMultiVec" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">SortedMultiVec</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SortedMultiVec<Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span> {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Contents of a “sortedmulti” descriptor"><meta name="keywords" content="rust, rustlang, rust-lang, SortedMultiVec"><title>SortedMultiVec in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SortedMultiVec</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.k">k</a></li><li><a href="#structfield.pks">pks</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.encode">encode</a></li><li><a href="#method.from_tree">from_tree</a></li><li><a href="#method.max_satisfaction_size">max_satisfaction_size</a></li><li><a href="#method.max_satisfaction_witness_elements">max_satisfaction_witness_elements</a></li><li><a href="#method.new">new</a></li><li><a href="#method.sanity_check">sanity_check</a></li><li><a href="#method.satisfy">satisfy</a></li><li><a href="#method.script_size">script_size</a></li><li><a href="#method.sorted_node">sorted_node</a></li><li><a href="#method.translate_pk">translate_pk</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Clone</a></li><li><a href="#impl-Debug-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Debug</a></li><li><a href="#impl-Display-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Display</a></li><li><a href="#impl-Eq-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Eq</a></li><li><a href="#impl-ForEachKey%3CPk%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">ForEachKey<Pk></a></li><li><a href="#impl-Hash-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Hash</a></li><li><a href="#impl-Liftable%3CPk%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Liftable<Pk></a></li><li><a href="#impl-Ord-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Ord</a></li><li><a href="#impl-PartialEq%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">PartialEq<SortedMultiVec<Pk, Ctx>></a></li><li><a href="#impl-PartialOrd%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">PartialOrd<SortedMultiVec<Pk, Ctx>></a></li><li><a href="#impl-StructuralEq-for-SortedMultiVec%3CPk%2C%20Ctx%3E">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SortedMultiVec%3CPk%2C%20Ctx%3E">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SortedMultiVec%3CPk%2C%20Ctx%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Send</a></li><li><a href="#impl-Sync-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Sync</a></li><li><a href="#impl-Unpin-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SortedMultiVec%3CPk%2C%20Ctx%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-SortedMultiVec%3CPk%2C%20Ctx%3E">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Into<U></a></li><li><a href="#impl-Pointable-for-SortedMultiVec%3CPk%2C%20Ctx%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-SortedMultiVec%3CPk%2C%20Ctx%3E">ToOwned</a></li><li><a href="#impl-ToString-for-SortedMultiVec%3CPk%2C%20Ctx%3E">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="struct" href="#">SortedMultiVec</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SortedMultiVec<Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span>{
pub k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
pub pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>,
/* private fields */
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Contents of a “sortedmulti” descriptor</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.k" class="structfield small-section-header"><a href="#structfield.k" class="anchor field"></a><code>k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>signatures required</p>
-</div><span id="structfield.pks" class="structfield small-section-header"><a href="#structfield.pks" class="anchor field"></a><code>pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>></code></span><div class="docblock"><p>public keys inside sorted Multi</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>, Error></h4></div></summary><div class="docblock"><p>Create a new instance of <code>SortedMultiVec</code> given a list of keys and the threshold</p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.k" class="structfield small-section-header"><a href="#structfield.k" class="anchor field">§</a><code>k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>signatures required</p>
+</div><span id="structfield.pks" class="structfield small-section-header"><a href="#structfield.pks" class="anchor field">§</a><code>pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>></code></span><div class="docblock"><p>public keys inside sorted Multi</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(<br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> pks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Pk, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>, Error></h4></section></summary><div class="docblock"><p>Create a new instance of <code>SortedMultiVec</code> given a list of keys and the threshold</p>
<p>Internally checks all the applicable size limits and pubkey types limitations according to the current <code>Ctx</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_tree" class="method has-srclink"><div class="rightside"></div><a href="#method.from_tree" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_tree" class="fnname">from_tree</a>(tree: &Tree<'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>, Error> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>, </span></h4></div></summary><div class="docblock"><p>Parse an expression tree into a SortedMultiVec</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.translate_pk" class="method has-srclink"><div class="rightside"></div><a href="#method.translate_pk" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.translate_pk" class="fnname">translate_pk</a><T, Q, FuncError>(<br> &self, <br> t: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Q, Ctx>, FuncError> <span class="where fmt-newline">where<br> T: Translator<Pk, Q, FuncError>,<br> Q: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>This will panic if fpk returns an uncompressed key when
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_tree" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.from_tree" class="fn">from_tree</a>(tree: &Tree<'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>, Error><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,<br> <Pk as <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a>,</span></h4></section></summary><div class="docblock"><p>Parse an expression tree into a SortedMultiVec</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.translate_pk" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.translate_pk" class="fn">translate_pk</a><T, Q, FuncError>(<br> &self,<br> t: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Q, Ctx>, FuncError><span class="where fmt-newline">where<br> T: Translator<Pk, Q, FuncError>,<br> Q: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>This will panic if fpk returns an uncompressed key when
converting to a Segwit descriptor. To prevent this panic, ensure
fpk returns an error in this case instead.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-1" class="impl has-srclink"><div class="rightside"></div><a href="#impl-1" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sanity_check" class="method has-srclink"><div class="rightside"></div><a href="#method.sanity_check" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sanity_check" class="fnname">sanity_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error></h4></div></summary><div class="docblock"><p>utility function to sanity a sorted multi vec</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-2" class="impl has-srclink"><div class="rightside"></div><a href="#impl-2" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sorted_node" class="method has-srclink"><div class="rightside"></div><a href="#method.sorted_node" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sorted_node" class="fnname">sorted_node</a>(&self) -> Terminal<Pk, Ctx> <span class="where fmt-newline">where<br> Pk: ToPublicKey, </span></h4></div></summary><div class="docblock"><p>Create Terminal::Multi containing sorted pubkeys</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.encode" class="method has-srclink"><div class="rightside"></div><a href="#method.encode" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.encode" class="fnname">encode</a>(&self) -> Script <span class="where fmt-newline">where<br> Pk: ToPublicKey, </span></h4></div></summary><div class="docblock"><p>Encode as a Bitcoin script</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.satisfy" class="method has-srclink"><div class="rightside"></div><a href="#method.satisfy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.satisfy" class="fnname">satisfy</a><S>(<br> &self, <br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Error> <span class="where fmt-newline">where<br> Pk: ToPublicKey,<br> S: Satisfier<Pk>, </span></h4></div></summary><div class="docblock"><p>Attempt to produce a satisfying witness for the
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SortedMultiVec%3CPk%2C%20Ctx%3E-1" class="impl has-srclink"><a href="#impl-SortedMultiVec%3CPk%2C%20Ctx%3E-1" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sanity_check" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.sanity_check" class="fn">sanity_check</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error></h4></section></summary><div class="docblock"><p>utility function to sanity a sorted multi vec</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SortedMultiVec%3CPk%2C%20Ctx%3E-2" class="impl has-srclink"><a href="#impl-SortedMultiVec%3CPk%2C%20Ctx%3E-2" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sorted_node" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.sorted_node" class="fn">sorted_node</a>(&self) -> Terminal<Pk, Ctx><span class="where fmt-newline">where<br> Pk: ToPublicKey,</span></h4></section></summary><div class="docblock"><p>Create Terminal::Multi containing sorted pubkeys</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.encode" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.encode" class="fn">encode</a>(&self) -> Script<span class="where fmt-newline">where<br> Pk: ToPublicKey,</span></h4></section></summary><div class="docblock"><p>Encode as a Bitcoin script</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.satisfy" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.satisfy" class="fn">satisfy</a><S>(<br> &self,<br> satisfier: S<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>, Error><span class="where fmt-newline">where<br> Pk: ToPublicKey,<br> S: Satisfier<Pk>,</span></h4></section></summary><div class="docblock"><p>Attempt to produce a satisfying witness for the
witness script represented by the parse tree</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.script_size" class="method has-srclink"><div class="rightside"></div><a href="#method.script_size" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.script_size" class="fnname">script_size</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class="docblock"><p>Size, in bytes of the script-pubkey. If this Miniscript is used outside
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.script_size" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.script_size" class="fn">script_size</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Size, in bytes of the script-pubkey. If this Miniscript is used outside
of segwit (e.g. in a bare or P2SH descriptor), this quantity should be
multiplied by 4 to compute the weight.</p>
<p>In general, it is not recommended to use this function directly, but
to instead call the corresponding function on a <code>Descriptor</code>, which
will handle the segwit/non-segwit technicalities for you.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_witness_elements" class="method has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_witness_elements" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.max_satisfaction_witness_elements" class="fnname">max_satisfaction_witness_elements</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class="docblock"><p>Maximum number of witness elements used to satisfy the Miniscript
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_witness_elements" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.max_satisfaction_witness_elements" class="fn">max_satisfaction_witness_elements</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Maximum number of witness elements used to satisfy the Miniscript
fragment, including the witness script itself. Used to estimate
the weight of the <code>VarInt</code> that specifies this number in a serialized
transaction.</p>
<p>This function may panic on malformed <code>Miniscript</code> objects which do
not correspond to semantically sane Scripts. (Such scripts should be
rejected at parse time. Any exceptions are bugs.)</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max_satisfaction_size" class="method has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.max_satisfaction_size" class="fnname">max_satisfaction_size</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class="docblock"><p>Maximum size, in bytes, of a satisfying witness.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_satisfaction_size" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.max_satisfaction_size" class="fn">max_satisfaction_size</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Maximum size, in bytes, of a satisfying witness.
In general, it is not recommended to use this function directly, but
to instead call the corresponding function on a <code>Descriptor</code>, which
will handle the segwit/non-segwit technicalities for you.</p>
<p>All signatures are assumed to be 73 bytes in size, including the
length prefix (segwit) or push opcode (pre-segwit) and sighash
postfix.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ForEachKey%3CPk%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ForEachKey%3CPk%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> ForEachKey<Pk> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.for_each_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.for_each_key" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">for_each_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a, </span></h4></div></summary><div class='docblock'><p>Run a predicate on every key in the descriptor, returning whether
-the predicate returned true for every key <a href="#tymethod.for_each_key">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.for_any_key" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.for_any_key" class="anchor"></a><h4 class="code-header">fn <a href="#method.for_any_key" class="fnname">for_any_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a, </span></h4></div></summary><div class='docblock'><p>Run a predicate on every key in the descriptor, returning whether
-the predicate returned true for any key <a href="#method.for_any_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H) <span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Liftable%3CPk%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Liftable%3CPk%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> Liftable<Pk> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lift" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.lift" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">lift</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Policy<Pk>, Error></h4></div></summary><div class='docblock'><p>Convert the object into an abstract policy</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialEq%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Pk> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Ctx> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-PartialOrd%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Pk> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Ctx> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, </span></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Clone-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Debug-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Display-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ForEachKey%3CPk%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-ForEachKey%3CPk%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> ForEachKey<Pk> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_each_key" class="method trait-impl has-srclink"><a href="#method.for_each_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">for_each_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a,</span></h4></section></summary><div class='docblock'>Run a predicate on every key in the descriptor, returning whether
+the predicate returned true for every key <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_any_key" class="method trait-impl has-srclink"><a href="#method.for_any_key" class="anchor">§</a><h4 class="code-header">fn <a class="fn">for_any_key</a><'a, F>(&'a self, pred: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,<br> Pk: 'a,</span></h4></section></summary><div class='docblock'>Run a predicate on every key in the descriptor, returning whether
+the predicate returned true for any key <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Hash-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)<span class="where fmt-newline">where<br> __H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</span></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Liftable%3CPk%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Liftable%3CPk%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> Liftable<Pk> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lift" class="method trait-impl has-srclink"><a href="#method.lift" class="anchor">§</a><h4 class="code-header">fn <a class="fn">lift</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Policy<Pk>, Error></h4></section></summary><div class='docblock'>Convert the object into an abstract policy</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Ord-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-PartialEq%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Pk> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Ctx> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-PartialOrd%3CSortedMultiVec%3CPk%2C%20Ctx%3E%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Pk> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Ctx> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Eq-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + MiniscriptKey,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section><section id="impl-StructuralEq-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-StructuralEq-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section><section id="impl-StructuralPartialEq-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Pk: MiniscriptKey,<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,</span></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Send-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Sync-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Unpin-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Pk, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SortedMultiVec.html" title="struct bdk::keys::SortedMultiVec">SortedMultiVec</a><Pk, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,<br> Pk: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-CallHasher-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Pointable-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SortedMultiVec%3CPk%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for keys that can be derived."><meta name="keywords" content="rust, rustlang, rust-lang, DerivableKey"><title>DerivableKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DerivableKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.into_extended_key">into_extended_key</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.into_descriptor_key">into_descriptor_key</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-DerivableKey%3CCtx%3E-for-(GeneratedKey%3CMnemonic%2C%20Ctx%3E%2C%20Option%3CString%3E)">(GeneratedKey<Mnemonic, Ctx>, Option<String>)</a><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPrivKey">ExtendedPrivKey</a><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPubKey">ExtendedPubKey</a><a href="#impl-DerivableKey%3CCtx%3E-for-%5Bu8%3B%2064%5D">[u8; 64]</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="DerivableKey" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">DerivableKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#461-512" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait DerivableKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> = <a class="enum" href="../descriptor/enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
- fn <a href="#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for keys that can be derived."><meta name="keywords" content="rust, rustlang, rust-lang, DerivableKey"><title>DerivableKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DerivableKey</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.into_extended_key">into_extended_key</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.into_descriptor_key">into_descriptor_key</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-DerivableKey%3CCtx%3E-for-(GeneratedKey%3CMnemonic%2C%20Ctx%3E%2C%20Option%3CString%3E)">(GeneratedKey<Mnemonic, Ctx>, Option<String>)</a></li><li><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPrivKey">ExtendedPrivKey</a></li><li><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPubKey">ExtendedPubKey</a></li><li><a href="#impl-DerivableKey%3CCtx%3E-for-%5Bu8%3B%2064%5D">[u8; 64]</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">DerivableKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#461-512">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait DerivableKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> = <a class="enum" href="../descriptor/enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
+ fn <a href="#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>>;
- fn <a href="#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> { ... }
+ fn <a href="#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for keys that can be derived.</p>
<p>When extra metadata are provided, a <a href="trait.DerivableKey.html" title="DerivableKey"><code>DerivableKey</code></a> can be transformed into a
<a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a>: the trait <a href="trait.IntoDescriptorKey.html" title="IntoDescriptorKey"><code>IntoDescriptorKey</code></a> is automatically implemented
<p>For key types that don’t encode any indication about the path to use (like bip39), it’s
generally recommended to implemented this trait instead of <a href="trait.IntoDescriptorKey.html" title="IntoDescriptorKey"><code>IntoDescriptorKey</code></a>. The same
rules regarding script context and valid networks apply.</p>
-<h3 id="examples" class="section-header"><a href="#examples">Examples</a></h3>
+<h3 id="examples"><a href="#examples">Examples</a></h3>
<p>Key types that can be directly converted into an <a href="(bip32::ExtendedPrivKey)"><code>ExtendedPrivKey</code></a> or
an <a href="(bip32::ExtendedPubKey)"><code>ExtendedPubKey</code></a> can implement only the required <code>into_extended_key()</code> method.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin</span>;
-<span class="kw">use</span> <span class="ident">bdk::bitcoin::util::bip32</span>;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{<span class="ident">DerivableKey</span>, <span class="ident">ExtendedKey</span>, <span class="ident">KeyError</span>, <span class="ident">ScriptContext</span>};
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin;
+<span class="kw">use </span>bdk::bitcoin::util::bip32;
+<span class="kw">use </span>bdk::keys::{DerivableKey, ExtendedKey, KeyError, ScriptContext};
-<span class="kw">struct</span> <span class="ident">MyCustomKeyType</span> {
- <span class="ident">key_data</span>: <span class="ident">bitcoin::PrivateKey</span>,
- <span class="ident">chain_code</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">bitcoin::Network</span>,
+<span class="kw">struct </span>MyCustomKeyType {
+ key_data: bitcoin::PrivateKey,
+ chain_code: Vec<u8>,
+ network: bitcoin::Network,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MyCustomKeyType</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey</span> {
- <span class="ident">network</span>: <span class="self">self</span>.<span class="ident">network</span>,
- <span class="ident">depth</span>: <span class="number">0</span>,
- <span class="ident">parent_fingerprint</span>: <span class="ident">bip32::Fingerprint::default</span>(),
- <span class="ident">private_key</span>: <span class="self">self</span>.<span class="ident">key_data</span>.<span class="ident">inner</span>,
- <span class="ident">chain_code</span>: <span class="ident">bip32::ChainCode::from</span>(<span class="self">self</span>.<span class="ident">chain_code</span>.<span class="ident">as_ref</span>()),
- <span class="ident">child_number</span>: <span class="ident">bip32::ChildNumber::Normal</span> { <span class="ident">index</span>: <span class="number">0</span> },
+<span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>MyCustomKeyType {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey {
+ network: <span class="self">self</span>.network,
+ depth: <span class="number">0</span>,
+ parent_fingerprint: bip32::Fingerprint::default(),
+ private_key: <span class="self">self</span>.key_data.inner,
+ chain_code: bip32::ChainCode::from(<span class="self">self</span>.chain_code.as_ref()),
+ child_number: bip32::ChildNumber::Normal { index: <span class="number">0 </span>},
};
- <span class="ident">xprv</span>.<span class="ident">into_extended_key</span>()
+ xprv.into_extended_key()
}
}</code></pre></div>
<p>Types that don’t internally encode the <a href="bitcoin::Network"><code>Network</code></a> in which they are valid need some extra
steps to override the set of valid networks, otherwise only the network specified in the
<a href="(bip32::ExtendedPrivKey)"><code>ExtendedPrivKey</code></a> or <a href="(bip32::ExtendedPubKey)"><code>ExtendedPubKey</code></a> will be considered valid.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin</span>;
-<span class="kw">use</span> <span class="ident">bdk::bitcoin::util::bip32</span>;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{
- <span class="ident">any_network</span>, <span class="ident">DerivableKey</span>, <span class="ident">DescriptorKey</span>, <span class="ident">ExtendedKey</span>, <span class="ident">KeyError</span>, <span class="ident">ScriptContext</span>,
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin;
+<span class="kw">use </span>bdk::bitcoin::util::bip32;
+<span class="kw">use </span>bdk::keys::{
+ any_network, DerivableKey, DescriptorKey, ExtendedKey, KeyError, ScriptContext,
};
-<span class="kw">struct</span> <span class="ident">MyCustomKeyType</span> {
- <span class="ident">key_data</span>: <span class="ident">bitcoin::PrivateKey</span>,
- <span class="ident">chain_code</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>,
+<span class="kw">struct </span>MyCustomKeyType {
+ key_data: bitcoin::PrivateKey,
+ chain_code: Vec<u8>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MyCustomKeyType</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey</span> {
- <span class="ident">network</span>: <span class="ident">bitcoin::Network::Bitcoin</span>, <span class="comment">// pick an arbitrary network here</span>
- <span class="ident">depth</span>: <span class="number">0</span>,
- <span class="ident">parent_fingerprint</span>: <span class="ident">bip32::Fingerprint::default</span>(),
- <span class="ident">private_key</span>: <span class="self">self</span>.<span class="ident">key_data</span>.<span class="ident">inner</span>,
- <span class="ident">chain_code</span>: <span class="ident">bip32::ChainCode::from</span>(<span class="self">self</span>.<span class="ident">chain_code</span>.<span class="ident">as_ref</span>()),
- <span class="ident">child_number</span>: <span class="ident">bip32::ChildNumber::Normal</span> { <span class="ident">index</span>: <span class="number">0</span> },
+<span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>MyCustomKeyType {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey {
+ network: bitcoin::Network::Bitcoin, <span class="comment">// pick an arbitrary network here
+ </span>depth: <span class="number">0</span>,
+ parent_fingerprint: bip32::Fingerprint::default(),
+ private_key: <span class="self">self</span>.key_data.inner,
+ chain_code: bip32::ChainCode::from(<span class="self">self</span>.chain_code.as_ref()),
+ child_number: bip32::ChildNumber::Normal { index: <span class="number">0 </span>},
};
- <span class="ident">xprv</span>.<span class="ident">into_extended_key</span>()
+ xprv.into_extended_key()
}
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">source</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor_key</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">into_extended_key</span>()<span class="question-mark">?</span>
- .<span class="ident">into_descriptor_key</span>(<span class="ident">source</span>, <span class="ident">derivation_path</span>)<span class="question-mark">?</span>;
+ source: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>descriptor_key = <span class="self">self
+ </span>.into_extended_key()<span class="question-mark">?
+ </span>.into_descriptor_key(source, derivation_path)<span class="question-mark">?</span>;
- <span class="comment">// Override the set of valid networks here</span>
- <span class="prelude-val">Ok</span>(<span class="ident">descriptor_key</span>.<span class="ident">override_valid_networks</span>(<span class="ident">any_network</span>()))
+ <span class="comment">// Override the set of valid networks here
+ </span><span class="prelude-val">Ok</span>(descriptor_key.override_valid_networks(any_network()))
}
}</code></pre></div>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.into_extended_key" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#486" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class="docblock"><p>Consume <code>self</code> and turn it into an <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a></p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.into_extended_key" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#486">source</a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class="docblock"><p>Consume <code>self</code> and turn it into an <a href="enum.ExtendedKey.html" title="ExtendedKey"><code>ExtendedKey</code></a></p>
<p>This can be used to get direct access to <code>xprv</code>s and <code>xpub</code>s for types that implement this trait,
like <a href="bip39/struct.Mnemonic.html"><code>Mnemonic</code></a> when the <code>keys-bip39</code> feature is enabled.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin::Network</span>;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{<span class="ident">DerivableKey</span>, <span class="ident">ExtendedKey</span>};
-<span class="kw">use</span> <span class="ident">bdk::keys::bip39</span>::{<span class="ident">Mnemonic</span>, <span class="ident">Language</span>};
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin::Network;
+<span class="kw">use </span>bdk::keys::{DerivableKey, ExtendedKey};
+<span class="kw">use </span>bdk::keys::bip39::{Mnemonic, Language};
-<span class="kw">let</span> <span class="ident">xkey</span>: <span class="ident">ExtendedKey</span> <span class="op">=</span>
- <span class="ident">Mnemonic::parse_in</span>(
- <span class="ident">Language::English</span>,
+<span class="kw">let </span>xkey: ExtendedKey =
+ Mnemonic::parse_in(
+ Language::English,
<span class="string">"jelly crash boy whisper mouse ecology tuna soccer memory million news short"</span>,
- )<span class="question-mark">?</span>
- .<span class="ident">into_extended_key</span>()<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">xkey</span>.<span class="ident">into_xprv</span>(<span class="ident">Network::Bitcoin</span>).<span class="ident">unwrap</span>();</code></pre></div>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.into_descriptor_key" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#490-511" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class="docblock"><p>Consume <code>self</code> and turn it into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
+ )<span class="question-mark">?
+ </span>.into_extended_key()<span class="question-mark">?</span>;
+<span class="kw">let </span>xprv = xkey.into_xprv(Network::Bitcoin).unwrap();</code></pre></div>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_descriptor_key" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#490-511">source</a><h4 class="code-header">fn <a href="#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> origin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class="docblock"><p>Consume <code>self</code> and turn it into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> by adding the extra metadata, such as
key origin and derivation path</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-DerivableKey%3CCtx%3E-for-%5Bu8%3B%2064%5D" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#57-73" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-for-%5Bu8%3B%2064%5D" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 64]</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="method.into_extended_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#58-60" title="goto source code">source</a></div><a href="#method.into_extended_key" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div><div id="method.into_descriptor_key-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#62-72" title="goto source code">source</a></div><a href="#method.into_descriptor_key-1" class="anchor"></a><h4 class="code-header">fn <a href="#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-DerivableKey%3CCtx%3E-for-(GeneratedKey%3CMnemonic%2C%20Ctx%3E%2C%20Option%3CString%3E)" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#98-112" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-for-(GeneratedKey%3CMnemonic%2C%20Ctx%3E%2C%20Option%3CString%3E)" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><<a class="struct" href="bip39/struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, Ctx>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="method.into_extended_key-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#99-102" title="goto source code">source</a></div><a href="#method.into_extended_key-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div><div id="method.into_descriptor_key-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#104-111" title="goto source code">source</a></div><a href="#method.into_descriptor_key-2" class="anchor"></a><h4 class="code-header">fn <a href="#method.into_descriptor_key" class="fnname">into_descriptor_key</a>(<br> self, <br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>, <br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-DerivableKey%3CCtx%3E-for-ExtendedPubKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#521-525" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPubKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for ExtendedPubKey</h3></div></summary><div class="impl-items"><div id="method.into_extended_key-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#522-524" title="goto source code">source</a></div><a href="#method.into_extended_key-2" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-DerivableKey%3CCtx%3E-for-ExtendedPrivKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#527-531" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPrivKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for ExtendedPrivKey</h3></div></summary><div class="impl-items"><div id="method.into_extended_key-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#528-530" title="goto source code">source</a></div><a href="#method.into_extended_key-3" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fnname">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-DerivableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#575-592" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx, K> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>, </span></h3></div><div id="impl-DerivableKey%3CCtx%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#515-519" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-1" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></div><div class="docblock"><p>Identity conversion</p>
-</div><div id="impl-DerivableKey%3CCtx%3E-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#115-131" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-2" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="bip39/struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div></div><div id="impl-DerivableKey%3CCtx%3E-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#76-95" title="goto source code">source</a></div><a href="#impl-DerivableKey%3CCtx%3E-3" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="type" href="bip39/type.MnemonicWithPassphrase.html" title="type bdk::keys::bip39::MnemonicWithPassphrase">MnemonicWithPassphrase</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div></div></div><script type="text/javascript" src="../../implementors/bdk/keys/trait.DerivableKey.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-DerivableKey%3CCtx%3E-for-%5Bu8%3B%2064%5D" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#57-73">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-%5Bu8%3B%2064%5D" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">64</a>]</h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="method.into_extended_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#58-60">source</a><a href="#method.into_extended_key" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section><section id="method.into_descriptor_key-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#62-72">source</a><a href="#method.into_descriptor_key-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-DerivableKey%3CCtx%3E-for-(GeneratedKey%3CMnemonic%2C%20Ctx%3E%2C%20Option%3CString%3E)" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#98-112">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-(GeneratedKey%3CMnemonic%2C%20Ctx%3E%2C%20Option%3CString%3E)" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for (<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><<a class="struct" href="bip39/struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a>, Ctx>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>)</h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="method.into_extended_key-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#99-102">source</a><a href="#method.into_extended_key-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section><section id="method.into_descriptor_key-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#104-111">source</a><a href="#method.into_descriptor_key-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.into_descriptor_key" class="fn">into_descriptor_key</a>(<br> self,<br> source: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><KeySource>,<br> derivation_path: DerivationPath<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-DerivableKey%3CCtx%3E-for-ExtendedPubKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#521-525">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPubKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for ExtendedPubKey</h3></section></summary><div class="impl-items"><section id="method.into_extended_key-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#522-524">source</a><a href="#method.into_extended_key-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-DerivableKey%3CCtx%3E-for-ExtendedPrivKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#527-531">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedPrivKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for ExtendedPrivKey</h3></section></summary><div class="impl-items"><section id="method.into_extended_key-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#528-530">source</a><a href="#method.into_extended_key-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_extended_key" class="fn">into_extended_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#575-592">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx, K> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>,</span></h3></section><section id="impl-DerivableKey%3CCtx%3E-for-ExtendedKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#515-519">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-ExtendedKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="enum" href="enum.ExtendedKey.html" title="enum bdk::keys::ExtendedKey">ExtendedKey</a><Ctx></h3></section><div class="docblock"><p>Identity conversion</p>
+</div><section id="impl-DerivableKey%3CCtx%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#115-131">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="struct" href="bip39/struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span></section><section id="impl-DerivableKey%3CCtx%3E-for-MnemonicWithPassphrase" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#76-95">source</a><a href="#impl-DerivableKey%3CCtx%3E-for-MnemonicWithPassphrase" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx> for <a class="type" href="bip39/type.MnemonicWithPassphrase.html" title="type bdk::keys::bip39::MnemonicWithPassphrase">MnemonicWithPassphrase</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span></section></div><script src="../../implementors/bdk/keys/trait.DerivableKey.js" data-ignore-extern-crates="bitcoin,std,bip39" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait that adds extra useful methods to [`ScriptContext`]s"><meta name="keywords" content="rust, rustlang, rust-lang, ExtScriptContext"><title>ExtScriptContext in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ExtScriptContext</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.as_enum">as_enum</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.is_legacy">is_legacy</a><a href="#method.is_segwit_v0">is_segwit_v0</a><a href="#method.is_taproot">is_taproot</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="ExtScriptContext" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">ExtScriptContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#152-170" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait ExtScriptContext: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> {
- fn <a href="#tymethod.as_enum" class="fnname">as_enum</a>() -> <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait that adds extra useful methods to [`ScriptContext`]s"><meta name="keywords" content="rust, rustlang, rust-lang, ExtScriptContext"><title>ExtScriptContext in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ExtScriptContext</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.as_enum">as_enum</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.is_legacy">is_legacy</a></li><li><a href="#method.is_segwit_v0">is_segwit_v0</a></li><li><a href="#method.is_taproot">is_taproot</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">ExtScriptContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#152-170">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait ExtScriptContext: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> {
+ fn <a href="#tymethod.as_enum" class="fn">as_enum</a>() -> <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a>;
- fn <a href="#method.is_legacy" class="fnname">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
-<div class="item-spacer"></div> fn <a href="#method.is_segwit_v0" class="fnname">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
-<div class="item-spacer"></div> fn <a href="#method.is_taproot" class="fnname">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
+ fn <a href="#method.is_legacy" class="fn">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
+<span class="item-spacer"></span> fn <a href="#method.is_segwit_v0" class="fn">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
+<span class="item-spacer"></span> fn <a href="#method.is_taproot" class="fn">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait that adds extra useful methods to <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a>s</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.as_enum" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#154" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.as_enum" class="fnname">as_enum</a>() -> <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></div></summary><div class="docblock"><p>Returns the <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> as a <a href="enum.ScriptContextEnum.html" title="ScriptContextEnum"><code>ScriptContextEnum</code></a></p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.is_legacy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#157-159" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.is_legacy" class="fnname">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the script context is <a href="../descriptor/enum.Legacy.html"><code>Legacy</code></a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.is_segwit_v0" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#162-164" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.is_segwit_v0" class="fnname">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the script context is <a href="../descriptor/enum.Segwitv0.html"><code>Segwitv0</code></a></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.is_taproot" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#167-169" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.is_taproot" class="fnname">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns whether the script context is <a href="miniscript::Tap"><code>Tap</code></a>, aka Taproot or Segwit V1</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-ExtScriptContext" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#172-181" title="goto source code">source</a></div><a href="#impl-ExtScriptContext" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> + 'static> <a class="trait" href="trait.ExtScriptContext.html" title="trait bdk::keys::ExtScriptContext">ExtScriptContext</a> for Ctx</h3></div></div><script type="text/javascript" src="../../implementors/bdk/keys/trait.ExtScriptContext.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.as_enum" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#154">source</a><h4 class="code-header">fn <a href="#tymethod.as_enum" class="fn">as_enum</a>() -> <a class="enum" href="enum.ScriptContextEnum.html" title="enum bdk::keys::ScriptContextEnum">ScriptContextEnum</a></h4></section></summary><div class="docblock"><p>Returns the <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> as a <a href="enum.ScriptContextEnum.html" title="ScriptContextEnum"><code>ScriptContextEnum</code></a></p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_legacy" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#157-159">source</a><h4 class="code-header">fn <a href="#method.is_legacy" class="fn">is_legacy</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the script context is <a href="../descriptor/enum.Legacy.html"><code>Legacy</code></a></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_segwit_v0" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#162-164">source</a><h4 class="code-header">fn <a href="#method.is_segwit_v0" class="fn">is_segwit_v0</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the script context is <a href="../descriptor/enum.Segwitv0.html"><code>Segwitv0</code></a></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_taproot" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#167-169">source</a><h4 class="code-header">fn <a href="#method.is_taproot" class="fn">is_taproot</a>() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the script context is <a href="miniscript::Tap"><code>Tap</code></a>, aka Taproot or Segwit V1</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ExtScriptContext-for-Ctx" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#172-181">source</a><a href="#impl-ExtScriptContext-for-Ctx" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> + 'static> <a class="trait" href="trait.ExtScriptContext.html" title="trait bdk::keys::ExtScriptContext">ExtScriptContext</a> for Ctx</h3></section></div><script src="../../implementors/bdk/keys/trait.ExtScriptContext.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait that allows generating a key with the default options"><meta name="keywords" content="rust, rustlang, rust-lang, GeneratableDefaultOptions"><title>GeneratableDefaultOptions in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">GeneratableDefaultOptions</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.generate_default">generate_default</a><a href="#method.generate_with_entropy_default">generate_with_entropy_default</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="GeneratableDefaultOptions" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">GeneratableDefaultOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#643-659" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait GeneratableDefaultOptions<Ctx>: <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Self as <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx>>::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>, </span>{
- fn <a href="#method.generate_with_entropy_default" class="fnname">generate_with_entropy_default</a>(<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>> { ... }
-<div class="item-spacer"></div> fn <a href="#method.generate_default" class="fnname">generate_default</a>() -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>> { ... }
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait that allows generating a key with the default options"><meta name="keywords" content="rust, rustlang, rust-lang, GeneratableDefaultOptions"><title>GeneratableDefaultOptions in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">GeneratableDefaultOptions</a></h2><div class="sidebar-elems"><section><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.generate_default">generate_default</a></li><li><a href="#method.generate_with_entropy_default">generate_with_entropy_default</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">GeneratableDefaultOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#643-659">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait GeneratableDefaultOptions<Ctx>: <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> <Self as <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx>>::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>,</span>{
+ fn <a href="#method.generate_with_entropy_default" class="fn">generate_with_entropy_default</a>(<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>> { ... }
+<span class="item-spacer"></span> fn <a href="#method.generate_default" class="fn">generate_default</a>() -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait that allows generating a key with the default options</p>
<p>This trait is automatically implemented if the <a href="trait.GeneratableKey.html#associatedtype.Options" title="GeneratableKey::Options"><code>GeneratableKey::Options</code></a> implements <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="Default"><code>Default</code></a>.</p>
-</div></details><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.generate_with_entropy_default" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#649-653" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.generate_with_entropy_default" class="fnname">generate_with_entropy_default</a>(<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></summary><div class="docblock"><p>Generate a key with the default options and a given entropy</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.generate_default" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#656-658" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.generate_default" class="fnname">generate_default</a>() -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></summary><div class="docblock"><p>Generate a key with the default options and a random entropy</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-GeneratableDefaultOptions%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#663-669" title="goto source code">source</a></div><a href="#impl-GeneratableDefaultOptions%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx, K> <a class="trait" href="trait.GeneratableDefaultOptions.html" title="trait bdk::keys::GeneratableDefaultOptions">GeneratableDefaultOptions</a><Ctx> for K <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx>,<br> <K as <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx>>::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>, </span></h3></div><div class="docblock"><p>Automatic implementation of <a href="trait.GeneratableDefaultOptions.html" title="GeneratableDefaultOptions"><code>GeneratableDefaultOptions</code></a> for <a href="trait.GeneratableKey.html" title="GeneratableKey"><code>GeneratableKey</code></a>s where
+</div></details><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.generate_with_entropy_default" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#649-653">source</a><h4 class="code-header">fn <a href="#method.generate_with_entropy_default" class="fn">generate_with_entropy_default</a>(<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></summary><div class="docblock"><p>Generate a key with the default options and a given entropy</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.generate_default" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#656-658">source</a><h4 class="code-header">fn <a href="#method.generate_default" class="fn">generate_default</a>() -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></summary><div class="docblock"><p>Generate a key with the default options and a random entropy</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-GeneratableDefaultOptions%3CCtx%3E-for-K" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#663-669">source</a><a href="#impl-GeneratableDefaultOptions%3CCtx%3E-for-K" class="anchor">§</a><h3 class="code-header">impl<Ctx, K> <a class="trait" href="trait.GeneratableDefaultOptions.html" title="trait bdk::keys::GeneratableDefaultOptions">GeneratableDefaultOptions</a><Ctx> for K<span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx>,<br> <K as <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx>>::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>,</span></h3></section><div class="docblock"><p>Automatic implementation of <a href="trait.GeneratableDefaultOptions.html" title="GeneratableDefaultOptions"><code>GeneratableDefaultOptions</code></a> for <a href="trait.GeneratableKey.html" title="GeneratableKey"><code>GeneratableKey</code></a>s where
<code>Options</code> implements <code>Default</code></p>
-</div></div><script type="text/javascript" src="../../implementors/bdk/keys/trait.GeneratableDefaultOptions.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><script src="../../implementors/bdk/keys/trait.GeneratableDefaultOptions.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for keys that can be generated"><meta name="keywords" content="rust, rustlang, rust-lang, GeneratableKey"><title>GeneratableKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">GeneratableKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Entropy">Entropy</a><a href="#associatedtype.Error">Error</a><a href="#associatedtype.Options">Options</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.generate_with_entropy">generate_with_entropy</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.generate">generate</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-GeneratableKey%3CCtx%3E-for-ExtendedPrivKey">ExtendedPrivKey</a><a href="#impl-GeneratableKey%3CCtx%3E-for-PrivateKey">PrivateKey</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="GeneratableKey" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">GeneratableKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#615-638" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait GeneratableKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
- type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for keys that can be generated"><meta name="keywords" content="rust, rustlang, rust-lang, GeneratableKey"><title>GeneratableKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">GeneratableKey</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Entropy">Entropy</a></li><li><a href="#associatedtype.Error">Error</a></li><li><a href="#associatedtype.Options">Options</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.generate_with_entropy">generate_with_entropy</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.generate">generate</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-GeneratableKey%3CCtx%3E-for-ExtendedPrivKey">ExtendedPrivKey</a></li><li><a href="#impl-GeneratableKey%3CCtx%3E-for-PrivateKey">PrivateKey</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">GeneratableKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#615-638">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait GeneratableKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
+ type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>;
type <a href="#associatedtype.Options" class="associatedtype">Options</a>;
type <a href="#associatedtype.Error" class="associatedtype">Error</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
- fn <a href="#tymethod.generate_with_entropy" class="fnname">generate_with_entropy</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>, <br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>>;
- fn <a href="#method.generate" class="fnname">generate</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>> { ... }
+ fn <a href="#tymethod.generate_with_entropy" class="fn">generate_with_entropy</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>,<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>>;
+
+ fn <a href="#method.generate" class="fn">generate</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for keys that can be generated</p>
<p>The same rules about <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a> and <a href="type.ValidNetworks.html" title="ValidNetworks"><code>ValidNetworks</code></a> from <a href="trait.IntoDescriptorKey.html" title="IntoDescriptorKey"><code>IntoDescriptorKey</code></a> apply.</p>
<p>This trait is particularly useful when combined with <a href="trait.DerivableKey.html" title="DerivableKey"><code>DerivableKey</code></a>: if <code>Self</code>
implements it, the returned <a href="struct.GeneratedKey.html" title="GeneratedKey"><code>GeneratedKey</code></a> will also implement it. The same is true for
<a href="trait.IntoDescriptorKey.html" title="IntoDescriptorKey"><code>IntoDescriptorKey</code></a>: the generated keys can be directly used in descriptors if <code>Self</code> is also
<a href="trait.IntoDescriptorKey.html" title="IntoDescriptorKey"><code>IntoDescriptorKey</code></a>.</p>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Entropy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#617" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a></h4></div></summary><div class="docblock"><p>Type specifying the amount of entropy required e.g. <code>[u8;32]</code></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Options" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#620" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a></h4></div></summary><div class="docblock"><p>Extra options required by the <code>generate_with_entropy</code></p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#622" title="goto source code">source</a></div><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></div></summary><div class="docblock"><p>Returned error in case of failure</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.generate_with_entropy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#625-628" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.generate_with_entropy" class="fnname">generate_with_entropy</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>, <br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></summary><div class="docblock"><p>Generate a key given the extra options and the entropy</p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.generate" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#631-637" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.generate" class="fnname">generate</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></summary><div class="docblock"><p>Generate a key given the options with a random entropy</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-GeneratableKey%3CCtx%3E-for-ExtendedPrivKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#671-685" title="goto source code">source</a></div><a href="#impl-GeneratableKey%3CCtx%3E-for-ExtendedPrivKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for ExtendedPrivKey</h3></div></summary><div class="impl-items"><div id="associatedtype.Entropy-1" class="type trait-impl has-srclink"><a href="#associatedtype.Entropy-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 32]</a></h4></div><div id="associatedtype.Options-1" class="type trait-impl has-srclink"><a href="#associatedtype.Options-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></div><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a> = Error</h4></div><div id="method.generate_with_entropy" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#677-684" title="goto source code">source</a></div><a href="#method.generate_with_entropy" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.generate_with_entropy" class="fnname">generate_with_entropy</a>(<br> _: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>, <br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-GeneratableKey%3CCtx%3E-for-PrivateKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#702-722" title="goto source code">source</a></div><a href="#impl-GeneratableKey%3CCtx%3E-for-PrivateKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for PrivateKey</h3></div></summary><div class="impl-items"><div id="associatedtype.Entropy-2" class="type trait-impl has-srclink"><a href="#associatedtype.Entropy-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 32]</a></h4></div><div id="associatedtype.Options-2" class="type trait-impl has-srclink"><a href="#associatedtype.Options-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a> = <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h4></div><div id="associatedtype.Error-2" class="type trait-impl has-srclink"><a href="#associatedtype.Error-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a> = Error</h4></div><div id="method.generate_with_entropy-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#708-721" title="goto source code">source</a></div><a href="#method.generate_with_entropy-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.generate_with_entropy" class="fnname">generate_with_entropy</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>, <br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-GeneratableKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/bip39.rs.html#134-149" title="goto source code">source</a></div><a href="#impl-GeneratableKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for <a class="struct" href="bip39/struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>keys-bip39</code></strong> only.</div></div></div></summary><div class="impl-items"><div id="associatedtype.Entropy-3" class="type trait-impl has-srclink"><a href="#associatedtype.Entropy-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 32]</a></h4></div><div id="associatedtype.Options-3" class="type trait-impl has-srclink"><a href="#associatedtype.Options-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="bip39/enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a>, <a class="enum" href="bip39/enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h4></div><div id="associatedtype.Error-3" class="type trait-impl has-srclink"><a href="#associatedtype.Error-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="bip39/enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></div></div></details></div><script type="text/javascript" src="../../implementors/bdk/keys/trait.GeneratableKey.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Entropy" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#617">source</a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a></h4></section></summary><div class="docblock"><p>Type specifying the amount of entropy required e.g. <code>[u8;32]</code></p>
+</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Options" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#620">source</a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a></h4></section></summary><div class="docblock"><p>Extra options required by the <code>generate_with_entropy</code></p>
+</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#622">source</a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Returned error in case of failure</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.generate_with_entropy" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#625-628">source</a><h4 class="code-header">fn <a href="#tymethod.generate_with_entropy" class="fn">generate_with_entropy</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>,<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></summary><div class="docblock"><p>Generate a key given the extra options and the entropy</p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.generate" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#631-637">source</a><h4 class="code-header">fn <a href="#method.generate" class="fn">generate</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></summary><div class="docblock"><p>Generate a key given the options with a random entropy</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-GeneratableKey%3CCtx%3E-for-ExtendedPrivKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#671-685">source</a><a href="#impl-GeneratableKey%3CCtx%3E-for-ExtendedPrivKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for ExtendedPrivKey</h3></section></summary><div class="impl-items"><section id="associatedtype.Entropy-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Entropy-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a> = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">32</a>]</h4></section><section id="associatedtype.Options-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Options-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a> = Error</h4></section><section id="method.generate_with_entropy" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#677-684">source</a><a href="#method.generate_with_entropy" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.generate_with_entropy" class="fn">generate_with_entropy</a>(<br> _: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>,<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-GeneratableKey%3CCtx%3E-for-PrivateKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#702-722">source</a><a href="#impl-GeneratableKey%3CCtx%3E-for-PrivateKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for PrivateKey</h3></section></summary><div class="impl-items"><section id="associatedtype.Entropy-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Entropy-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a> = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">32</a>]</h4></section><section id="associatedtype.Options-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Options-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a> = <a class="struct" href="struct.PrivateKeyGenerateOptions.html" title="struct bdk::keys::PrivateKeyGenerateOptions">PrivateKeyGenerateOptions</a></h4></section><section id="associatedtype.Error-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a> = Error</h4></section><section id="method.generate_with_entropy-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#708-721">source</a><a href="#method.generate_with_entropy-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.generate_with_entropy" class="fn">generate_with_entropy</a>(<br> options: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Options" title="type bdk::keys::GeneratableKey::Options">Options</a>,<br> entropy: Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Entropy" title="type bdk::keys::GeneratableKey::Entropy">Entropy</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><Self, Ctx>, Self::<a class="associatedtype" href="trait.GeneratableKey.html#associatedtype.Error" title="type bdk::keys::GeneratableKey::Error">Error</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-GeneratableKey%3CCtx%3E-for-Mnemonic" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/bip39.rs.html#134-149">source</a><a href="#impl-GeneratableKey%3CCtx%3E-for-Mnemonic" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.GeneratableKey.html" title="trait bdk::keys::GeneratableKey">GeneratableKey</a><Ctx> for <a class="struct" href="bip39/struct.Mnemonic.html" title="struct bdk::keys::bip39::Mnemonic">Mnemonic</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>keys-bip39</code></strong> only.</div></span></section></summary><div class="impl-items"><section id="associatedtype.Entropy-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Entropy-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Entropy" class="associatedtype">Entropy</a> = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">32</a>]</h4></section><section id="associatedtype.Options-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Options-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Options" class="associatedtype">Options</a> = (<a class="enum" href="bip39/enum.WordCount.html" title="enum bdk::keys::bip39::WordCount">WordCount</a>, <a class="enum" href="bip39/enum.Language.html" title="enum bdk::keys::bip39::Language">Language</a>)</h4></section><section id="associatedtype.Error-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="bip39/enum.Error.html" title="enum bdk::keys::bip39::Error">Error</a>></h4></section></div></details></div><script src="../../implementors/bdk/keys/trait.GeneratableKey.js" data-ignore-extern-crates="bitcoin,bip39" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for objects that can be turned into a public or secret [`DescriptorKey`]"><meta name="keywords" content="rust, rustlang, rust-lang, IntoDescriptorKey"><title>IntoDescriptorKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">IntoDescriptorKey</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.into_descriptor_key">into_descriptor_key</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-%26str">&str</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20DerivationPath)">(T, DerivationPath)</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20KeySource%2C%20DerivationPath)">(T, KeySource, DerivationPath)</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PrivateKey">PrivateKey</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PublicKey">PublicKey</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-XOnlyPublicKey">XOnlyPublicKey</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="IntoDescriptorKey" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">IntoDescriptorKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#302-305" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait IntoDescriptorKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
- fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for objects that can be turned into a public or secret [`DescriptorKey`]"><meta name="keywords" content="rust, rustlang, rust-lang, IntoDescriptorKey"><title>IntoDescriptorKey in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">IntoDescriptorKey</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.into_descriptor_key">into_descriptor_key</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-%26str">&str</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20DerivationPath)">(T, DerivationPath)</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20KeySource%2C%20DerivationPath)">(T, KeySource, DerivationPath)</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PrivateKey">PrivateKey</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PublicKey">PublicKey</a></li><li><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-XOnlyPublicKey">XOnlyPublicKey</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">IntoDescriptorKey</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#302-305">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait IntoDescriptorKey<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
+ fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for objects that can be turned into a public or secret <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a></p>
<p>The generic type <code>Ctx</code> is used to define the context in which the key is valid: some key
formats, like the mnemonics used by Electrum wallets, encode internally whether the wallet is
<p>Keys also have control over the networks they support: constructing the return object with
<a href="enum.DescriptorKey.html#method.from_public" title="DescriptorKey::from_public"><code>DescriptorKey::from_public</code></a> or <a href="enum.DescriptorKey.html#method.from_secret" title="DescriptorKey::from_secret"><code>DescriptorKey::from_secret</code></a> allows to specify a set of
<a href="type.ValidNetworks.html" title="ValidNetworks"><code>ValidNetworks</code></a>.</p>
-<h3 id="examples" class="section-header"><a href="#examples">Examples</a></h3>
+<h3 id="examples"><a href="#examples">Examples</a></h3>
<p>Key type valid in any context:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin::PublicKey</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin::PublicKey;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">KeyError</span>, <span class="ident">ScriptContext</span>};
+<span class="kw">use </span>bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError, ScriptContext};
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MyKeyType</span> {
- <span class="ident">pubkey</span>: <span class="ident">PublicKey</span>,
+<span class="kw">pub struct </span>MyKeyType {
+ pubkey: PublicKey,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MyKeyType</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">pubkey</span>.<span class="ident">into_descriptor_key</span>()
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>MyKeyType {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="self">self</span>.pubkey.into_descriptor_key()
}
}</code></pre></div>
<p>Key type that is only valid on mainnet:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin::PublicKey</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin::PublicKey;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{
- <span class="ident">mainnet_network</span>, <span class="ident">DescriptorKey</span>, <span class="ident">DescriptorPublicKey</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">KeyError</span>,
- <span class="ident">ScriptContext</span>, <span class="ident">SinglePub</span>, <span class="ident">SinglePubKey</span>,
+<span class="kw">use </span>bdk::keys::{
+ mainnet_network, DescriptorKey, DescriptorPublicKey, IntoDescriptorKey, KeyError,
+ ScriptContext, SinglePub, SinglePubKey,
};
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MyKeyType</span> {
- <span class="ident">pubkey</span>: <span class="ident">PublicKey</span>,
+<span class="kw">pub struct </span>MyKeyType {
+ pubkey: PublicKey,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MyKeyType</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">DescriptorKey::from_public</span>(
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">origin</span>: <span class="prelude-val">None</span>,
- <span class="ident">key</span>: <span class="ident">SinglePubKey::FullKey</span>(<span class="self">self</span>.<span class="ident">pubkey</span>),
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>MyKeyType {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="prelude-val">Ok</span>(DescriptorKey::from_public(
+ DescriptorPublicKey::Single(SinglePub {
+ origin: <span class="prelude-val">None</span>,
+ key: SinglePubKey::FullKey(<span class="self">self</span>.pubkey),
}),
- <span class="ident">mainnet_network</span>(),
+ mainnet_network(),
))
}
}</code></pre></div>
<p>Key type that internally encodes in which context it’s valid. The context is checked at runtime:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin::PublicKey</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin::PublicKey;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">ExtScriptContext</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">KeyError</span>, <span class="ident">ScriptContext</span>};
+<span class="kw">use </span>bdk::keys::{DescriptorKey, ExtScriptContext, IntoDescriptorKey, KeyError, ScriptContext};
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MyKeyType</span> {
- <span class="ident">is_legacy</span>: <span class="ident">bool</span>,
- <span class="ident">pubkey</span>: <span class="ident">PublicKey</span>,
+<span class="kw">pub struct </span>MyKeyType {
+ is_legacy: bool,
+ pubkey: PublicKey,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">+</span> <span class="lifetime">'static</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MyKeyType</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">Ctx::is_legacy</span>() <span class="op">==</span> <span class="self">self</span>.<span class="ident">is_legacy</span> {
- <span class="self">self</span>.<span class="ident">pubkey</span>.<span class="ident">into_descriptor_key</span>()
- } <span class="kw">else</span> {
- <span class="prelude-val">Err</span>(<span class="ident">KeyError::InvalidScriptContext</span>)
+<span class="kw">impl</span><Ctx: ScriptContext + <span class="lifetime">'static</span>> IntoDescriptorKey<Ctx> <span class="kw">for </span>MyKeyType {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">if </span>Ctx::is_legacy() == <span class="self">self</span>.is_legacy {
+ <span class="self">self</span>.pubkey.into_descriptor_key()
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(KeyError::InvalidScriptContext)
}
}
}</code></pre></div>
are misused. In this case, the “segwit-only” key is used to build a <code>pkh()</code> descriptor, which
makes the compiler (correctly) fail.</p>
-<div class='information'><div class='tooltip compile_fail'>ⓘ</div></div><div class="example-wrap"><pre class="rust rust-example-rendered compile_fail"><code><span class="kw">use</span> <span class="ident">bdk::bitcoin::PublicKey</span>;
-<span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<div class="example-wrap compile_fail"><div class='tooltip'>ⓘ</div><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bdk::bitcoin::PublicKey;
+<span class="kw">use </span>std::str::FromStr;
-<span class="kw">use</span> <span class="ident">bdk::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">KeyError</span>};
+<span class="kw">use </span>bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError};
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MySegwitOnlyKeyType</span> {
- <span class="ident">pubkey</span>: <span class="ident">PublicKey</span>,
+<span class="kw">pub struct </span>MySegwitOnlyKeyType {
+ pubkey: PublicKey,
}
-<span class="kw">impl</span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">bdk::miniscript::Segwitv0</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MySegwitOnlyKeyType</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">bdk::miniscript::Segwitv0</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">pubkey</span>.<span class="ident">into_descriptor_key</span>()
+<span class="kw">impl </span>IntoDescriptorKey<bdk::miniscript::Segwitv0> <span class="kw">for </span>MySegwitOnlyKeyType {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<bdk::miniscript::Segwitv0>, KeyError> {
+ <span class="self">self</span>.pubkey.into_descriptor_key()
}
}
-<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MySegwitOnlyKeyType</span> {
- <span class="ident">pubkey</span>: <span class="ident">PublicKey::from_str</span>(<span class="string">"..."</span>)<span class="question-mark">?</span>,
+<span class="kw">let </span>key = MySegwitOnlyKeyType {
+ pubkey: PublicKey::from_str(<span class="string">"..."</span>)<span class="question-mark">?</span>,
};
-<span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="macro">bdk::descriptor!</span>(<span class="ident">pkh</span>(<span class="ident">key</span>))<span class="question-mark">?</span>;
-<span class="comment">// ^^^^^ changing this to `wpkh` would make it compile</span>
-</code></pre></div>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.into_descriptor_key" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#304" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></summary><div class="docblock"><p>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20DerivationPath)" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#724-730" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20DerivationPath)" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, T: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>T, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h3></div></summary><div class="impl-items"><div id="method.into_descriptor_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#727-729" title="goto source code">source</a></div><a href="#method.into_descriptor_key" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20KeySource%2C%20DerivationPath)" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#732-738" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20KeySource%2C%20DerivationPath)" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, T: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>T, KeySource, DerivationPath<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></h3></div></summary><div class="impl-items"><div id="method.into_descriptor_key-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#735-737" title="goto source code">source</a></div><a href="#method.into_descriptor_key-1" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoDescriptorKey%3CCtx%3E-for-PublicKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#858-866" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PublicKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for PublicKey</h3></div></summary><div class="impl-items"><div id="method.into_descriptor_key-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#859-865" title="goto source code">source</a></div><a href="#method.into_descriptor_key-2" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoDescriptorKey%3CCtx%3E-for-XOnlyPublicKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#868-876" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-XOnlyPublicKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for XOnlyPublicKey</h3></div></summary><div class="impl-items"><div id="method.into_descriptor_key-3" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#869-875" title="goto source code">source</a></div><a href="#method.into_descriptor_key-3" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoDescriptorKey%3CCtx%3E-for-%26str" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#896-902" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-%26str" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h3></div></summary><div class="impl-items"><div id="method.into_descriptor_key-4" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#897-901" title="goto source code">source</a></div><a href="#method.into_descriptor_key-4" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IntoDescriptorKey%3CCtx%3E-for-PrivateKey" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#904-912" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PrivateKey" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for PrivateKey</h3></div></summary><div class="impl-items"><div id="method.into_descriptor_key-5" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#905-911" title="goto source code">source</a></div><a href="#method.into_descriptor_key-5" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fnname">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-IntoDescriptorKey%3CCtx%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#596-605" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E" class="anchor"></a><h3 class="code-header in-band">impl<Ctx, K> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx> <span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx>, </span></h3></div><div id="impl-IntoDescriptorKey%3CCtx%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#836-840" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-1" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></div><div class="docblock"><p>The “identity” conversion is used internally by some <code>bdk::fragment</code>s</p>
-</div><div id="impl-IntoDescriptorKey%3CCtx%3E-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#842-856" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-2" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></div><div id="impl-IntoDescriptorKey%3CCtx%3E-3" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#878-894" title="goto source code">source</a></div><a href="#impl-IntoDescriptorKey%3CCtx%3E-3" class="anchor"></a><h3 class="code-header in-band">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></div></div><script type="text/javascript" src="../../implementors/bdk/keys/trait.IntoDescriptorKey.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="kw">let </span>(descriptor, <span class="kw">_</span>, <span class="kw">_</span>) = <span class="macro">bdk::descriptor!</span>(pkh(key))<span class="question-mark">?</span>;
+<span class="comment">// ^^^^^ changing this to `wpkh` would make it compile
+</span></code></pre></div>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.into_descriptor_key" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#304">source</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></summary><div class="docblock"><p>Turn the key into a <a href="enum.DescriptorKey.html" title="DescriptorKey"><code>DescriptorKey</code></a> within the requested <a href="trait.ScriptContext.html" title="ScriptContext"><code>ScriptContext</code></a></p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20DerivationPath)" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#724-730">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20DerivationPath)" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, T: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for (T, DerivationPath)</h3></section></summary><div class="impl-items"><section id="method.into_descriptor_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#727-729">source</a><a href="#method.into_descriptor_key" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20KeySource%2C%20DerivationPath)" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#732-738">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-(T%2C%20KeySource%2C%20DerivationPath)" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>, T: <a class="trait" href="trait.DerivableKey.html" title="trait bdk::keys::DerivableKey">DerivableKey</a><Ctx>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for (T, KeySource, DerivationPath)</h3></section></summary><div class="impl-items"><section id="method.into_descriptor_key-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#735-737">source</a><a href="#method.into_descriptor_key-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-PublicKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#858-866">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PublicKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for PublicKey</h3></section></summary><div class="impl-items"><section id="method.into_descriptor_key-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#859-865">source</a><a href="#method.into_descriptor_key-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-XOnlyPublicKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#868-876">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-XOnlyPublicKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for XOnlyPublicKey</h3></section></summary><div class="impl-items"><section id="method.into_descriptor_key-3" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#869-875">source</a><a href="#method.into_descriptor_key-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-%26str" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#896-902">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-%26str" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h3></section></summary><div class="impl-items"><section id="method.into_descriptor_key-4" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#897-901">source</a><a href="#method.into_descriptor_key-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoDescriptorKey%3CCtx%3E-for-PrivateKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#904-912">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-PrivateKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for PrivateKey</h3></section></summary><div class="impl-items"><section id="method.into_descriptor_key-5" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#905-911">source</a><a href="#method.into_descriptor_key-5" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.into_descriptor_key" class="fn">into_descriptor_key</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx>, <a class="enum" href="enum.KeyError.html" title="enum bdk::keys::KeyError">KeyError</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#596-605">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx, K> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="struct" href="struct.GeneratedKey.html" title="struct bdk::keys::GeneratedKey">GeneratedKey</a><K, Ctx><span class="where fmt-newline">where<br> Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>,<br> K: <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx>,</span></h3></section><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorKey%3CCtx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#836-840">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorKey%3CCtx%3E" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorKey.html" title="enum bdk::keys::DescriptorKey">DescriptorKey</a><Ctx></h3></section><div class="docblock"><p>The “identity” conversion is used internally by some <code>bdk::fragment</code>s</p>
+</div><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#842-856">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorPublicKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a></h3></section><section id="impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorSecretKey" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/keys/mod.rs.html#878-894">source</a><a href="#impl-IntoDescriptorKey%3CCtx%3E-for-DescriptorSecretKey" class="anchor">§</a><h3 class="code-header">impl<Ctx: <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a>> <a class="trait" href="trait.IntoDescriptorKey.html" title="trait bdk::keys::IntoDescriptorKey">IntoDescriptorKey</a><Ctx> for <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a></h3></section></div><script src="../../implementors/bdk/keys/trait.IntoDescriptorKey.js" data-ignore-extern-crates="secp256k1,miniscript,std,bitcoin" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"><meta name="keywords" content="rust, rustlang, rust-lang, ScriptContext"><title>ScriptContext in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ScriptContext</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><div class="sidebar-links"><a href="#associatedtype.Key">Key</a></div><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.check_terminal_non_malleable">check_terminal_non_malleable</a><a href="#tymethod.max_satisfaction_size">max_satisfaction_size</a><a href="#tymethod.name_str">name_str</a><a href="#tymethod.pk_len">pk_len</a><a href="#tymethod.sig_type">sig_type</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.check_global_consensus_validity">check_global_consensus_validity</a><a href="#method.check_global_policy_validity">check_global_policy_validity</a><a href="#method.check_global_validity">check_global_validity</a><a href="#method.check_local_consensus_validity">check_local_consensus_validity</a><a href="#method.check_local_policy_validity">check_local_policy_validity</a><a href="#method.check_local_validity">check_local_validity</a><a href="#method.check_witness">check_witness</a><a href="#method.other_top_level_checks">other_top_level_checks</a><a href="#method.top_level_checks">top_level_checks</a><a href="#method.top_level_type_check">top_level_type_check</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-ScriptContext-for-BareCtx">BareCtx</a><a href="#impl-ScriptContext-for-Tap">Tap</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="ScriptContext" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">ScriptContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait ScriptContext: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + Sealed {
- type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey + MiniscriptKey;
-<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 15 methods</span></summary> fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
-<div class="item-spacer"></div> fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
-<div class="item-spacer"></div> fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType;
-<div class="item-spacer"></div> fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
-<div class="item-spacer"></div> fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"><meta name="keywords" content="rust, rustlang, rust-lang, ScriptContext"><title>ScriptContext in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ScriptContext</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Key">Key</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.check_terminal_non_malleable">check_terminal_non_malleable</a></li><li><a href="#tymethod.max_satisfaction_size">max_satisfaction_size</a></li><li><a href="#tymethod.name_str">name_str</a></li><li><a href="#tymethod.pk_len">pk_len</a></li><li><a href="#tymethod.sig_type">sig_type</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.check_global_consensus_validity">check_global_consensus_validity</a></li><li><a href="#method.check_global_policy_validity">check_global_policy_validity</a></li><li><a href="#method.check_global_validity">check_global_validity</a></li><li><a href="#method.check_local_consensus_validity">check_local_consensus_validity</a></li><li><a href="#method.check_local_policy_validity">check_local_policy_validity</a></li><li><a href="#method.check_local_validity">check_local_validity</a></li><li><a href="#method.check_witness">check_witness</a></li><li><a href="#method.other_top_level_checks">other_top_level_checks</a></li><li><a href="#method.top_level_checks">top_level_checks</a></li><li><a href="#method.top_level_type_check">top_level_type_check</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="trait" href="#">ScriptContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait ScriptContext: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><Self> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + Sealed {
+ type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey;
- fn <a href="#method.check_witness" class="fnname">check_witness</a><Pk>(<br> _witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 15 methods</span></summary> fn <a href="#tymethod.check_terminal_non_malleable" class="fn">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
+<span class="item-spacer"></span> fn <a href="#tymethod.max_satisfaction_size" class="fn">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
+<span class="item-spacer"></span> fn <a href="#tymethod.sig_type" class="fn">sig_type</a>() -> SigType;
+<span class="item-spacer"></span> fn <a href="#tymethod.pk_len" class="fn">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br> <span class="where">where<br> Pk: MiniscriptKey</span>;
+<span class="item-spacer"></span> fn <a href="#tymethod.name_str" class="fn">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>;
+
+ fn <a href="#method.check_witness" class="fn">check_witness</a><Pk>(<br> _witness: &[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>]<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_global_consensus_validity" class="fn">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_global_policy_validity" class="fn">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_local_consensus_validity" class="fn">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_local_policy_validity" class="fn">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_global_validity" class="fnname">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_global_validity" class="fn">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.check_local_validity" class="fnname">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.check_local_validity" class="fn">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.top_level_type_check" class="fnname">top_level_type_check</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.top_level_type_check" class="fn">top_level_type_check</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.other_top_level_checks" class="fn">other_top_level_checks</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
-<div class="item-spacer"></div> fn <a href="#method.top_level_checks" class="fnname">top_level_checks</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
+<span class="item-spacer"></span> fn <a href="#method.top_level_checks" class="fn">top_level_checks</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><br> <span class="where">where<br> Pk: MiniscriptKey</span>,
{ ... }
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The ScriptContext for Miniscript. Additional type information associated with
miniscript that is used for carrying out checks that dependent on the
context under which the script is used.
For example, disallowing uncompressed keys in Segwit context</p>
-</div></details><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Key" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey + MiniscriptKey</h4></div></summary><div class="docblock"><p>The consensus key associated with the type. Must be a parseable key</p>
-</div></details></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.check_terminal_non_malleable" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on ScriptContext, fragments can be malleable. For Example,
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Key" class="method has-srclink"><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a>: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey</h4></section></summary><div class="docblock"><p>The consensus key associated with the type. Must be a parseable key</p>
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.check_terminal_non_malleable" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.check_terminal_non_malleable" class="fn">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on ScriptContext, fragments can be malleable. For Example,
under Legacy context, PkH is malleable because it is possible to
estimate the cost of satisfaction because of compressed keys
This is currently only used in compiler code for removing malleable
This does NOT recursively check if the children of the fragment are
valid or not. Since the compilation proceeds in a leaf to root fashion,
a recursive check is unnecessary.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.max_satisfaction_size" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on script context, the size of a satifaction witness may slightly differ.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.sig_type" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div></summary><div class="docblock"><p>The type of signature required for satisfaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.pk_len" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Get the len of public key when serialized based on context
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.max_satisfaction_size" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.max_satisfaction_size" class="fn">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on script context, the size of a satifaction witness may slightly differ.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.sig_type" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.sig_type" class="fn">sig_type</a>() -> SigType</h4></section></summary><div class="docblock"><p>The type of signature required for satisfaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.pk_len" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.pk_len" class="fn">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Get the len of public key when serialized based on context
Note that this includes the serialization prefix. Returns
34/66 for Bare/Legacy based on key compressedness
34 for Segwitv0, 33 for Tap</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.name_str" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="docblock"><p>Local helper function to display error messages with context</p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.check_witness" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_witness" class="fnname">check_witness</a><Pk>(<br> _witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check whether the given satisfaction is valid under the ScriptContext
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.name_str" class="method has-srclink"><h4 class="code-header">fn <a href="#tymethod.name_str" class="fn">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Local helper function to display error messages with context</p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_witness" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_witness" class="fn">check_witness</a><Pk>(<br> _witness: &[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>>]<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check whether the given satisfaction is valid under the ScriptContext
For example, segwit satisfactions may fail if the witness len is more
3600 or number of stack elements are more than 100.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_global_consensus_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on script Context, some of the Terminals might not
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_consensus_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_global_consensus_validity" class="fn">check_global_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on script Context, some of the Terminals might not
be valid under the current consensus rules.
Or some of the script resource limits may have been exceeded.
These miniscripts would never be accepted by the Bitcoin network and hence
In LegacyP2SH context, scripts above 520 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
This does <em>NOT</em> recursively check the miniscript fragments.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_global_policy_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Depending on script Context, some of the script resource limits
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_policy_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_global_policy_validity" class="fn">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Depending on script Context, some of the script resource limits
may have been exceeded under the current bitcoin core policy rules
These miniscripts would never be accepted by the Bitcoin network and hence
it is safe to discard them. (unless explicitly disabled by non-standard flag)
scripts over 3600 bytes are invalid.
Post Tapscript upgrade, this would have to consider other nodes.
This does <em>NOT</em> recursively check the miniscript fragments.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_local_consensus_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Consensus rules at the Miniscript satisfaction time.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_consensus_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_local_consensus_validity" class="fn">check_local_consensus_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Consensus rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_local_policy_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Policy rules at the Miniscript satisfaction time.
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_policy_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_local_policy_validity" class="fn">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Policy rules at the Miniscript satisfaction time.
It is possible that some paths of miniscript may exceed resource limits
and our current satisfier and lifting analysis would not work correctly.
For example, satisfaction path in Legacy context scriptSig more
than 1650 bytes</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_global_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_global_validity" class="fnname">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules that are not based
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_global_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_global_validity" class="fn">check_global_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules that are not based
satisfaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.check_local_validity" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.check_local_validity" class="fnname">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules including the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_local_validity" class="method has-srclink"><h4 class="code-header">fn <a href="#method.check_local_validity" class="fn">check_local_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check the consensus + policy(if not disabled) rules including the
ones for satisfaction</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.top_level_type_check" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.top_level_type_check" class="fnname">top_level_type_check</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check whether the top-level is type B</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.other_top_level_checks" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Other top level checks that are context specific</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="method.top_level_checks" class="method has-srclink"><div class="rightside"></div><h4 class="code-header">fn <a href="#method.top_level_checks" class="fnname">top_level_checks</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div></summary><div class="docblock"><p>Check top level consensus rules.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext-for-BareCtx" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext-for-BareCtx" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for BareCtx</h3></div></summary><div class="impl-items"><div id="associatedtype.Key-1" class="type trait-impl has-srclink"><a href="#associatedtype.Key-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div><div id="method.check_terminal_non_malleable" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_terminal_non_malleable" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_global_consensus_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_consensus_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_local_consensus_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_consensus_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.other_top_level_checks-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.other_top_level_checks-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.other_top_level_checks" class="fnname">other_top_level_checks</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.max_satisfaction_size" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, BareCtx>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.pk_len" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.pk_len" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.name_str" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.name_str" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div><div id="method.sig_type" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.sig_type" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext-for-Tap" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext-for-Tap" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for Tap</h3></div></summary><div class="impl-items"><div id="associatedtype.Key-2" class="type trait-impl has-srclink"><a href="#associatedtype.Key-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = XOnlyPublicKey</h4></div><div id="method.check_terminal_non_malleable-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_terminal_non_malleable-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.check_terminal_non_malleable" class="fnname">check_terminal_non_malleable</a><Pk>(<br> _frag: &Terminal<Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_witness-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_witness-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_witness" class="fnname">check_witness</a><Pk>(<br> witness: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_global_consensus_validity-2" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_consensus_validity-2" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_global_consensus_validity" class="fnname">check_global_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_local_consensus_validity-2" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_consensus_validity-2" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_local_consensus_validity" class="fnname">check_local_consensus_validity</a><Pk>(<br> ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_global_policy_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_global_policy_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_global_policy_validity" class="fnname">check_global_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.check_local_policy_validity-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.check_local_policy_validity-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.check_local_policy_validity" class="fnname">check_local_policy_validity</a><Pk>(<br> _ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ScriptContextError> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.max_satisfaction_size-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.max_satisfaction_size-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.max_satisfaction_size" class="fnname">max_satisfaction_size</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Tap>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.sig_type-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.sig_type-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.sig_type" class="fnname">sig_type</a>() -> SigType</h4></div><div id="method.pk_len-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.pk_len-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.pk_len" class="fnname">pk_len</a><Pk>(_pk: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Pk) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Pk: MiniscriptKey, </span></h4></div><div id="method.name_str-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.name_str-1" class="anchor"></a><h4 class="code-header">pub fn <a href="#tymethod.name_str" class="fnname">name_str</a>() -> &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="../descriptor/enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Key-3" class="type trait-impl has-srclink"><a href="#associatedtype.Key-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-ScriptContext-1" class="impl has-srclink"><div class="rightside"></div><a href="#impl-ScriptContext-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="../descriptor/enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></div></summary><div class="impl-items"><div id="associatedtype.Key-4" class="type trait-impl has-srclink"><a href="#associatedtype.Key-4" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></div></div></details></div><script type="text/javascript" src="../../implementors/miniscript/miniscript/context/trait.ScriptContext.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_type_check" class="method has-srclink"><h4 class="code-header">fn <a href="#method.top_level_type_check" class="fn">top_level_type_check</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check whether the top-level is type B</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.other_top_level_checks" class="method has-srclink"><h4 class="code-header">fn <a href="#method.other_top_level_checks" class="fn">other_top_level_checks</a><Pk>(_ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Other top level checks that are context specific</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.top_level_checks" class="method has-srclink"><h4 class="code-header">fn <a href="#method.top_level_checks" class="fn">top_level_checks</a><Pk>(ms: &<a class="struct" href="../descriptor/struct.Miniscript.html" title="struct bdk::descriptor::Miniscript">Miniscript</a><Pk, Self>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error><span class="where fmt-newline">where<br> Pk: MiniscriptKey,</span></h4></section></summary><div class="docblock"><p>Check top level consensus rules.</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-Legacy" class="impl has-srclink"><a href="#impl-ScriptContext-for-Legacy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="../descriptor/enum.Legacy.html" title="enum bdk::descriptor::Legacy">Legacy</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Key-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-Segwitv0" class="impl has-srclink"><a href="#impl-ScriptContext-for-Segwitv0" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for <a class="enum" href="../descriptor/enum.Segwitv0.html" title="enum bdk::descriptor::Segwitv0">Segwitv0</a></h3></section></summary><div class="impl-items"><section id="associatedtype.Key-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-BareCtx" class="impl has-srclink"><a href="#impl-ScriptContext-for-BareCtx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for BareCtx</h3></section></summary><div class="impl-items"><section id="associatedtype.Key-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = PublicKey</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ScriptContext-for-Tap" class="impl has-srclink"><a href="#impl-ScriptContext-for-Tap" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ScriptContext.html" title="trait bdk::keys::ScriptContext">ScriptContext</a> for Tap</h3></section></summary><div class="impl-items"><section id="associatedtype.Key-4" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Key-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Key" class="associatedtype">Key</a> = XOnlyPublicKey</h4></section></div></details></div><script src="../../implementors/miniscript/miniscript/context/trait.ScriptContext.js" data-ignore-extern-crates="miniscript" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias type for a map of public key to secret key"><meta name="keywords" content="rust, rustlang, rust-lang, KeyMap"><title>KeyMap in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">KeyMap</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="KeyMap" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="type" href="#">KeyMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type KeyMap = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias type for a map of public key to secret key</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias type for a map of public key to secret key"><meta name="keywords" content="rust, rustlang, rust-lang, KeyMap"><title>KeyMap in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">KeyMap</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="type" href="#">KeyMap</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type KeyMap = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><<a class="enum" href="enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>, <a class="enum" href="enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RandomState.html" title="struct std::collections::hash::map::RandomState">RandomState</a>>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias type for a map of public key to secret key</p>
<p>This map is returned whenever a descriptor that contains secrets is parsed using
<a href="../descriptor/enum.Descriptor.html#method.parse_descriptor" title="Descriptor::parse_descriptor"><code>Descriptor::parse_descriptor</code></a>, since the descriptor will always only contain
public keys. This map allows looking up the corresponding secret key given a
public key from the descriptor.</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Set of valid networks for a key"><meta name="keywords" content="rust, rustlang, rust-lang, ValidNetworks"><title>ValidNetworks in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ValidNetworks</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a></h2><div id="sidebar-vars" data-name="ValidNetworks" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="type" href="#">ValidNetworks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#41" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type ValidNetworks = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><Network>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Set of valid networks for a key</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Set of valid networks for a key"><meta name="keywords" content="rust, rustlang, rust-lang, ValidNetworks"><title>ValidNetworks in bdk::keys - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ValidNetworks</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::keys</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../index.html">bdk</a>::<wbr><a href="index.html">keys</a>::<wbr><a class="type" href="#">ValidNetworks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/keys/mod.rs.html#41">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type ValidNetworks = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a><Network>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Set of valid networks for a key</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Macro to write full descriptors with code"><meta name="keywords" content="rust, rustlang, rust-lang, descriptor"><title>descriptor in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc macro"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="descriptor" data-ty="macro" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Macro <a href="index.html">bdk</a>::<wbr><a class="macro" href="#">descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/descriptor/dsl.rs.html#499-551" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><div class="example-wrap"><pre class="rust macro"><code><span class="macro">macro_rules!</span> <span class="ident">descriptor</span> {
- ( <span class="ident">bare</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">sh</span> ( <span class="ident">wsh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) ) => { ... };
- ( <span class="ident">shwsh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">pk</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">pkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">wpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">sh</span> ( <span class="ident">wpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) ) => { ... };
- ( <span class="ident">shwpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">sh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">wsh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">tr</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">tr</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>:<span class="ident">expr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">taptree</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Macro to write full descriptors with code"><meta name="keywords" content="rust, rustlang, rust-lang, descriptor"><title>descriptor in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc macro"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Macro <a href="index.html">bdk</a>::<wbr><a class="macro" href="#">descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/descriptor/dsl.rs.html#499-551">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><div class="example-wrap"><pre class="rust macro"><code><span class="macro">macro_rules! </span>descriptor {
+ ( bare ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => { ... };
+ ( sh ( wsh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) ) => { ... };
+ ( shwsh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => { ... };
+ ( pk ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( pkh ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( wpkh ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( sh ( wpkh ( <span class="macro-nonterminal">$key</span>:expr ) ) ) => { ... };
+ ( shwpkh ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( sh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => { ... };
+ ( wsh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => { ... };
+ ( tr ( <span class="macro-nonterminal">$internal_key</span>:expr ) ) => { ... };
+ ( tr ( <span class="macro-nonterminal">$internal_key</span>:expr, $( <span class="macro-nonterminal">$taptree</span>:tt )* ) ) => { ... };
}</code></pre></div>
</div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Macro to write full descriptors with code</p>
<p>This macro expands to a <code>Result</code> of
<a href="keys/trait.IntoDescriptorKey.html"><code>IntoDescriptorKey</code></a>. This means that keys can also be written inline as strings, but in that
case they must be wrapped in quotes, which is another difference compared to the standard
descriptor syntax.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
+<h3 id="example"><a href="#example">Example</a></h3>
<p>Signature plus timelock descriptor:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> (<span class="ident">my_descriptor</span>, <span class="ident">my_keys_map</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">bdk::descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wsh</span>(<span class="ident">and_v</span>(<span class="ident">v</span>:<span class="ident">pk</span>(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>),<span class="ident">older</span>(<span class="number">50</span>)))))<span class="question-mark">?</span>;</code></pre></div>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(my_descriptor, my_keys_map, networks) = <span class="macro">bdk::descriptor!</span>(sh(wsh(and_v(v:pk(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>),older(<span class="number">50</span>)))))<span class="question-mark">?</span>;</code></pre></div>
<hr />
<p>2-of-3 that becomes a 1-of-3 after a timelock has expired. Both <code>descriptor_a</code> and <code>descriptor_b</code> are equivalent: the first
syntax is more suitable for a fixed number of items known at compile time, while the other accepts a
<a href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="Vec"><code>Vec</code></a> of items, which makes it more suitable for writing dynamic descriptors.</p>
<p>They both produce the descriptor: <code>wsh(thresh(2,pk(...),s:pk(...),sndv:older(...)))</code></p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">my_key_1</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>my_key_1 = bitcoin::PublicKey::from_str(
<span class="string">"02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c"</span>,
)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">my_key_2</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">my_timelock</span> <span class="op">=</span> <span class="number">50</span>;
+<span class="kw">let </span>my_key_2 =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>my_timelock = <span class="number">50</span>;
-<span class="kw">let</span> (<span class="ident">descriptor_a</span>, <span class="ident">key_map_a</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">bdk::descriptor!</span> {
- <span class="ident">wsh</span> (
- <span class="ident">thresh</span>(<span class="number">2</span>, <span class="ident">pk</span>(<span class="ident">my_key_1</span>), <span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">my_key_2</span>), <span class="ident">s</span>:<span class="ident">n</span>:<span class="ident">d</span>:<span class="ident">v</span>:<span class="ident">older</span>(<span class="ident">my_timelock</span>))
+<span class="kw">let </span>(descriptor_a, key_map_a, networks) = <span class="macro">bdk::descriptor! </span>{
+ wsh (
+ thresh(<span class="number">2</span>, pk(my_key_1), s:pk(my_key_2), s:n:d:v:older(my_timelock))
)
}<span class="question-mark">?</span>;
-<span class="attribute">#[<span class="ident">rustfmt::skip</span>]</span>
-<span class="kw">let</span> <span class="ident">b_items</span> <span class="op">=</span> <span class="macro">vec!</span>[
- <span class="macro">bdk::fragment!</span>(<span class="ident">pk</span>(<span class="ident">my_key_1</span>))<span class="question-mark">?</span>,
- <span class="macro">bdk::fragment!</span>(<span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">my_key_2</span>))<span class="question-mark">?</span>,
- <span class="macro">bdk::fragment!</span>(<span class="ident">s</span>:<span class="ident">n</span>:<span class="ident">d</span>:<span class="ident">v</span>:<span class="ident">older</span>(<span class="ident">my_timelock</span>))<span class="question-mark">?</span>,
+<span class="attr">#[rustfmt::skip]
+</span><span class="kw">let </span>b_items = <span class="macro">vec!</span>[
+ <span class="macro">bdk::fragment!</span>(pk(my_key_1))<span class="question-mark">?</span>,
+ <span class="macro">bdk::fragment!</span>(s:pk(my_key_2))<span class="question-mark">?</span>,
+ <span class="macro">bdk::fragment!</span>(s:n:d:v:older(my_timelock))<span class="question-mark">?</span>,
];
-<span class="kw">let</span> (<span class="ident">descriptor_b</span>, <span class="kw-2">mut</span> <span class="ident">key_map_b</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">bdk::descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">thresh_vec</span>(<span class="number">2</span>, <span class="ident">b_items</span>)))<span class="question-mark">?</span>;
+<span class="kw">let </span>(descriptor_b, <span class="kw-2">mut </span>key_map_b, networks) = <span class="macro">bdk::descriptor!</span>(wsh(thresh_vec(<span class="number">2</span>, b_items)))<span class="question-mark">?</span>;
-<span class="macro">assert_eq!</span>(<span class="ident">descriptor_a</span>, <span class="ident">descriptor_b</span>);
-<span class="macro">assert_eq!</span>(<span class="ident">key_map_a</span>.<span class="ident">len</span>(), <span class="ident">key_map_b</span>.<span class="ident">len</span>());</code></pre></div>
+<span class="macro">assert_eq!</span>(descriptor_a, descriptor_b);
+<span class="macro">assert_eq!</span>(key_map_a.len(), key_map_b.len());</code></pre></div>
<hr />
<p>Simple 2-of-2 multi-signature, equivalent to: <code>wsh(multi(2, ...))</code></p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">my_key_1</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>my_key_1 = bitcoin::PublicKey::from_str(
<span class="string">"02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c"</span>,
)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">my_key_2</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>my_key_2 =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">key_map</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">bdk::descriptor!</span> {
- <span class="ident">wsh</span> (
- <span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">my_key_1</span>, <span class="ident">my_key_2</span>)
+<span class="kw">let </span>(descriptor, key_map, networks) = <span class="macro">bdk::descriptor! </span>{
+ wsh (
+ multi(<span class="number">2</span>, my_key_1, my_key_2)
)
}<span class="question-mark">?</span>;</code></pre></div>
<hr />
<p>Native-Segwit single-sig, equivalent to: <code>wpkh(...)</code></p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">my_key</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>)<span class="question-mark">?</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>my_key =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">key_map</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">bdk::descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">my_key</span>))<span class="question-mark">?</span>;</code></pre></div>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="kw">let </span>(descriptor, key_map, networks) = <span class="macro">bdk::descriptor!</span>(wpkh(my_key))<span class="question-mark">?</span>;</code></pre></div>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Macro to write descriptor fragments with code"><meta name="keywords" content="rust, rustlang, rust-lang, fragment"><title>fragment in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc macro"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="fragment" data-ty="macro" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Macro <a href="index.html">bdk</a>::<wbr><a class="macro" href="#">fragment</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/descriptor/dsl.rs.html#677-792" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><div class="example-wrap"><pre class="rust macro"><code><span class="macro">macro_rules!</span> <span class="ident">fragment</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">tt</span> : $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => { ... };
- ( <span class="bool-val">true</span> ) => { ... };
- ( <span class="bool-val">false</span> ) => { ... };
- ( <span class="ident">pk_k</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">pk</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">pk_h</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">after</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">older</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">sha256</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">hash256</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">ripemd160</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">hash160</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">and_v</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">and_b</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">and_or</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">andor</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">or_b</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">or_d</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">or_c</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">or_i</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">thresh_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">items</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">thresh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">multi_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">multi</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> )<span class="op">+</span> ) ) => { ... };
- ( <span class="ident">multi_a_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>:<span class="ident">expr</span> ) ) => { ... };
- ( <span class="ident">multi_a</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> )<span class="op">+</span> ) ) => { ... };
- ( <span class="ident">sortedmulti</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
- ( <span class="ident">sortedmulti_vec</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => { ... };
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Macro to write descriptor fragments with code"><meta name="keywords" content="rust, rustlang, rust-lang, fragment"><title>fragment in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc macro"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Macro <a href="index.html">bdk</a>::<wbr><a class="macro" href="#">fragment</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/descriptor/dsl.rs.html#677-792">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><div class="example-wrap"><pre class="rust macro"><code><span class="macro">macro_rules! </span>fragment {
+ ( <span class="macro-nonterminal">$modif</span>:tt : $( <span class="macro-nonterminal">$tail</span>:tt )* ) => { ... };
+ ( <span class="bool-val">true </span>) => { ... };
+ ( <span class="bool-val">false </span>) => { ... };
+ ( pk_k ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( pk ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( pk_h ( <span class="macro-nonterminal">$key</span>:expr ) ) => { ... };
+ ( after ( <span class="macro-nonterminal">$value</span>:expr ) ) => { ... };
+ ( older ( <span class="macro-nonterminal">$value</span>:expr ) ) => { ... };
+ ( sha256 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => { ... };
+ ( hash256 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => { ... };
+ ( ripemd160 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => { ... };
+ ( hash160 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => { ... };
+ ( and_v ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( and_b ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( and_or ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( andor ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( or_b ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( or_d ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( or_c ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( or_i ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( thresh_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$items</span>:expr ) ) => { ... };
+ ( thresh ( <span class="macro-nonterminal">$thresh</span>:expr, $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( multi_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$keys</span>:expr ) ) => { ... };
+ ( multi ( <span class="macro-nonterminal">$thresh</span>:expr $(, <span class="macro-nonterminal">$key</span>:expr )+ ) ) => { ... };
+ ( multi_a_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$keys</span>:expr ) ) => { ... };
+ ( multi_a ( <span class="macro-nonterminal">$thresh</span>:expr $(, <span class="macro-nonterminal">$key</span>:expr )+ ) ) => { ... };
+ ( sortedmulti ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
+ ( sortedmulti_vec ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => { ... };
}</code></pre></div>
</div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Macro to write descriptor fragments with code</p>
<p>This macro will be expanded to an object of type <code>Result<(Miniscript<DescriptorPublicKey, _>, KeyMap, ValidNetworks), DescriptorError></code>. It allows writing
fragments of larger descriptors that can be pieced together using <code>fragment!(thresh_vec(m, ...))</code>.</p>
<p>The syntax to write macro fragment is the same as documented for the <a href="macro.descriptor.html" title="descriptor"><code>descriptor</code></a> macro.</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Additional functions on the `rust-bitcoin` `PartiallySignedTransaction` structure."><meta name="keywords" content="rust, rustlang, rust-lang, psbt"><title>bdk::psbt - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module psbt</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="psbt" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">psbt</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#12-239" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Additional functions on the <code>rust-bitcoin</code> <code>PartiallySignedTransaction</code> structure.</p>
-</div></details><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.PsbtUtils.html" title="bdk::psbt::PsbtUtils trait">PsbtUtils</a></div><div class="item-right docblock-short"><p>Trait to add functions to extract utxos and calculate fees.</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Additional functions on the `rust-bitcoin` `PartiallySignedTransaction` structure."><meta name="keywords" content="rust, rustlang, rust-lang, psbt"><title>bdk::psbt - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module psbt</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">psbt</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#12-239">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Additional functions on the <code>rust-bitcoin</code> <code>PartiallySignedTransaction</code> structure.</p>
+</div></details><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.PsbtUtils.html" title="bdk::psbt::PsbtUtils trait">PsbtUtils</a></div><div class="item-right docblock-short">Trait to add functions to extract utxos and calculate fees.</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"trait":[["PsbtUtils","Trait to add functions to extract utxos and calculate fees."]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"trait":[["PsbtUtils","Trait to add functions to extract utxos and calculate fees."]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait to add functions to extract utxos and calculate fees."><meta name="keywords" content="rust, rustlang, rust-lang, PsbtUtils"><title>PsbtUtils in bdk::psbt - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">PsbtUtils</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.fee_amount">fee_amount</a><a href="#tymethod.fee_rate">fee_rate</a><a href="#tymethod.get_utxo_for">get_utxo_for</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-PsbtUtils-for-Psbt">Psbt</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">psbt</a></h2><div id="sidebar-vars" data-name="PsbtUtils" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">psbt</a>::<wbr><a class="trait" href="#">PsbtUtils</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#21-34" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait PsbtUtils {
- fn <a href="#tymethod.get_utxo_for" class="fnname">get_utxo_for</a>(&self, input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxOut>;
-<div class="item-spacer"></div> fn <a href="#tymethod.fee_amount" class="fnname">fee_amount</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>;
-<div class="item-spacer"></div> fn <a href="#tymethod.fee_rate" class="fnname">fee_rate</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait to add functions to extract utxos and calculate fees."><meta name="keywords" content="rust, rustlang, rust-lang, PsbtUtils"><title>PsbtUtils in bdk::psbt - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">PsbtUtils</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.fee_amount">fee_amount</a></li><li><a href="#tymethod.fee_rate">fee_rate</a></li><li><a href="#tymethod.get_utxo_for">get_utxo_for</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-PsbtUtils-for-Psbt">Psbt</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::psbt</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">psbt</a>::<wbr><a class="trait" href="#">PsbtUtils</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#21-34">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait PsbtUtils {
+ fn <a href="#tymethod.get_utxo_for" class="fn">get_utxo_for</a>(&self, input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxOut>;
+<span class="item-spacer"></span> fn <a href="#tymethod.fee_amount" class="fn">fee_amount</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>;
+<span class="item-spacer"></span> fn <a href="#tymethod.fee_rate" class="fn">fee_rate</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait to add functions to extract utxos and calculate fees.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.get_utxo_for" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#23" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.get_utxo_for" class="fnname">get_utxo_for</a>(&self, input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxOut></h4></div></summary><div class="docblock"><p>Get the <code>TxOut</code> for the specified input index, if it doesn’t exist in the PSBT <code>None</code> is returned.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.fee_amount" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#27" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.fee_amount" class="fnname">fee_amount</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></h4></div></summary><div class="docblock"><p>The total transaction fee amount, sum of input amounts minus sum of output amounts, in Sats.
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.get_utxo_for" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#23">source</a><h4 class="code-header">fn <a href="#tymethod.get_utxo_for" class="fn">get_utxo_for</a>(&self, input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxOut></h4></section></summary><div class="docblock"><p>Get the <code>TxOut</code> for the specified input index, if it doesn’t exist in the PSBT <code>None</code> is returned.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.fee_amount" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#27">source</a><h4 class="code-header">fn <a href="#tymethod.fee_amount" class="fn">fee_amount</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></h4></section></summary><div class="docblock"><p>The total transaction fee amount, sum of input amounts minus sum of output amounts, in Sats.
If the PSBT is missing a TxOut for an input returns None.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.fee_rate" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#33" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.fee_rate" class="fnname">fee_rate</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>></h4></div></summary><div class="docblock"><p>The transaction’s fee rate. This value will only be accurate if calculated AFTER the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.fee_rate" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#33">source</a><h4 class="code-header">fn <a href="#tymethod.fee_rate" class="fn">fee_rate</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>></h4></section></summary><div class="docblock"><p>The transaction’s fee rate. This value will only be accurate if calculated AFTER the
<code>PartiallySignedTransaction</code> is finalized and all witness/signature data is added to the
transaction.
If the PSBT is missing a TxOut for an input returns None.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-PsbtUtils-for-Psbt" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#36-78" title="goto source code">source</a></div><a href="#impl-PsbtUtils-for-Psbt" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.PsbtUtils.html" title="trait bdk::psbt::PsbtUtils">PsbtUtils</a> for Psbt</h3></div></summary><div class="impl-items"><div id="method.get_utxo_for" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#38-56" title="goto source code">source</a></div><a href="#method.get_utxo_for" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.get_utxo_for" class="fnname">get_utxo_for</a>(&self, input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxOut></h4></div><div id="method.fee_amount" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#58-69" title="goto source code">source</a></div><a href="#method.fee_amount" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.fee_amount" class="fnname">fee_amount</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></h4></div><div id="method.fee_rate" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/psbt/mod.rs.html#71-77" title="goto source code">source</a></div><a href="#method.fee_rate" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.fee_rate" class="fnname">fee_rate</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"></div><script type="text/javascript" src="../../implementors/bdk/psbt/trait.PsbtUtils.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-PsbtUtils-for-Psbt" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#36-78">source</a><a href="#impl-PsbtUtils-for-Psbt" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.PsbtUtils.html" title="trait bdk::psbt::PsbtUtils">PsbtUtils</a> for Psbt</h3></section></summary><div class="impl-items"><section id="method.get_utxo_for" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#38-56">source</a><a href="#method.get_utxo_for" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.get_utxo_for" class="fn">get_utxo_for</a>(&self, input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><TxOut></h4></section><section id="method.fee_amount" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#58-69">source</a><a href="#method.fee_amount" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.fee_amount" class="fn">fee_amount</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></h4></section><section id="method.fee_rate" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/psbt/mod.rs.html#71-77">source</a><a href="#method.fee_rate" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.fee_rate" class="fn">fee_rate</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../implementors/bdk/psbt/trait.PsbtUtils.js" data-ignore-extern-crates="bitcoin" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Error","Errors that can be thrown by the `Wallet`"],["KeychainKind","Types of keychains"],["Utxo","An unspent transaction output (UTXO)."]],"externcrate":[["bitcoin",""],["bitcoincore_rpc",""],["electrum_client",""],["esplora_client",""],["hwi",""],["miniscript",""],["rusqlite",""],["sled",""]],"fn":[["version","Get the version of BDK at runtime"]],"macro":[["descriptor","Macro to write full descriptors with code"],["fragment","Macro to write descriptor fragments with code"]],"mod":[["blockchain","Blockchain backends"],["database","Database types"],["descriptor","Descriptors"],["keys","Key formats"],["psbt","Additional functions on the `rust-bitcoin` `PartiallySignedTransaction` structure."],["wallet","Wallet"]],"struct":[["Balance","Balance differentiated in various categories"],["BlockTime","Block height and timestamp of a block"],["FeeRate","Fee rate"],["LocalUtxo","An unspent output owned by a `Wallet`."],["TransactionDetails","A wallet transaction"],["WeightedUtxo","A [`Utxo`] with its `satisfaction_weight`."]],"trait":[["Vbytes","Trait implemented by types that can be used to measure weight units."]],"type":[["ConfirmationTime","DEPRECATED: Confirmation time of a transaction"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Error","Errors that can be thrown by the `Wallet`"],["KeychainKind","Types of keychains"],["Utxo","An unspent transaction output (UTXO)."]],"externcrate":[["bitcoin",""],["bitcoincore_rpc",""],["electrum_client",""],["esplora_client",""],["hwi",""],["miniscript",""],["rusqlite",""],["sled",""]],"fn":[["version","Get the version of BDK at runtime"]],"macro":[["descriptor","Macro to write full descriptors with code"],["fragment","Macro to write descriptor fragments with code"]],"mod":[["blockchain","Blockchain backends"],["database","Database types"],["descriptor","Descriptors"],["keys","Key formats"],["psbt","Additional functions on the `rust-bitcoin` `PartiallySignedTransaction` structure."],["wallet","Wallet"]],"struct":[["Balance","Balance differentiated in various categories"],["BlockTime","Block height and timestamp of a block"],["FeeRate","Fee rate"],["LocalUtxo","An unspent output owned by a `Wallet`."],["TransactionDetails","A wallet transaction"],["WeightedUtxo","A [`Utxo`] with its `satisfaction_weight`."]],"trait":[["Vbytes","Trait implemented by types that can be used to measure weight units."]],"type":[["ConfirmationTime","DEPRECATED: Confirmation time of a transaction"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Balance differentiated in various categories"><meta name="keywords" content="rust, rustlang, rust-lang, Balance"><title>Balance in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Balance</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.confirmed">confirmed</a><a href="#structfield.immature">immature</a><a href="#structfield.trusted_pending">trusted_pending</a><a href="#structfield.untrusted_pending">untrusted_pending</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.get_spendable">get_spendable</a><a href="#method.get_total">get_total</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Add%3CBalance%3E">Add<Balance></a><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CBalance%3E">PartialEq<Balance></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a><a href="#impl-Sum%3CBalance%3E">Sum<Balance></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="Balance" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">Balance</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#277-286" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Balance {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Balance differentiated in various categories"><meta name="keywords" content="rust, rustlang, rust-lang, Balance"><title>Balance in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Balance</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.confirmed">confirmed</a></li><li><a href="#structfield.immature">immature</a></li><li><a href="#structfield.trusted_pending">trusted_pending</a></li><li><a href="#structfield.untrusted_pending">untrusted_pending</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.get_spendable">get_spendable</a></li><li><a href="#method.get_total">get_total</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Add%3CBalance%3E-for-Balance">Add<Balance></a></li><li><a href="#impl-Clone-for-Balance">Clone</a></li><li><a href="#impl-Debug-for-Balance">Debug</a></li><li><a href="#impl-Default-for-Balance">Default</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-Balance">Deserialize<'de></a></li><li><a href="#impl-Display-for-Balance">Display</a></li><li><a href="#impl-Eq-for-Balance">Eq</a></li><li><a href="#impl-PartialEq%3CBalance%3E-for-Balance">PartialEq<Balance></a></li><li><a href="#impl-Serialize-for-Balance">Serialize</a></li><li><a href="#impl-StructuralEq-for-Balance">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Balance">StructuralPartialEq</a></li><li><a href="#impl-Sum%3CBalance%3E-for-Balance">Sum<Balance></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Balance">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Balance">Send</a></li><li><a href="#impl-Sync-for-Balance">Sync</a></li><li><a href="#impl-Unpin-for-Balance">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Balance">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Balance">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Balance">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Balance">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-Balance">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-Balance">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Balance">Into<U></a></li><li><a href="#impl-Pointable-for-Balance">Pointable</a></li><li><a href="#impl-ToOwned-for-Balance">ToOwned</a></li><li><a href="#impl-ToString-for-Balance">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Balance">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Balance">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Balance">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">Balance</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#277-286">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Balance {
pub immature: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
pub trusted_pending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
pub untrusted_pending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
pub confirmed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Balance differentiated in various categories</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.immature" class="structfield small-section-header"><a href="#structfield.immature" class="anchor field"></a><code>immature: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>All coinbase outputs not yet matured</p>
-</div><span id="structfield.trusted_pending" class="structfield small-section-header"><a href="#structfield.trusted_pending" class="anchor field"></a><code>trusted_pending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Unconfirmed UTXOs generated by a wallet tx</p>
-</div><span id="structfield.untrusted_pending" class="structfield small-section-header"><a href="#structfield.untrusted_pending" class="anchor field"></a><code>untrusted_pending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Unconfirmed UTXOs received from an external wallet</p>
-</div><span id="structfield.confirmed" class="structfield small-section-header"><a href="#structfield.confirmed" class="anchor field"></a><code>confirmed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Confirmed and immediately spendable balance</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#288-298" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_spendable" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#290-292" title="goto source code">source</a></div><a href="#method.get_spendable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_spendable" class="fnname">get_spendable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>Get sum of trusted_pending and confirmed coins</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_total" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#295-297" title="goto source code">source</a></div><a href="#method.get_total" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_total" class="fnname">get_total</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>Get the whole balance visible to the wallet</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Add%3CBalance%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#310-321" title="goto source code">source</a></div><a href="#impl-Add%3CBalance%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a><<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Output" class="type trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#associatedtype.Output" class="associatedtype">Output</a> = Self</h4></div></summary><div class='docblock'><p>The resulting type after applying the <code>+</code> operator.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#313-320" title="goto source code">source</a></div><a href="#method.add" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#tymethod.add" class="fnname">add</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Performs the <code>+</code> operation. <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#tymethod.add">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#300-308" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#301-307" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CBalance%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-PartialEq%3CBalance%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Sum%3CBalance%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#323-332" title="goto source code">source</a></div><a href="#impl-Sum%3CBalance%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a><<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sum" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#324-331" title="goto source code">source</a></div><a href="#method.sum" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum" class="fnname">sum</a><I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = Self>>(iter: I) -> Self</h4></div></summary><div class='docblock'><p>Method which takes an iterator and generates <code>Self</code> from the elements by
-“summing up” the items. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#276" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.immature" class="structfield small-section-header"><a href="#structfield.immature" class="anchor field">§</a><code>immature: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>All coinbase outputs not yet matured</p>
+</div><span id="structfield.trusted_pending" class="structfield small-section-header"><a href="#structfield.trusted_pending" class="anchor field">§</a><code>trusted_pending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Unconfirmed UTXOs generated by a wallet tx</p>
+</div><span id="structfield.untrusted_pending" class="structfield small-section-header"><a href="#structfield.untrusted_pending" class="anchor field">§</a><code>untrusted_pending: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Unconfirmed UTXOs received from an external wallet</p>
+</div><span id="structfield.confirmed" class="structfield small-section-header"><a href="#structfield.confirmed" class="anchor field">§</a><code>confirmed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Confirmed and immediately spendable balance</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#288-298">source</a><a href="#impl-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_spendable" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#290-292">source</a><h4 class="code-header">pub fn <a href="#method.get_spendable" class="fn">get_spendable</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Get sum of trusted_pending and confirmed coins</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_total" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#295-297">source</a><h4 class="code-header">pub fn <a href="#method.get_total" class="fn">get_total</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Get the whole balance visible to the wallet</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Add%3CBalance%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#310-321">source</a><a href="#impl-Add%3CBalance%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a><<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#associatedtype.Output" class="associatedtype">Output</a> = <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>+</code> operator.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#313-320">source</a><a href="#method.add" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#tymethod.add" class="fn">add</a>(self, other: Self) -> Self</h4></section></summary><div class='docblock'>Performs the <code>+</code> operation. <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#tymethod.add">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-Clone-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-Debug-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-Default-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-Deserialize%3C%27de%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#300-308">source</a><a href="#impl-Display-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#301-307">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CBalance%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-PartialEq%3CBalance%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-Serialize-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Sum%3CBalance%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#323-332">source</a><a href="#impl-Sum%3CBalance%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a><<a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a>> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sum" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#324-331">source</a><a href="#method.sum" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum" class="fn">sum</a><I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = Self>>(iter: I) -> Self</h4></section></summary><div class='docblock'>Method which takes an iterator and generates <code>Self</code> from the elements by
+“summing up” the items. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum">Read more</a></div></details></div></details><section id="impl-Eq-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-Eq-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section><section id="impl-StructuralEq-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-StructuralEq-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section><section id="impl-StructuralPartialEq-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#276">source</a><a href="#impl-StructuralPartialEq-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Balance" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section><section id="impl-Send-for-Balance" class="impl has-srclink"><a href="#impl-Send-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section><section id="impl-Sync-for-Balance" class="impl has-srclink"><a href="#impl-Sync-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section><section id="impl-Unpin-for-Balance" class="impl has-srclink"><a href="#impl-Unpin-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section><section id="impl-UnwindSafe-for-Balance" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Balance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Balance.html" title="struct bdk::Balance">Balance</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Balance" class="impl has-srclink"><a href="#impl-Pointable-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Balance" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Balance" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-Balance" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-Balance" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Block height and timestamp of a block"><meta name="keywords" content="rust, rustlang, rust-lang, BlockTime"><title>BlockTime in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BlockTime</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.height">height</a><a href="#structfield.timestamp">timestamp</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CBlockTime%3E">From<BlockTime></a><a href="#impl-PartialEq%3CBlockTime%3E">PartialEq<BlockTime></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="BlockTime" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">BlockTime</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#252-257" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct BlockTime {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Block height and timestamp of a block"><meta name="keywords" content="rust, rustlang, rust-lang, BlockTime"><title>BlockTime in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BlockTime</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.height">height</a></li><li><a href="#structfield.timestamp">timestamp</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-BlockTime">Clone</a></li><li><a href="#impl-Debug-for-BlockTime">Debug</a></li><li><a href="#impl-Default-for-BlockTime">Default</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-BlockTime">Deserialize<'de></a></li><li><a href="#impl-Eq-for-BlockTime">Eq</a></li><li><a href="#impl-From%3CBlockTime%3E-for-BlockTime">From<BlockTime></a></li><li><a href="#impl-PartialEq%3CBlockTime%3E-for-BlockTime">PartialEq<BlockTime></a></li><li><a href="#impl-Serialize-for-BlockTime">Serialize</a></li><li><a href="#impl-StructuralEq-for-BlockTime">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-BlockTime">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-BlockTime">RefUnwindSafe</a></li><li><a href="#impl-Send-for-BlockTime">Send</a></li><li><a href="#impl-Sync-for-BlockTime">Sync</a></li><li><a href="#impl-Unpin-for-BlockTime">Unpin</a></li><li><a href="#impl-UnwindSafe-for-BlockTime">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-BlockTime">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-BlockTime">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-BlockTime">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-BlockTime">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-BlockTime">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-BlockTime">Into<U></a></li><li><a href="#impl-Pointable-for-BlockTime">Pointable</a></li><li><a href="#impl-ToOwned-for-BlockTime">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-BlockTime">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-BlockTime">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-BlockTime">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">BlockTime</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#252-257">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct BlockTime {
pub height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
pub timestamp: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Block height and timestamp of a block</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.height" class="structfield small-section-header"><a href="#structfield.height" class="anchor field"></a><code>height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>confirmation block height</p>
-</div><span id="structfield.timestamp" class="structfield small-section-header"><a href="#structfield.timestamp" class="anchor field"></a><code>timestamp: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>confirmation block timestamp</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#265-273" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#267-272" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(height: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, timestamp: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self></h4></div></summary><div class="docblock"><p>Returns <code>Some</code> <code>BlockTime</code> if both <code>height</code> and <code>timestamp</code> are <code>Some</code></p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CBlockTime%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/blockchain/esplora/mod.rs.html#77-81" title="goto source code">source</a></div><a href="#impl-From%3CBlockTime%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><BlockTime> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>esplora</code></strong> only.</div></div></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/blockchain/esplora/mod.rs.html#78-80" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(_: BlockTime) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CBlockTime%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-PartialEq%3CBlockTime%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#251" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.height" class="structfield small-section-header"><a href="#structfield.height" class="anchor field">§</a><code>height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>confirmation block height</p>
+</div><span id="structfield.timestamp" class="structfield small-section-header"><a href="#structfield.timestamp" class="anchor field">§</a><code>timestamp: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>confirmation block timestamp</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#265-273">source</a><a href="#impl-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#267-272">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(height: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>, timestamp: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self></h4></section></summary><div class="docblock"><p>Returns <code>Some</code> <code>BlockTime</code> if both <code>height</code> and <code>timestamp</code> are <code>Some</code></p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-Clone-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-Debug-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-Default-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-Deserialize%3C%27de%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CBlockTime%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/blockchain/esplora/mod.rs.html#77-81">source</a><a href="#impl-From%3CBlockTime%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><BlockTime> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>esplora</code></strong> only.</div></span></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/blockchain/esplora/mod.rs.html#78-80">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(_: BlockTime) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CBlockTime%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-PartialEq%3CBlockTime%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-Serialize-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-Eq-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section><section id="impl-StructuralEq-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-StructuralEq-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section><section id="impl-StructuralPartialEq-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#251">source</a><a href="#impl-StructuralPartialEq-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-BlockTime" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section><section id="impl-Send-for-BlockTime" class="impl has-srclink"><a href="#impl-Send-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section><section id="impl-Sync-for-BlockTime" class="impl has-srclink"><a href="#impl-Sync-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section><section id="impl-Unpin-for-BlockTime" class="impl has-srclink"><a href="#impl-Unpin-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section><section id="impl-UnwindSafe-for-BlockTime" class="impl has-srclink"><a href="#impl-UnwindSafe-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-BlockTime" class="impl has-srclink"><a href="#impl-Pointable-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-BlockTime" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-BlockTime" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-BlockTime" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Fee rate"><meta name="keywords" content="rust, rustlang, rust-lang, FeeRate"><title>FeeRate in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">FeeRate</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.as_sat_per_vb">as_sat_per_vb</a><a href="#method.default_min_relay_fee">default_min_relay_fee</a><a href="#method.fee_vb">fee_vb</a><a href="#method.fee_wu">fee_wu</a><a href="#method.from_btc_per_kvb">from_btc_per_kvb</a><a href="#method.from_sat_per_kvb">from_sat_per_kvb</a><a href="#method.from_sat_per_kwu">from_sat_per_kwu</a><a href="#method.from_sat_per_vb">from_sat_per_vb</a><a href="#method.from_vb">from_vb</a><a href="#method.from_wu">from_wu</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-PartialEq%3CFeeRate%3E">PartialEq<FeeRate></a><a href="#impl-PartialOrd%3CFeeRate%3E">PartialOrd<FeeRate></a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a><a href="#impl-Sub%3CFeeRate%3E">Sub<FeeRate></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="FeeRate" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">FeeRate</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#51" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct FeeRate(_);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Fee rate</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#53-124" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_sat_per_kwu" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#67-69" title="goto source code">source</a></div><a href="#method.from_sat_per_kwu" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_sat_per_kwu" class="fnname">from_sat_per_kwu</a>(sat_per_kwu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></div></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in sats/kwu</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_sat_per_kvb" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#72-74" title="goto source code">source</a></div><a href="#method.from_sat_per_kvb" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_sat_per_kvb" class="fnname">from_sat_per_kvb</a>(sat_per_kvb: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></div></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in sats/kvb</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_btc_per_kvb" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#81-83" title="goto source code">source</a></div><a href="#method.from_btc_per_kvb" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_btc_per_kvb" class="fnname">from_btc_per_kvb</a>(btc_per_kvb: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></div></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in btc/kvbytes</p>
-<h6 id="panics" class="section-header"><a href="#panics">Panics</a></h6>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Fee rate"><meta name="keywords" content="rust, rustlang, rust-lang, FeeRate"><title>FeeRate in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">FeeRate</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.as_sat_per_vb">as_sat_per_vb</a></li><li><a href="#method.default_min_relay_fee">default_min_relay_fee</a></li><li><a href="#method.fee_vb">fee_vb</a></li><li><a href="#method.fee_wu">fee_wu</a></li><li><a href="#method.from_btc_per_kvb">from_btc_per_kvb</a></li><li><a href="#method.from_sat_per_kvb">from_sat_per_kvb</a></li><li><a href="#method.from_sat_per_kwu">from_sat_per_kwu</a></li><li><a href="#method.from_sat_per_vb">from_sat_per_vb</a></li><li><a href="#method.from_vb">from_vb</a></li><li><a href="#method.from_wu">from_wu</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-FeeRate">Clone</a></li><li><a href="#impl-Copy-for-FeeRate">Copy</a></li><li><a href="#impl-Debug-for-FeeRate">Debug</a></li><li><a href="#impl-Default-for-FeeRate">Default</a></li><li><a href="#impl-PartialEq%3CFeeRate%3E-for-FeeRate">PartialEq<FeeRate></a></li><li><a href="#impl-PartialOrd%3CFeeRate%3E-for-FeeRate">PartialOrd<FeeRate></a></li><li><a href="#impl-StructuralPartialEq-for-FeeRate">StructuralPartialEq</a></li><li><a href="#impl-Sub%3CFeeRate%3E-for-FeeRate">Sub<FeeRate></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-FeeRate">RefUnwindSafe</a></li><li><a href="#impl-Send-for-FeeRate">Send</a></li><li><a href="#impl-Sync-for-FeeRate">Sync</a></li><li><a href="#impl-Unpin-for-FeeRate">Unpin</a></li><li><a href="#impl-UnwindSafe-for-FeeRate">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-FeeRate">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-FeeRate">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-FeeRate">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-FeeRate">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-FeeRate">Into<U></a></li><li><a href="#impl-Pointable-for-FeeRate">Pointable</a></li><li><a href="#impl-ToOwned-for-FeeRate">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-FeeRate">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-FeeRate">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-FeeRate">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">FeeRate</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#51">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct FeeRate(_);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Fee rate</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#53-124">source</a><a href="#impl-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_sat_per_kwu" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#67-69">source</a><h4 class="code-header">pub fn <a href="#method.from_sat_per_kwu" class="fn">from_sat_per_kwu</a>(sat_per_kwu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in sats/kwu</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_sat_per_kvb" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#72-74">source</a><h4 class="code-header">pub fn <a href="#method.from_sat_per_kvb" class="fn">from_sat_per_kvb</a>(sat_per_kvb: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in sats/kvb</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_btc_per_kvb" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#81-83">source</a><h4 class="code-header">pub fn <a href="#method.from_btc_per_kvb" class="fn">from_btc_per_kvb</a>(btc_per_kvb: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in btc/kvbytes</p>
+<h6 id="panics"><a href="#panics">Panics</a></h6>
<p>Panics if the value is not <a href="https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal">normal</a> (except if it’s a positive zero) or negative.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_sat_per_vb" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#90-92" title="goto source code">source</a></div><a href="#method.from_sat_per_vb" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_sat_per_vb" class="fnname">from_sat_per_vb</a>(sat_per_vb: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></div></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in satoshi/vbyte</p>
-<h6 id="panics-1" class="section-header"><a href="#panics-1">Panics</a></h6>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_sat_per_vb" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#90-92">source</a><h4 class="code-header">pub fn <a href="#method.from_sat_per_vb" class="fn">from_sat_per_vb</a>(sat_per_vb: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a new instance of <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> given a float fee rate in satoshi/vbyte</p>
+<h6 id="panics-1"><a href="#panics-1">Panics</a></h6>
<p>Panics if the value is not <a href="https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal">normal</a> (except if it’s a positive zero) or negative.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default_min_relay_fee" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#95-97" title="goto source code">source</a></div><a href="#method.default_min_relay_fee" class="anchor"></a><h4 class="code-header">pub const fn <a href="#method.default_min_relay_fee" class="fnname">default_min_relay_fee</a>() -> Self</h4></div></summary><div class="docblock"><p>Create a new <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> with the default min relay fee value</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_wu" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#100-102" title="goto source code">source</a></div><a href="#method.from_wu" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_wu" class="fnname">from_wu</a>(fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, wu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></div></summary><div class="docblock"><p>Calculate fee rate from <code>fee</code> and weight units (<code>wu</code>).</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_vb" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#105-108" title="goto source code">source</a></div><a href="#method.from_vb" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_vb" class="fnname">from_vb</a>(fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, vbytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></div></summary><div class="docblock"><p>Calculate fee rate from <code>fee</code> and <code>vbytes</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_sat_per_vb" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#111-113" title="goto source code">source</a></div><a href="#method.as_sat_per_vb" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.as_sat_per_vb" class="fnname">as_sat_per_vb</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a></h4></div></summary><div class="docblock"><p>Return the value as satoshi/vbyte</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fee_wu" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#116-118" title="goto source code">source</a></div><a href="#method.fee_wu" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.fee_wu" class="fnname">fee_wu</a>(&self, wu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>Calculate absolute fee in Satoshis using size in weight units.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fee_vb" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#121-123" title="goto source code">source</a></div><a href="#method.fee_vb" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.fee_vb" class="fnname">fee_vb</a>(&self, vbytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>Calculate absolute fee in Satoshis using size in virtual bytes.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#126-130" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#127-129" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CFeeRate%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#impl-PartialEq%3CFeeRate%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CFeeRate%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CFeeRate%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Sub%3CFeeRate%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#132-138" title="goto source code">source</a></div><a href="#impl-Sub%3CFeeRate%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html" title="trait core::ops::arith::Sub">Sub</a><<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Output" class="type trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#associatedtype.Output" class="associatedtype">Output</a> = Self</h4></div></summary><div class='docblock'><p>The resulting type after applying the <code>-</code> operator.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sub" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#135-137" title="goto source code">source</a></div><a href="#method.sub" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#tymethod.sub" class="fnname">sub</a>(self, other: <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#associatedtype.Output" title="type core::ops::arith::Sub::Output">Output</a></h4></div></summary><div class='docblock'><p>Performs the <code>-</code> operation. <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#tymethod.sub">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#49" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default_min_relay_fee" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#95-97">source</a><h4 class="code-header">pub const fn <a href="#method.default_min_relay_fee" class="fn">default_min_relay_fee</a>() -> Self</h4></section></summary><div class="docblock"><p>Create a new <a href="struct.FeeRate.html" title="FeeRate"><code>FeeRate</code></a> with the default min relay fee value</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_wu" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#100-102">source</a><h4 class="code-header">pub fn <a href="#method.from_wu" class="fn">from_wu</a>(fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, wu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></section></summary><div class="docblock"><p>Calculate fee rate from <code>fee</code> and weight units (<code>wu</code>).</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_vb" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#105-108">source</a><h4 class="code-header">pub fn <a href="#method.from_vb" class="fn">from_vb</a>(fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, vbytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></section></summary><div class="docblock"><p>Calculate fee rate from <code>fee</code> and <code>vbytes</code>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_sat_per_vb" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#111-113">source</a><h4 class="code-header">pub fn <a href="#method.as_sat_per_vb" class="fn">as_sat_per_vb</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a></h4></section></summary><div class="docblock"><p>Return the value as satoshi/vbyte</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fee_wu" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#116-118">source</a><h4 class="code-header">pub fn <a href="#method.fee_wu" class="fn">fee_wu</a>(&self, wu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Calculate absolute fee in Satoshis using size in weight units.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fee_vb" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#121-123">source</a><h4 class="code-header">pub fn <a href="#method.fee_vb" class="fn">fee_vb</a>(&self, vbytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Calculate absolute fee in Satoshis using size in virtual bytes.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#impl-Clone-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#impl-Debug-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#126-130">source</a><a href="#impl-Default-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#127-129">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CFeeRate%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#impl-PartialEq%3CFeeRate%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CFeeRate%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#impl-PartialOrd%3CFeeRate%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Sub%3CFeeRate%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#132-138">source</a><a href="#impl-Sub%3CFeeRate%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html" title="trait core::ops::arith::Sub">Sub</a><<a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#associatedtype.Output" class="associatedtype">Output</a> = <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>-</code> operator.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sub" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#135-137">source</a><a href="#method.sub" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#tymethod.sub" class="fn">sub</a>(self, other: <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#associatedtype.Output" title="type core::ops::arith::Sub::Output">Output</a></h4></section></summary><div class='docblock'>Performs the <code>-</code> operation. <a href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html#tymethod.sub">Read more</a></div></details></div></details><section id="impl-Copy-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#impl-Copy-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section><section id="impl-StructuralPartialEq-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#49">source</a><a href="#impl-StructuralPartialEq-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FeeRate" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section><section id="impl-Send-for-FeeRate" class="impl has-srclink"><a href="#impl-Send-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section><section id="impl-Sync-for-FeeRate" class="impl has-srclink"><a href="#impl-Sync-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section><section id="impl-Unpin-for-FeeRate" class="impl has-srclink"><a href="#impl-Unpin-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section><section id="impl-UnwindSafe-for-FeeRate" class="impl has-srclink"><a href="#impl-UnwindSafe-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-FeeRate" class="impl has-srclink"><a href="#impl-Pointable-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-FeeRate" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-FeeRate" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-FeeRate" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An unspent output owned by a `Wallet`."><meta name="keywords" content="rust, rustlang, rust-lang, LocalUtxo"><title>LocalUtxo in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">LocalUtxo</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.is_spent">is_spent</a><a href="#structfield.keychain">keychain</a><a href="#structfield.outpoint">outpoint</a><a href="#structfield.txout">txout</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-PartialEq%3CLocalUtxo%3E">PartialEq<LocalUtxo></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="LocalUtxo" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">LocalUtxo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#157-166" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct LocalUtxo {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An unspent output owned by a `Wallet`."><meta name="keywords" content="rust, rustlang, rust-lang, LocalUtxo"><title>LocalUtxo in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">LocalUtxo</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.is_spent">is_spent</a></li><li><a href="#structfield.keychain">keychain</a></li><li><a href="#structfield.outpoint">outpoint</a></li><li><a href="#structfield.txout">txout</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-LocalUtxo">Clone</a></li><li><a href="#impl-Debug-for-LocalUtxo">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-LocalUtxo">Deserialize<'de></a></li><li><a href="#impl-Eq-for-LocalUtxo">Eq</a></li><li><a href="#impl-Hash-for-LocalUtxo">Hash</a></li><li><a href="#impl-PartialEq%3CLocalUtxo%3E-for-LocalUtxo">PartialEq<LocalUtxo></a></li><li><a href="#impl-Serialize-for-LocalUtxo">Serialize</a></li><li><a href="#impl-StructuralEq-for-LocalUtxo">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-LocalUtxo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-LocalUtxo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-LocalUtxo">Send</a></li><li><a href="#impl-Sync-for-LocalUtxo">Sync</a></li><li><a href="#impl-Unpin-for-LocalUtxo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-LocalUtxo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-LocalUtxo">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-LocalUtxo">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-LocalUtxo">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-LocalUtxo">CallHasher</a></li><li><a href="#impl-DeserializeOwned-for-LocalUtxo">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-LocalUtxo">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-LocalUtxo">Into<U></a></li><li><a href="#impl-Pointable-for-LocalUtxo">Pointable</a></li><li><a href="#impl-ToOwned-for-LocalUtxo">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-LocalUtxo">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-LocalUtxo">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-LocalUtxo">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">LocalUtxo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#157-166">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct LocalUtxo {
pub outpoint: OutPoint,
pub txout: TxOut,
pub keychain: <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,
pub is_spent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An unspent output owned by a <a href="wallet/struct.Wallet.html"><code>Wallet</code></a>.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.outpoint" class="structfield small-section-header"><a href="#structfield.outpoint" class="anchor field"></a><code>outpoint: OutPoint</code></span><div class="docblock"><p>Reference to a transaction output</p>
-</div><span id="structfield.txout" class="structfield small-section-header"><a href="#structfield.txout" class="anchor field"></a><code>txout: TxOut</code></span><div class="docblock"><p>Transaction output</p>
-</div><span id="structfield.keychain" class="structfield small-section-header"><a href="#structfield.keychain" class="anchor field"></a><code>keychain: <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><div class="docblock"><p>Type of keychain</p>
-</div><span id="structfield.is_spent" class="structfield small-section-header"><a href="#structfield.is_spent" class="anchor field"></a><code>is_spent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether this UTXO is spent or not</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CLocalUtxo%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-PartialEq%3CLocalUtxo%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#156" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.outpoint" class="structfield small-section-header"><a href="#structfield.outpoint" class="anchor field">§</a><code>outpoint: OutPoint</code></span><div class="docblock"><p>Reference to a transaction output</p>
+</div><span id="structfield.txout" class="structfield small-section-header"><a href="#structfield.txout" class="anchor field">§</a><code>txout: TxOut</code></span><div class="docblock"><p>Transaction output</p>
+</div><span id="structfield.keychain" class="structfield small-section-header"><a href="#structfield.keychain" class="anchor field">§</a><code>keychain: <a class="enum" href="enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><div class="docblock"><p>Type of keychain</p>
+</div><span id="structfield.is_spent" class="structfield small-section-header"><a href="#structfield.is_spent" class="anchor field">§</a><code>is_spent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether this UTXO is spent or not</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-Clone-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-Debug-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-Deserialize%3C%27de%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-Hash-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CLocalUtxo%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-PartialEq%3CLocalUtxo%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-Serialize-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-Eq-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section><section id="impl-StructuralEq-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-StructuralEq-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section><section id="impl-StructuralPartialEq-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#156">source</a><a href="#impl-StructuralPartialEq-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-LocalUtxo" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section><section id="impl-Send-for-LocalUtxo" class="impl has-srclink"><a href="#impl-Send-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section><section id="impl-Sync-for-LocalUtxo" class="impl has-srclink"><a href="#impl-Sync-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section><section id="impl-Unpin-for-LocalUtxo" class="impl has-srclink"><a href="#impl-Unpin-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section><section id="impl-UnwindSafe-for-LocalUtxo" class="impl has-srclink"><a href="#impl-UnwindSafe-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-LocalUtxo" class="impl has-srclink"><a href="#impl-CallHasher-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-LocalUtxo" class="impl has-srclink"><a href="#impl-Pointable-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-LocalUtxo" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-LocalUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-LocalUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A wallet transaction"><meta name="keywords" content="rust, rustlang, rust-lang, TransactionDetails"><title>TransactionDetails in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TransactionDetails</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.confirmation_time">confirmation_time</a><a href="#structfield.fee">fee</a><a href="#structfield.received">received</a><a href="#structfield.sent">sent</a><a href="#structfield.transaction">transaction</a><a href="#structfield.txid">txid</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CTransactionDetails%3E">PartialEq<TransactionDetails></a><a href="#impl-Serialize">Serialize</a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="TransactionDetails" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">TransactionDetails</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#228-248" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct TransactionDetails {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A wallet transaction"><meta name="keywords" content="rust, rustlang, rust-lang, TransactionDetails"><title>TransactionDetails in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TransactionDetails</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.confirmation_time">confirmation_time</a></li><li><a href="#structfield.fee">fee</a></li><li><a href="#structfield.received">received</a></li><li><a href="#structfield.sent">sent</a></li><li><a href="#structfield.transaction">transaction</a></li><li><a href="#structfield.txid">txid</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-TransactionDetails">Clone</a></li><li><a href="#impl-Debug-for-TransactionDetails">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-TransactionDetails">Deserialize<'de></a></li><li><a href="#impl-Eq-for-TransactionDetails">Eq</a></li><li><a href="#impl-PartialEq%3CTransactionDetails%3E-for-TransactionDetails">PartialEq<TransactionDetails></a></li><li><a href="#impl-Serialize-for-TransactionDetails">Serialize</a></li><li><a href="#impl-StructuralEq-for-TransactionDetails">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-TransactionDetails">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-TransactionDetails">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransactionDetails">Send</a></li><li><a href="#impl-Sync-for-TransactionDetails">Sync</a></li><li><a href="#impl-Unpin-for-TransactionDetails">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransactionDetails">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-TransactionDetails">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-TransactionDetails">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-TransactionDetails">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-TransactionDetails">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-TransactionDetails">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-TransactionDetails">Into<U></a></li><li><a href="#impl-Pointable-for-TransactionDetails">Pointable</a></li><li><a href="#impl-ToOwned-for-TransactionDetails">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-TransactionDetails">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-TransactionDetails">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-TransactionDetails">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">TransactionDetails</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#228-248">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct TransactionDetails {
pub transaction: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction>,
pub txid: Txid,
pub received: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
pub fee: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>,
pub confirmation_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A wallet transaction</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.transaction" class="structfield small-section-header"><a href="#structfield.transaction" class="anchor field"></a><code>transaction: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction></code></span><div class="docblock"><p>Optional transaction</p>
-</div><span id="structfield.txid" class="structfield small-section-header"><a href="#structfield.txid" class="anchor field"></a><code>txid: Txid</code></span><div class="docblock"><p>Transaction id</p>
-</div><span id="structfield.received" class="structfield small-section-header"><a href="#structfield.received" class="anchor field"></a><code>received: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Received value (sats)
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.transaction" class="structfield small-section-header"><a href="#structfield.transaction" class="anchor field">§</a><code>transaction: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Transaction></code></span><div class="docblock"><p>Optional transaction</p>
+</div><span id="structfield.txid" class="structfield small-section-header"><a href="#structfield.txid" class="anchor field">§</a><code>txid: Txid</code></span><div class="docblock"><p>Transaction id</p>
+</div><span id="structfield.received" class="structfield small-section-header"><a href="#structfield.received" class="anchor field">§</a><code>received: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Received value (sats)
Sum of owned outputs of this transaction.</p>
-</div><span id="structfield.sent" class="structfield small-section-header"><a href="#structfield.sent" class="anchor field"></a><code>sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Sent value (sats)
+</div><span id="structfield.sent" class="structfield small-section-header"><a href="#structfield.sent" class="anchor field">§</a><code>sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Sent value (sats)
Sum of owned inputs of this transaction.</p>
-</div><span id="structfield.fee" class="structfield small-section-header"><a href="#structfield.fee" class="anchor field"></a><code>fee: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></code></span><div class="docblock"><p>Fee value (sats) if confirmed.
+</div><span id="structfield.fee" class="structfield small-section-header"><a href="#structfield.fee" class="anchor field">§</a><code>fee: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>></code></span><div class="docblock"><p>Fee value (sats) if confirmed.
The availability of the fee depends on the backend. It’s never <code>None</code> with an Electrum
Server backend, but it could be <code>None</code> with a Bitcoin RPC node without txindex that receive
funds while offline.</p>
-</div><span id="structfield.confirmation_time" class="structfield small-section-header"><a href="#structfield.confirmation_time" class="anchor field"></a><code>confirmation_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>></code></span><div class="docblock"><p>If the transaction is confirmed, contains height and timestamp of the block containing the
+</div><span id="structfield.confirmation_time" class="structfield small-section-header"><a href="#structfield.confirmation_time" class="anchor field">§</a><code>confirmation_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>></code></span><div class="docblock"><p>If the transaction is confirmed, contains height and timestamp of the block containing the
transaction, unconfirmed transaction contains <code>None</code>.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CTransactionDetails%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-PartialEq%3CTransactionDetails%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#227" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-Clone-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-Debug-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-Deserialize%3C%27de%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CTransactionDetails%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-PartialEq%3CTransactionDetails%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-Serialize-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-Eq-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section><section id="impl-StructuralEq-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-StructuralEq-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section><section id="impl-StructuralPartialEq-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#227">source</a><a href="#impl-StructuralPartialEq-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-TransactionDetails" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section><section id="impl-Send-for-TransactionDetails" class="impl has-srclink"><a href="#impl-Send-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section><section id="impl-Sync-for-TransactionDetails" class="impl has-srclink"><a href="#impl-Sync-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section><section id="impl-Unpin-for-TransactionDetails" class="impl has-srclink"><a href="#impl-Unpin-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section><section id="impl-UnwindSafe-for-TransactionDetails" class="impl has-srclink"><a href="#impl-UnwindSafe-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-TransactionDetails" class="impl has-srclink"><a href="#impl-Pointable-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-TransactionDetails" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-TransactionDetails" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-TransactionDetails" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A [`Utxo`] with its `satisfaction_weight`."><meta name="keywords" content="rust, rustlang, rust-lang, WeightedUtxo"><title>WeightedUtxo in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">WeightedUtxo</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.satisfaction_weight">satisfaction_weight</a><a href="#structfield.utxo">utxo</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CWeightedUtxo%3E">PartialEq<WeightedUtxo></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="WeightedUtxo" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">WeightedUtxo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#170-178" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct WeightedUtxo {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A [`Utxo`] with its `satisfaction_weight`."><meta name="keywords" content="rust, rustlang, rust-lang, WeightedUtxo"><title>WeightedUtxo in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">WeightedUtxo</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.satisfaction_weight">satisfaction_weight</a></li><li><a href="#structfield.utxo">utxo</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-WeightedUtxo">Clone</a></li><li><a href="#impl-Debug-for-WeightedUtxo">Debug</a></li><li><a href="#impl-Eq-for-WeightedUtxo">Eq</a></li><li><a href="#impl-PartialEq%3CWeightedUtxo%3E-for-WeightedUtxo">PartialEq<WeightedUtxo></a></li><li><a href="#impl-StructuralEq-for-WeightedUtxo">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-WeightedUtxo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-WeightedUtxo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-WeightedUtxo">Send</a></li><li><a href="#impl-Sync-for-WeightedUtxo">Sync</a></li><li><a href="#impl-Unpin-for-WeightedUtxo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-WeightedUtxo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-WeightedUtxo">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-WeightedUtxo">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-WeightedUtxo">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-WeightedUtxo">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-WeightedUtxo">Into<U></a></li><li><a href="#impl-Pointable-for-WeightedUtxo">Pointable</a></li><li><a href="#impl-ToOwned-for-WeightedUtxo">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-WeightedUtxo">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-WeightedUtxo">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-WeightedUtxo">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">bdk</a>::<wbr><a class="struct" href="#">WeightedUtxo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#170-178">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct WeightedUtxo {
pub satisfaction_weight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
pub utxo: <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A <a href="enum.Utxo.html" title="Utxo"><code>Utxo</code></a> with its <code>satisfaction_weight</code>.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.satisfaction_weight" class="structfield small-section-header"><a href="#structfield.satisfaction_weight" class="anchor field"></a><code>satisfaction_weight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The weight of the witness data and <code>scriptSig</code> expressed in <a href="https://en.bitcoin.it/wiki/Weight_units">weight units</a>. This is used to
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.satisfaction_weight" class="structfield small-section-header"><a href="#structfield.satisfaction_weight" class="anchor field">§</a><code>satisfaction_weight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The weight of the witness data and <code>scriptSig</code> expressed in <a href="https://en.bitcoin.it/wiki/Weight_units">weight units</a>. This is used to
properly maintain the feerate when adding this input to a transaction during coin selection.</p>
-</div><span id="structfield.utxo" class="structfield small-section-header"><a href="#structfield.utxo" class="anchor field"></a><code>utxo: <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></code></span><div class="docblock"><p>The UTXO</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CWeightedUtxo%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#impl-PartialEq%3CWeightedUtxo%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#169" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><span id="structfield.utxo" class="structfield small-section-header"><a href="#structfield.utxo" class="anchor field">§</a><code>utxo: <a class="enum" href="enum.Utxo.html" title="enum bdk::Utxo">Utxo</a></code></span><div class="docblock"><p>The UTXO</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#impl-Clone-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#impl-Debug-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CWeightedUtxo%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#impl-PartialEq%3CWeightedUtxo%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Eq-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#impl-Eq-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section><section id="impl-StructuralEq-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#impl-StructuralEq-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section><section id="impl-StructuralPartialEq-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#169">source</a><a href="#impl-StructuralPartialEq-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section><section id="impl-Send-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-Send-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section><section id="impl-Sync-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-Sync-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section><section id="impl-Unpin-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-Unpin-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section><section id="impl-UnwindSafe-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-UnwindSafe-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-Pointable-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-WeightedUtxo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-WeightedUtxo" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-WeightedUtxo" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait implemented by types that can be used to measure weight units."><meta name="keywords" content="rust, rustlang, rust-lang, Vbytes"><title>Vbytes in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Vbytes</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.vbytes">vbytes</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-Vbytes-for-usize">usize</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="Vbytes" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="index.html">bdk</a>::<wbr><a class="trait" href="#">Vbytes</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#141-144" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Vbytes {
- fn <a href="#tymethod.vbytes" class="fnname">vbytes</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait implemented by types that can be used to measure weight units."><meta name="keywords" content="rust, rustlang, rust-lang, Vbytes"><title>Vbytes in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Vbytes</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.vbytes">vbytes</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Vbytes-for-usize">usize</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="index.html">bdk</a>::<wbr><a class="trait" href="#">Vbytes</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#141-144">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait Vbytes {
+ fn <a href="#tymethod.vbytes" class="fn">vbytes</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait implemented by types that can be used to measure weight units.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.vbytes" class="method has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#143" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.vbytes" class="fnname">vbytes</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class="docblock"><p>Convert weight units to virtual bytes.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Vbytes-for-usize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#146-151" title="goto source code">source</a></div><a href="#impl-Vbytes-for-usize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.Vbytes.html" title="trait bdk::Vbytes">Vbytes</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h3></div></summary><div class="impl-items"><div id="method.vbytes" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../src/bdk/types.rs.html#147-150" title="goto source code">source</a></div><a href="#method.vbytes" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.vbytes" class="fnname">vbytes</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"></div><script type="text/javascript" src="../implementors/bdk/trait.Vbytes.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.vbytes" class="method has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#143">source</a><h4 class="code-header">fn <a href="#tymethod.vbytes" class="fn">vbytes</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Convert weight units to virtual bytes.</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Vbytes-for-usize" class="impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#146-151">source</a><a href="#impl-Vbytes-for-usize" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Vbytes.html" title="trait bdk::Vbytes">Vbytes</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h3></section></summary><div class="impl-items"><section id="method.vbytes" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/bdk/types.rs.html#147-150">source</a><a href="#method.vbytes" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.vbytes" class="fn">vbytes</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../implementors/bdk/types/trait.Vbytes.js" data-ignore-extern-crates="std" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="DEPRECATED: Confirmation time of a transaction"><meta name="keywords" content="rust, rustlang, rust-lang, ConfirmationTime"><title>ConfirmationTime in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
- <noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ConfirmationTime</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="index.html">bdk</a></h2><div id="sidebar-vars" data-name="ConfirmationTime" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="index.html">bdk</a>::<wbr><a class="type" href="#">ConfirmationTime</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#263" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type ConfirmationTime = <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>;</code></pre></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>This structure has been renamed to <code>BlockTime</code></p>
-</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><strong>DEPRECATED</strong>: Confirmation time of a transaction</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="DEPRECATED: Confirmation time of a transaction"><meta name="keywords" content="rust, rustlang, rust-lang, ConfirmationTime"><title>ConfirmationTime in bdk - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ConfirmationTime</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="index.html">bdk</a>::<wbr><a class="type" href="#">ConfirmationTime</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/bdk/types.rs.html#263">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type ConfirmationTime = <a class="struct" href="struct.BlockTime.html" title="struct bdk::BlockTime">BlockTime</a>;</code></pre></div><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: This structure has been renamed to <code>BlockTime</code></span></div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><strong>DEPRECATED</strong>: Confirmation time of a transaction</p>
<p>The structure has been renamed to <code>BlockTime</code></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Remaining amount after performing coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, Excess"><title>Excess in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Excess</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Change">Change</a><a href="#variant.NoChange">NoChange</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="Excess" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="enum" href="#">Excess</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#126-143" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum Excess {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Remaining amount after performing coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, Excess"><title>Excess in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Excess</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Change">Change</a></li><li><a href="#variant.NoChange">NoChange</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Excess">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Excess">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Excess">Send</a></li><li><a href="#impl-Sync-for-Excess">Sync</a></li><li><a href="#impl-Unpin-for-Excess">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Excess">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Excess">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Excess">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Excess">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Excess">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Excess">Into<U></a></li><li><a href="#impl-Pointable-for-Excess">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Excess">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Excess">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Excess">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="enum" href="#">Excess</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#126-143">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum Excess {
NoChange {
dust_threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
remaining_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
},
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Remaining amount after performing coin selection</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.NoChange" class="variant small-section-header"><a href="#variant.NoChange" class="anchor field"></a><code>NoChange</code></h3><div class="sub-variant" id="variant.NoChange.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.NoChange.field.dust_threshold" class="variant small-section-header"><a href="#variant.NoChange.field.dust_threshold" class="anchor field"></a><code>dust_threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Threshold to consider amount as dust for this particular change script_pubkey</p>
-</div></div><div class="sub-variant-field"><span id="variant.NoChange.field.remaining_amount" class="variant small-section-header"><a href="#variant.NoChange.field.remaining_amount" class="anchor field"></a><code>remaining_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Exceeding amount of current selection over outgoing value and fee costs</p>
-</div></div><div class="sub-variant-field"><span id="variant.NoChange.field.change_fee" class="variant small-section-header"><a href="#variant.NoChange.field.change_fee" class="anchor field"></a><code>change_fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The calculated fee for the drain TxOut with the selected script_pubkey</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.NoChange" class="variant"><a href="#variant.NoChange" class="anchor">§</a><h3 class="code-header">NoChange</h3></section><div class="sub-variant" id="variant.NoChange.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.NoChange.field.dust_threshold" class="small-section-header"><a href="#variant.NoChange.field.dust_threshold" class="anchor field">§</a><code>dust_threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Threshold to consider amount as dust for this particular change script_pubkey</p>
+</div></div><div class="sub-variant-field"><span id="variant.NoChange.field.remaining_amount" class="small-section-header"><a href="#variant.NoChange.field.remaining_amount" class="anchor field">§</a><code>remaining_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Exceeding amount of current selection over outgoing value and fee costs</p>
+</div></div><div class="sub-variant-field"><span id="variant.NoChange.field.change_fee" class="small-section-header"><a href="#variant.NoChange.field.change_fee" class="anchor field">§</a><code>change_fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The calculated fee for the drain TxOut with the selected script_pubkey</p>
</div></div></div><div class="docblock"><p>It’s not possible to create spendable output from excess using the current drain output</p>
-</div><h3 id="variant.Change" class="variant small-section-header"><a href="#variant.Change" class="anchor field"></a><code>Change</code></h3><div class="sub-variant" id="variant.Change.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Change.field.amount" class="variant small-section-header"><a href="#variant.Change.field.amount" class="anchor field"></a><code>amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Effective amount available to create change after deducting the change output fee</p>
-</div></div><div class="sub-variant-field"><span id="variant.Change.field.fee" class="variant small-section-header"><a href="#variant.Change.field.fee" class="anchor field"></a><code>fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The deducted change output fee</p>
+</div><section id="variant.Change" class="variant"><a href="#variant.Change" class="anchor">§</a><h3 class="code-header">Change</h3></section><div class="sub-variant" id="variant.Change.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Change.field.amount" class="small-section-header"><a href="#variant.Change.field.amount" class="anchor field">§</a><code>amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Effective amount available to create change after deducting the change output fee</p>
+</div></div><div class="sub-variant-field"><span id="variant.Change.field.fee" class="small-section-header"><a href="#variant.Change.field.fee" class="anchor field">§</a><code>fee: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The deducted change output fee</p>
</div></div></div><div class="docblock"><p>It’s possible to create spendable output from excess using the current drain output</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#124" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#124" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#124">source</a><a href="#impl-Debug-for-Excess" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#124">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Excess" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Excess" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></section><section id="impl-Send-for-Excess" class="impl has-srclink"><a href="#impl-Send-for-Excess" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></section><section id="impl-Sync-for-Excess" class="impl has-srclink"><a href="#impl-Sync-for-Excess" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></section><section id="impl-Unpin-for-Excess" class="impl has-srclink"><a href="#impl-Unpin-for-Excess" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></section><section id="impl-UnwindSafe-for-Excess" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Excess" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Excess" class="impl has-srclink"><a href="#impl-Pointable-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Excess" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Excess" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Excess" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Decide if change can be created"><meta name="keywords" content="rust, rustlang, rust-lang, decide_change"><title>decide_change in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="decide_change" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="fn" href="#">decide_change</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#306-325" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn decide_change(<br> remaining_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <br> drain_script: &Script<br>) -> <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Decide if change can be created</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Decide if change can be created"><meta name="keywords" content="rust, rustlang, rust-lang, decide_change"><title>decide_change in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="fn" href="#">decide_change</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#306-325">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn decide_change(<br> remaining_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,<br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>,<br> drain_script: &Script<br>) -> <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Decide if change can be created</p>
<ul>
<li><code>remaining_amount</code>: the amount in which the selected coins exceed the target amount</li>
<li><code>fee_rate</code>: required fee rate for the current selection</li>
<li><code>drain_script</code>: script to consider change creation</li>
</ul>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, coin_selection"><title>bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module coin_selection</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="coin_selection" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">coin_selection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#12-1600" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Coin selection</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, coin_selection"><title>bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module coin_selection</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">coin_selection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#12-1600">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Coin selection</p>
<p>This module provides the trait <a href="trait.CoinSelectionAlgorithm.html" title="CoinSelectionAlgorithm"><code>CoinSelectionAlgorithm</code></a> that can be implemented to
define custom coin selection algorithms.</p>
<p>You can specify a custom coin selection algorithm through the <a href="../tx_builder/struct.TxBuilder.html#method.coin_selection"><code>coin_selection</code></a> method on
<a href="../tx_builder/struct.TxBuilder.html"><code>TxBuilder</code></a>. <a href="type.DefaultCoinSelectionAlgorithm.html" title="DefaultCoinSelectionAlgorithm"><code>DefaultCoinSelectionAlgorithm</code></a> aliases the coin selection algorithm that will
be used if it is not explicitly set.</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">struct</span> <span class="ident">AlwaysSpendEverything</span>;
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#[derive(Debug)]
+</span><span class="kw">struct </span>AlwaysSpendEverything;
-<span class="kw">impl</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span> <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span> <span class="kw">for</span> <span class="ident">AlwaysSpendEverything</span> {
- <span class="kw">fn</span> <span class="ident">coin_select</span>(
+<span class="kw">impl</span><D: Database> CoinSelectionAlgorithm<D> <span class="kw">for </span>AlwaysSpendEverything {
+ <span class="kw">fn </span>coin_select(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&</span><span class="ident">D</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- <span class="ident">target_amount</span>: <span class="ident">u64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">bdk::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">selected_amount</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">additional_weight</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">all_utxos_selected</span> <span class="op">=</span> <span class="ident">required_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">chain</span>(<span class="ident">optional_utxos</span>)
- .<span class="ident">scan</span>(
- (<span class="kw-2">&mut</span> <span class="ident">selected_amount</span>, <span class="kw-2">&mut</span> <span class="ident">additional_weight</span>),
- <span class="op">|</span>(<span class="ident">selected_amount</span>, <span class="ident">additional_weight</span>), <span class="ident">weighted_utxo</span><span class="op">|</span> {
- <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">selected_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>;
- <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">additional_weight</span> <span class="op">+</span><span class="op">=</span> <span class="ident">TXIN_BASE_WEIGHT</span> <span class="op">+</span> <span class="ident">weighted_utxo</span>.<span class="ident">satisfaction_weight</span>;
- <span class="prelude-val">Some</span>(<span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>)
+ database: <span class="kw-2">&</span>D,
+ required_utxos: Vec<WeightedUtxo>,
+ optional_utxos: Vec<WeightedUtxo>,
+ fee_rate: FeeRate,
+ target_amount: u64,
+ drain_script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><CoinSelectionResult, bdk::Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>selected_amount = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>additional_weight = <span class="number">0</span>;
+ <span class="kw">let </span>all_utxos_selected = required_utxos
+ .into_iter()
+ .chain(optional_utxos)
+ .scan(
+ (<span class="kw-2">&mut </span>selected_amount, <span class="kw-2">&mut </span>additional_weight),
+ |(selected_amount, additional_weight), weighted_utxo| {
+ <span class="kw-2">**</span>selected_amount += weighted_utxo.utxo.txout().value;
+ <span class="kw-2">**</span>additional_weight += TXIN_BASE_WEIGHT + weighted_utxo.satisfaction_weight;
+ <span class="prelude-val">Some</span>(weighted_utxo.utxo)
},
)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">let</span> <span class="ident">additional_fees</span> <span class="op">=</span> <span class="ident">fee_rate</span>.<span class="ident">fee_wu</span>(<span class="ident">additional_weight</span>);
- <span class="kw">let</span> <span class="ident">amount_needed_with_fees</span> <span class="op">=</span> <span class="ident">additional_fees</span> <span class="op">+</span> <span class="ident">target_amount</span>;
- <span class="kw">if</span> <span class="ident">selected_amount</span> <span class="op"><</span> <span class="ident">amount_needed_with_fees</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">bdk::Error::InsufficientFunds</span> {
- <span class="ident">needed</span>: <span class="ident">amount_needed_with_fees</span>,
- <span class="ident">available</span>: <span class="ident">selected_amount</span>,
+ .collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">let </span>additional_fees = fee_rate.fee_wu(additional_weight);
+ <span class="kw">let </span>amount_needed_with_fees = additional_fees + target_amount;
+ <span class="kw">if </span>selected_amount < amount_needed_with_fees {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(bdk::Error::InsufficientFunds {
+ needed: amount_needed_with_fees,
+ available: selected_amount,
});
}
- <span class="kw">let</span> <span class="ident">remaining_amount</span> <span class="op">=</span> <span class="ident">selected_amount</span> <span class="op">-</span> <span class="ident">amount_needed_with_fees</span>;
+ <span class="kw">let </span>remaining_amount = selected_amount - amount_needed_with_fees;
- <span class="kw">let</span> <span class="ident">excess</span> <span class="op">=</span> <span class="ident">decide_change</span>(<span class="ident">remaining_amount</span>, <span class="ident">fee_rate</span>, <span class="ident">drain_script</span>);
+ <span class="kw">let </span>excess = decide_change(remaining_amount, fee_rate, drain_script);
- <span class="prelude-val">Ok</span>(<span class="ident">CoinSelectionResult</span> {
- <span class="ident">selected</span>: <span class="ident">all_utxos_selected</span>,
- <span class="ident">fee_amount</span>: <span class="ident">additional_fees</span>,
- <span class="ident">excess</span>,
+ <span class="prelude-val">Ok</span>(CoinSelectionResult {
+ selected: all_utxos_selected,
+ fee_amount: additional_fees,
+ excess,
})
}
}
-<span class="comment">// create wallet, sync, ...</span>
+<span class="comment">// create wallet, sync, ...
-<span class="kw">let</span> <span class="ident">to_address</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt"</span>).<span class="ident">unwrap</span>();
-<span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>().<span class="ident">coin_selection</span>(<span class="ident">AlwaysSpendEverything</span>);
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
+</span><span class="kw">let </span>to_address = Address::from_str(<span class="string">"2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt"</span>).unwrap();
+<span class="kw">let </span>(psbt, details) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx().coin_selection(AlwaysSpendEverything);
+ builder.add_recipient(to_address.script_pubkey(), <span class="number">50_000</span>);
+ builder.finish()<span class="question-mark">?
+</span>};
-<span class="comment">// inspect, sign, broadcast, ...</span>
-</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="bdk::wallet::coin_selection::BranchAndBoundCoinSelection struct">BranchAndBoundCoinSelection</a></div><div class="item-right docblock-short"><p>Branch and bound coin selection</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CoinSelectionResult.html" title="bdk::wallet::coin_selection::CoinSelectionResult struct">CoinSelectionResult</a></div><div class="item-right docblock-short"><p>Result of a successful coin selection</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.LargestFirstCoinSelection.html" title="bdk::wallet::coin_selection::LargestFirstCoinSelection struct">LargestFirstCoinSelection</a></div><div class="item-right docblock-short"><p>Simple and dumb coin selection</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OldestFirstCoinSelection.html" title="bdk::wallet::coin_selection::OldestFirstCoinSelection struct">OldestFirstCoinSelection</a></div><div class="item-right docblock-short"><p>OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Excess.html" title="bdk::wallet::coin_selection::Excess enum">Excess</a></div><div class="item-right docblock-short"><p>Remaining amount after performing coin selection</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.CoinSelectionAlgorithm.html" title="bdk::wallet::coin_selection::CoinSelectionAlgorithm trait">CoinSelectionAlgorithm</a></div><div class="item-right docblock-short"><p>Trait for generalized coin selection algorithms</p>
-</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.decide_change.html" title="bdk::wallet::coin_selection::decide_change fn">decide_change</a></div><div class="item-right docblock-short"><p>Decide if change can be created</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.DefaultCoinSelectionAlgorithm.html" title="bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm type">DefaultCoinSelectionAlgorithm</a></div><div class="item-right docblock-short"><p>Default coin selection algorithm used by <a href="../tx_builder/struct.TxBuilder.html"><code>TxBuilder</code></a> if not
-overridden</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="comment">// inspect, sign, broadcast, ...
+</span></code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="bdk::wallet::coin_selection::BranchAndBoundCoinSelection struct">BranchAndBoundCoinSelection</a></div><div class="item-right docblock-short">Branch and bound coin selection</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CoinSelectionResult.html" title="bdk::wallet::coin_selection::CoinSelectionResult struct">CoinSelectionResult</a></div><div class="item-right docblock-short">Result of a successful coin selection</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.LargestFirstCoinSelection.html" title="bdk::wallet::coin_selection::LargestFirstCoinSelection struct">LargestFirstCoinSelection</a></div><div class="item-right docblock-short">Simple and dumb coin selection</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OldestFirstCoinSelection.html" title="bdk::wallet::coin_selection::OldestFirstCoinSelection struct">OldestFirstCoinSelection</a></div><div class="item-right docblock-short">OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Excess.html" title="bdk::wallet::coin_selection::Excess enum">Excess</a></div><div class="item-right docblock-short">Remaining amount after performing coin selection</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.CoinSelectionAlgorithm.html" title="bdk::wallet::coin_selection::CoinSelectionAlgorithm trait">CoinSelectionAlgorithm</a></div><div class="item-right docblock-short">Trait for generalized coin selection algorithms</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.decide_change.html" title="bdk::wallet::coin_selection::decide_change fn">decide_change</a></div><div class="item-right docblock-short">Decide if change can be created</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.DefaultCoinSelectionAlgorithm.html" title="bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm type">DefaultCoinSelectionAlgorithm</a></div><div class="item-right docblock-short">Default coin selection algorithm used by <a href="../tx_builder/struct.TxBuilder.html"><code>TxBuilder</code></a> if not
+overridden</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["Excess","Remaining amount after performing coin selection"]],"fn":[["decide_change","Decide if change can be created"]],"struct":[["BranchAndBoundCoinSelection","Branch and bound coin selection"],["CoinSelectionResult","Result of a successful coin selection"],["LargestFirstCoinSelection","Simple and dumb coin selection"],["OldestFirstCoinSelection","OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next"]],"trait":[["CoinSelectionAlgorithm","Trait for generalized coin selection algorithms"]],"type":[["DefaultCoinSelectionAlgorithm","Default coin selection algorithm used by `TxBuilder` if not overridden"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["Excess","Remaining amount after performing coin selection"]],"fn":[["decide_change","Decide if change can be created"]],"struct":[["BranchAndBoundCoinSelection","Branch and bound coin selection"],["CoinSelectionResult","Result of a successful coin selection"],["LargestFirstCoinSelection","Simple and dumb coin selection"],["OldestFirstCoinSelection","OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next"]],"trait":[["CoinSelectionAlgorithm","Trait for generalized coin selection algorithms"]],"type":[["DefaultCoinSelectionAlgorithm","Default coin selection algorithm used by `TxBuilder` if not overridden"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Branch and bound coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, BranchAndBoundCoinSelection"><title>BranchAndBoundCoinSelection in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BranchAndBoundCoinSelection</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-CoinSelectionAlgorithm%3CD%3E">CoinSelectionAlgorithm<D></a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="BranchAndBoundCoinSelection" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">BranchAndBoundCoinSelection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#403-405" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct BranchAndBoundCoinSelection { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Branch and bound coin selection</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Branch and bound coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, BranchAndBoundCoinSelection"><title>BranchAndBoundCoinSelection in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BranchAndBoundCoinSelection</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-BranchAndBoundCoinSelection">CoinSelectionAlgorithm<D></a></li><li><a href="#impl-Debug-for-BranchAndBoundCoinSelection">Debug</a></li><li><a href="#impl-Default-for-BranchAndBoundCoinSelection">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-BranchAndBoundCoinSelection">RefUnwindSafe</a></li><li><a href="#impl-Send-for-BranchAndBoundCoinSelection">Send</a></li><li><a href="#impl-Sync-for-BranchAndBoundCoinSelection">Sync</a></li><li><a href="#impl-Unpin-for-BranchAndBoundCoinSelection">Unpin</a></li><li><a href="#impl-UnwindSafe-for-BranchAndBoundCoinSelection">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-BranchAndBoundCoinSelection">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-BranchAndBoundCoinSelection">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-BranchAndBoundCoinSelection">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-BranchAndBoundCoinSelection">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-BranchAndBoundCoinSelection">Into<U></a></li><li><a href="#impl-Pointable-for-BranchAndBoundCoinSelection">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-BranchAndBoundCoinSelection">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-BranchAndBoundCoinSelection">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-BranchAndBoundCoinSelection">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">BranchAndBoundCoinSelection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#403-405">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct BranchAndBoundCoinSelection { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Branch and bound coin selection</p>
<p>Code adapted from Bitcoin Core’s implementation and from Mark Erhardt Master’s Thesis: <a href="http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf">http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf</a></p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#416-421" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#418-420" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(size_of_change: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> Self</h4></div></summary><div class="docblock"><p>Create new instance with target size for change output</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CoinSelectionAlgorithm%3CD%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#425-535" title="goto source code">source</a></div><a href="#impl-CoinSelectionAlgorithm%3CD%3E" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.coin_select" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#426-534" title="goto source code">source</a></div><a href="#method.coin_select" class="anchor"></a><h4 class="code-header">fn <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select" class="fnname">coin_select</a>(<br> &self, <br> _database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D, <br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Perform the coin selection <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#402" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#402" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#407-414" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#408-413" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#416-421">source</a><a href="#impl-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#418-420">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(size_of_change: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> Self</h4></section></summary><div class="docblock"><p>Create new instance with target size for change output</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-CoinSelectionAlgorithm%3CD%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#425-535">source</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.coin_select" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#426-534">source</a><a href="#method.coin_select" class="anchor">§</a><h4 class="code-header">fn <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select" class="fn">coin_select</a>(<br> &self,<br> _database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D,<br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>,<br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,<br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Perform the coin selection <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#402">source</a><a href="#impl-Debug-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#402">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#407-414">source</a><a href="#impl-Default-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#408-413">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section><section id="impl-Send-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-Send-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section><section id="impl-Sync-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-Sync-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section><section id="impl-Unpin-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-Unpin-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section><section id="impl-UnwindSafe-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-UnwindSafe-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-Pointable-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Result of a successful coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, CoinSelectionResult"><title>CoinSelectionResult in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">CoinSelectionResult</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.excess">excess</a><a href="#structfield.fee_amount">fee_amount</a><a href="#structfield.selected">selected</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.local_selected_amount">local_selected_amount</a><a href="#method.selected_amount">selected_amount</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="CoinSelectionResult" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">CoinSelectionResult</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#147-154" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct CoinSelectionResult {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Result of a successful coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, CoinSelectionResult"><title>CoinSelectionResult in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">CoinSelectionResult</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.excess">excess</a></li><li><a href="#structfield.fee_amount">fee_amount</a></li><li><a href="#structfield.selected">selected</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.local_selected_amount">local_selected_amount</a></li><li><a href="#method.selected_amount">selected_amount</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-CoinSelectionResult">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CoinSelectionResult">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CoinSelectionResult">Send</a></li><li><a href="#impl-Sync-for-CoinSelectionResult">Sync</a></li><li><a href="#impl-Unpin-for-CoinSelectionResult">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CoinSelectionResult">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-CoinSelectionResult">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-CoinSelectionResult">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-CoinSelectionResult">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-CoinSelectionResult">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-CoinSelectionResult">Into<U></a></li><li><a href="#impl-Pointable-for-CoinSelectionResult">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-CoinSelectionResult">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-CoinSelectionResult">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-CoinSelectionResult">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">CoinSelectionResult</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#147-154">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct CoinSelectionResult {
pub selected: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="enum" href="../../enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>>,
pub fee_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
pub excess: <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Result of a successful coin selection</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.selected" class="structfield small-section-header"><a href="#structfield.selected" class="anchor field"></a><code>selected: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="enum" href="../../enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>></code></span><div class="docblock"><p>List of outputs selected for use as inputs</p>
-</div><span id="structfield.fee_amount" class="structfield small-section-header"><a href="#structfield.fee_amount" class="anchor field"></a><code>fee_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Total fee amount for the selected utxos in satoshis</p>
-</div><span id="structfield.excess" class="structfield small-section-header"><a href="#structfield.excess" class="anchor field"></a><code>excess: <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></code></span><div class="docblock"><p>Remaining amount after deducing fees and outgoing outputs</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#156-172" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.selected_amount" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#158-160" title="goto source code">source</a></div><a href="#method.selected_amount" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.selected_amount" class="fnname">selected_amount</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>The total value of the inputs selected.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.local_selected_amount" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#163-171" title="goto source code">source</a></div><a href="#method.local_selected_amount" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.local_selected_amount" class="fnname">local_selected_amount</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>The total value of the inputs selected from the local wallet.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#146" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#146" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.selected" class="structfield small-section-header"><a href="#structfield.selected" class="anchor field">§</a><code>selected: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="enum" href="../../enum.Utxo.html" title="enum bdk::Utxo">Utxo</a>></code></span><div class="docblock"><p>List of outputs selected for use as inputs</p>
+</div><span id="structfield.fee_amount" class="structfield small-section-header"><a href="#structfield.fee_amount" class="anchor field">§</a><code>fee_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>Total fee amount for the selected utxos in satoshis</p>
+</div><span id="structfield.excess" class="structfield small-section-header"><a href="#structfield.excess" class="anchor field">§</a><code>excess: <a class="enum" href="enum.Excess.html" title="enum bdk::wallet::coin_selection::Excess">Excess</a></code></span><div class="docblock"><p>Remaining amount after deducing fees and outgoing outputs</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#156-172">source</a><a href="#impl-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.selected_amount" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#158-160">source</a><h4 class="code-header">pub fn <a href="#method.selected_amount" class="fn">selected_amount</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>The total value of the inputs selected.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.local_selected_amount" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#163-171">source</a><h4 class="code-header">pub fn <a href="#method.local_selected_amount" class="fn">local_selected_amount</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>The total value of the inputs selected from the local wallet.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#146">source</a><a href="#impl-Debug-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#146">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section><section id="impl-Send-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-Send-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section><section id="impl-Sync-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-Sync-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section><section id="impl-Unpin-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-Unpin-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section><section id="impl-UnwindSafe-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-UnwindSafe-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-Pointable-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-CoinSelectionResult" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-CoinSelectionResult" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-CoinSelectionResult" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Simple and dumb coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, LargestFirstCoinSelection"><title>LargestFirstCoinSelection in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">LargestFirstCoinSelection</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E">CoinSelectionAlgorithm<D></a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="LargestFirstCoinSelection" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">LargestFirstCoinSelection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#210" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct LargestFirstCoinSelection;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Simple and dumb coin selection</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Simple and dumb coin selection"><meta name="keywords" content="rust, rustlang, rust-lang, LargestFirstCoinSelection"><title>LargestFirstCoinSelection in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">LargestFirstCoinSelection</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-LargestFirstCoinSelection">Clone</a></li><li><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-LargestFirstCoinSelection">CoinSelectionAlgorithm<D></a></li><li><a href="#impl-Copy-for-LargestFirstCoinSelection">Copy</a></li><li><a href="#impl-Debug-for-LargestFirstCoinSelection">Debug</a></li><li><a href="#impl-Default-for-LargestFirstCoinSelection">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-LargestFirstCoinSelection">RefUnwindSafe</a></li><li><a href="#impl-Send-for-LargestFirstCoinSelection">Send</a></li><li><a href="#impl-Sync-for-LargestFirstCoinSelection">Sync</a></li><li><a href="#impl-Unpin-for-LargestFirstCoinSelection">Unpin</a></li><li><a href="#impl-UnwindSafe-for-LargestFirstCoinSelection">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-LargestFirstCoinSelection">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-LargestFirstCoinSelection">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-LargestFirstCoinSelection">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-LargestFirstCoinSelection">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-LargestFirstCoinSelection">Into<U></a></li><li><a href="#impl-Pointable-for-LargestFirstCoinSelection">Pointable</a></li><li><a href="#impl-ToOwned-for-LargestFirstCoinSelection">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-LargestFirstCoinSelection">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-LargestFirstCoinSelection">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-LargestFirstCoinSelection">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">LargestFirstCoinSelection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#210">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct LargestFirstCoinSelection;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Simple and dumb coin selection</p>
<p>This coin selection algorithm sorts the available UTXOs by value and then picks them starting
from the largest ones until the required amount is reached.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CoinSelectionAlgorithm%3CD%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#212-240" title="goto source code">source</a></div><a href="#impl-CoinSelectionAlgorithm%3CD%3E" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.coin_select" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#213-239" title="goto source code">source</a></div><a href="#method.coin_select" class="anchor"></a><h4 class="code-header">fn <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select" class="fnname">coin_select</a>(<br> &self, <br> _database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D, <br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Perform the coin selection <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#209" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#impl-Clone-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-CoinSelectionAlgorithm%3CD%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#212-240">source</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.coin_select" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#213-239">source</a><a href="#method.coin_select" class="anchor">§</a><h4 class="code-header">fn <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select" class="fn">coin_select</a>(<br> &self,<br> _database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D,<br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>,<br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,<br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Perform the coin selection <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#impl-Debug-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#impl-Default-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><section id="impl-Copy-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#209">source</a><a href="#impl-Copy-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section><section id="impl-Send-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Send-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section><section id="impl-Sync-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Sync-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section><section id="impl-Unpin-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Unpin-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section><section id="impl-UnwindSafe-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-UnwindSafe-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Pointable-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next"><meta name="keywords" content="rust, rustlang, rust-lang, OldestFirstCoinSelection"><title>OldestFirstCoinSelection in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">OldestFirstCoinSelection</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E">CoinSelectionAlgorithm<D></a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="OldestFirstCoinSelection" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">OldestFirstCoinSelection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#247" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct OldestFirstCoinSelection;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next"><meta name="keywords" content="rust, rustlang, rust-lang, OldestFirstCoinSelection"><title>OldestFirstCoinSelection in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">OldestFirstCoinSelection</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-OldestFirstCoinSelection">Clone</a></li><li><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-OldestFirstCoinSelection">CoinSelectionAlgorithm<D></a></li><li><a href="#impl-Copy-for-OldestFirstCoinSelection">Copy</a></li><li><a href="#impl-Debug-for-OldestFirstCoinSelection">Debug</a></li><li><a href="#impl-Default-for-OldestFirstCoinSelection">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-OldestFirstCoinSelection">RefUnwindSafe</a></li><li><a href="#impl-Send-for-OldestFirstCoinSelection">Send</a></li><li><a href="#impl-Sync-for-OldestFirstCoinSelection">Sync</a></li><li><a href="#impl-Unpin-for-OldestFirstCoinSelection">Unpin</a></li><li><a href="#impl-UnwindSafe-for-OldestFirstCoinSelection">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-OldestFirstCoinSelection">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-OldestFirstCoinSelection">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-OldestFirstCoinSelection">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-OldestFirstCoinSelection">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-OldestFirstCoinSelection">Into<U></a></li><li><a href="#impl-Pointable-for-OldestFirstCoinSelection">Pointable</a></li><li><a href="#impl-ToOwned-for-OldestFirstCoinSelection">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-OldestFirstCoinSelection">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-OldestFirstCoinSelection">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-OldestFirstCoinSelection">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="struct" href="#">OldestFirstCoinSelection</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#247">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct OldestFirstCoinSelection;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next</p>
<p>This coin selection algorithm sorts the available UTXOs by blockheight and then picks them starting
from the oldest ones until the required amount is reached.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CoinSelectionAlgorithm%3CD%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#249-299" title="goto source code">source</a></div><a href="#impl-CoinSelectionAlgorithm%3CD%3E" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.coin_select" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#250-298" title="goto source code">source</a></div><a href="#method.coin_select" class="anchor"></a><h4 class="code-header">fn <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select" class="fnname">coin_select</a>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D, <br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class='docblock'><p>Perform the coin selection <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#246" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#impl-Clone-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-CoinSelectionAlgorithm%3CD%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#249-299">source</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.coin_select" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#250-298">source</a><a href="#method.coin_select" class="anchor">§</a><h4 class="code-header">fn <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select" class="fn">coin_select</a>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D,<br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>,<br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,<br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class='docblock'>Perform the coin selection <a href="trait.CoinSelectionAlgorithm.html#tymethod.coin_select">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#impl-Debug-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#impl-Default-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><section id="impl-Copy-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#246">source</a><a href="#impl-Copy-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section><section id="impl-Send-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Send-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section><section id="impl-Sync-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Sync-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section><section id="impl-Unpin-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Unpin-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section><section id="impl-UnwindSafe-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-UnwindSafe-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-Pointable-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for generalized coin selection algorithms"><meta name="keywords" content="rust, rustlang, rust-lang, CoinSelectionAlgorithm"><title>CoinSelectionAlgorithm in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">CoinSelectionAlgorithm</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.coin_select">coin_select</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="CoinSelectionAlgorithm" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="trait" href="#">CoinSelectionAlgorithm</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#180-203" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait CoinSelectionAlgorithm<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> {
- fn <a href="#tymethod.coin_select" class="fnname">coin_select</a>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D, <br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <br> drain_script: &Script<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for generalized coin selection algorithms"><meta name="keywords" content="rust, rustlang, rust-lang, CoinSelectionAlgorithm"><title>CoinSelectionAlgorithm in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">CoinSelectionAlgorithm</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.coin_select">coin_select</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="trait" href="#">CoinSelectionAlgorithm</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#180-203">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait CoinSelectionAlgorithm<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> {
+ fn <a href="#tymethod.coin_select" class="fn">coin_select</a>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D,<br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>,<br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,<br> drain_script: &Script<br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for generalized coin selection algorithms</p>
<p>This trait can be implemented to make the <a href="../struct.Wallet.html"><code>Wallet</code></a> use a customized coin
selection algorithm when it creates transactions.</p>
<p>For an example see <a href="index.html">this module</a>’s documentation.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.coin_select" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#194-202" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.coin_select" class="fnname">coin_select</a>(<br> &self, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D, <br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>, <br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>, <br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Perform the coin selection</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.coin_select" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#194-202">source</a><h4 class="code-header">fn <a href="#tymethod.coin_select" class="fn">coin_select</a>(<br> &self,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D,<br> required_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> optional_utxos: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../../struct.WeightedUtxo.html" title="struct bdk::WeightedUtxo">WeightedUtxo</a>>,<br> fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>,<br> target_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,<br> drain_script: &Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.CoinSelectionResult.html" title="struct bdk::wallet::coin_selection::CoinSelectionResult">CoinSelectionResult</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Perform the coin selection</p>
<ul>
<li><code>database</code>: a reference to the wallet’s database that can be used to lookup additional
details for a specific UTXO</li>
accumulated from added outputs and transaction’s header.</li>
<li><code>drain_script</code>: the script to use in case of change</li>
</ul>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-CoinSelectionAlgorithm%3CD%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#425-535" title="goto source code">source</a></div><a href="#impl-CoinSelectionAlgorithm%3CD%3E" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></div><div id="impl-CoinSelectionAlgorithm%3CD%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#212-240" title="goto source code">source</a></div><a href="#impl-CoinSelectionAlgorithm%3CD%3E-1" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></div><div id="impl-CoinSelectionAlgorithm%3CD%3E-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#249-299" title="goto source code">source</a></div><a href="#impl-CoinSelectionAlgorithm%3CD%3E-2" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></div></div><script type="text/javascript" src="../../../implementors/bdk/wallet/coin_selection/trait.CoinSelectionAlgorithm.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-CoinSelectionAlgorithm%3CD%3E-for-BranchAndBoundCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#425-535">source</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-BranchAndBoundCoinSelection" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a></h3></section><section id="impl-CoinSelectionAlgorithm%3CD%3E-for-LargestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#212-240">source</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-LargestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.LargestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::LargestFirstCoinSelection">LargestFirstCoinSelection</a></h3></section><section id="impl-CoinSelectionAlgorithm%3CD%3E-for-OldestFirstCoinSelection" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/coin_selection.rs.html#249-299">source</a><a href="#impl-CoinSelectionAlgorithm%3CD%3E-for-OldestFirstCoinSelection" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>> <a class="trait" href="trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D> for <a class="struct" href="struct.OldestFirstCoinSelection.html" title="struct bdk::wallet::coin_selection::OldestFirstCoinSelection">OldestFirstCoinSelection</a></h3></section></div><script src="../../../implementors/bdk/wallet/coin_selection/trait.CoinSelectionAlgorithm.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Default coin selection algorithm used by `TxBuilder` if not overridden"><meta name="keywords" content="rust, rustlang, rust-lang, DefaultCoinSelectionAlgorithm"><title>DefaultCoinSelectionAlgorithm in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">DefaultCoinSelectionAlgorithm</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a></h2><div id="sidebar-vars" data-name="DefaultCoinSelectionAlgorithm" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="type" href="#">DefaultCoinSelectionAlgorithm</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#116" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type DefaultCoinSelectionAlgorithm = <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Default coin selection algorithm used by <a href="../tx_builder/struct.TxBuilder.html"><code>TxBuilder</code></a> if not
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Default coin selection algorithm used by `TxBuilder` if not overridden"><meta name="keywords" content="rust, rustlang, rust-lang, DefaultCoinSelectionAlgorithm"><title>DefaultCoinSelectionAlgorithm in bdk::wallet::coin_selection - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">DefaultCoinSelectionAlgorithm</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet::coin_selection</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">coin_selection</a>::<wbr><a class="type" href="#">DefaultCoinSelectionAlgorithm</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/coin_selection.rs.html#116">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type DefaultCoinSelectionAlgorithm = <a class="struct" href="struct.BranchAndBoundCoinSelection.html" title="struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection">BranchAndBoundCoinSelection</a>;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Default coin selection algorithm used by <a href="../tx_builder/struct.TxBuilder.html"><code>TxBuilder</code></a> if not
overridden</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The address index selection strategy to use to derived an address from the wallet’s external descriptor. See [`Wallet::get_address`]. If you’re unsure which one to use use `WalletIndex::New`."><meta name="keywords" content="rust, rustlang, rust-lang, AddressIndex"><title>AddressIndex in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AddressIndex</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.LastUnused">LastUnused</a><a href="#variant.New">New</a><a href="#variant.Peek">Peek</a><a href="#variant.Reset">Reset</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="AddressIndex" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="enum" href="#">AddressIndex</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#107-133" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum AddressIndex {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The address index selection strategy to use to derived an address from the wallet’s external descriptor. See [`Wallet::get_address`]. If you’re unsure which one to use use `WalletIndex::New`."><meta name="keywords" content="rust, rustlang, rust-lang, AddressIndex"><title>AddressIndex in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AddressIndex</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.LastUnused">LastUnused</a></li><li><a href="#variant.New">New</a></li><li><a href="#variant.Peek">Peek</a></li><li><a href="#variant.Reset">Reset</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-AddressIndex">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AddressIndex">RefUnwindSafe</a></li><li><a href="#impl-Send-for-AddressIndex">Send</a></li><li><a href="#impl-Sync-for-AddressIndex">Sync</a></li><li><a href="#impl-Unpin-for-AddressIndex">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AddressIndex">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AddressIndex">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AddressIndex">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AddressIndex">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-AddressIndex">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AddressIndex">Into<U></a></li><li><a href="#impl-Pointable-for-AddressIndex">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AddressIndex">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AddressIndex">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AddressIndex">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="enum" href="#">AddressIndex</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#107-133">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum AddressIndex {
New,
LastUnused,
Peek(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>),
Reset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The address index selection strategy to use to derived an address from the wallet’s external
descriptor. See <a href="struct.Wallet.html#method.get_address" title="Wallet::get_address"><code>Wallet::get_address</code></a>. If you’re unsure which one to use use <code>WalletIndex::New</code>.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.New" class="variant small-section-header"><a href="#variant.New" class="anchor field"></a><code>New</code></h3><div class="docblock"><p>Return a new address after incrementing the current descriptor index.</p>
-</div><h3 id="variant.LastUnused" class="variant small-section-header"><a href="#variant.LastUnused" class="anchor field"></a><code>LastUnused</code></h3><div class="docblock"><p>Return the address for the current descriptor index if it has not been used in a received
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.New" class="variant"><a href="#variant.New" class="anchor">§</a><h3 class="code-header">New</h3></section><div class="docblock"><p>Return a new address after incrementing the current descriptor index.</p>
+</div><section id="variant.LastUnused" class="variant"><a href="#variant.LastUnused" class="anchor">§</a><h3 class="code-header">LastUnused</h3></section><div class="docblock"><p>Return the address for the current descriptor index if it has not been used in a received
transaction. Otherwise return a new address as with <a href="enum.AddressIndex.html#variant.New" title="AddressIndex::New"><code>AddressIndex::New</code></a>.</p>
<p>Use with caution, if the wallet has not yet detected an address has been used it could
return an already used address. This function is primarily meant for situations where the
caller is untrusted; for example when deriving donation addresses on-demand for a public
web page.</p>
-</div><h3 id="variant.Peek" class="variant small-section-header"><a href="#variant.Peek" class="anchor field"></a><code>Peek(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</code></h3><div class="docblock"><p>Return the address for a specific descriptor index. Does not change the current descriptor
+</div><section id="variant.Peek" class="variant"><a href="#variant.Peek" class="anchor">§</a><h3 class="code-header">Peek(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</h3></section><div class="docblock"><p>Return the address for a specific descriptor index. Does not change the current descriptor
index used by <code>AddressIndex::New</code> and <code>AddressIndex::LastUsed</code>.</p>
<p>Use with caution, if an index is given that is less than the current descriptor index
then the returned address may have already been used.</p>
-</div><h3 id="variant.Reset" class="variant small-section-header"><a href="#variant.Reset" class="anchor field"></a><code>Reset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</code></h3><div class="docblock"><p>Return the address for a specific descriptor index and reset the current descriptor index
+</div><section id="variant.Reset" class="variant"><a href="#variant.Reset" class="anchor">§</a><h3 class="code-header">Reset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</h3></section><div class="docblock"><p>Return the address for a specific descriptor index and reset the current descriptor index
used by <code>AddressIndex::New</code> and <code>AddressIndex::LastUsed</code> to this value.</p>
<p>Use with caution, if an index is given that is less than the current descriptor index
then the returned address and subsequent addresses returned by calls to <code>AddressIndex::New</code>
and <code>AddressIndex::LastUsed</code> may have already been used. Also if the index is reset to a
value earlier than the <a href="../blockchain/trait.Blockchain.html" title="crate::blockchain::Blockchain"><code>crate::blockchain::Blockchain</code></a> stop_gap (default is 20) then a
larger stop_gap should be used to monitor for all possibly used addresses.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#106" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#106" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#106">source</a><a href="#impl-Debug-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#106">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AddressIndex" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></section><section id="impl-Send-for-AddressIndex" class="impl has-srclink"><a href="#impl-Send-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></section><section id="impl-Sync-for-AddressIndex" class="impl has-srclink"><a href="#impl-Sync-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></section><section id="impl-Unpin-for-AddressIndex" class="impl has-srclink"><a href="#impl-Unpin-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></section><section id="impl-UnwindSafe-for-AddressIndex" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AddressIndex" class="impl has-srclink"><a href="#impl-Pointable-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AddressIndex" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AddressIndex" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AddressIndex" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wallet export"><meta name="keywords" content="rust, rustlang, rust-lang, export"><title>bdk::wallet::export - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module export</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="export" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">export</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#12-382" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wallet export</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wallet export"><meta name="keywords" content="rust, rustlang, rust-lang, export"><title>bdk::wallet::export - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module export</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#types">Type Definitions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">export</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#12-382">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wallet export</p>
<p>This modules implements the wallet export format used by <a href="https://github.com/Fonta1n3/FullyNoded/blob/10b7808c8b929b171cca537fb50522d015168ac9/Docs/Wallets/Wallet-Export-Spec.md">FullyNoded</a>.</p>
-<h3 id="examples" class="section-header"><a href="#examples">Examples</a></h3><h4 id="import-from-json" class="section-header"><a href="#import-from-json">Import from JSON</a></h4>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">import</span> <span class="op">=</span> <span class="string">r#"{
+<h3 id="examples"><a href="#examples">Examples</a></h3><h4 id="import-from-json"><a href="#import-from-json">Import from JSON</a></h4>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>import = <span class="string">r#"{
"descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
"blockheight":1782088,
"label":"testnet"
}"#</span>;
-<span class="kw">let</span> <span class="ident">import</span> <span class="op">=</span> <span class="ident">FullyNodedExport::from_str</span>(<span class="ident">import</span>)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">import</span>.<span class="ident">descriptor</span>(),
- <span class="ident">import</span>.<span class="ident">change_descriptor</span>().<span class="ident">as_ref</span>(),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+<span class="kw">let </span>import = FullyNodedExport::from_str(import)<span class="question-mark">?</span>;
+<span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>import.descriptor(),
+ import.change_descriptor().as_ref(),
+ Network::Testnet,
+ MemoryDatabase::default(),
)<span class="question-mark">?</span>;</code></pre></div>
-<h4 id="export-a-wallet" class="section-header"><a href="#export-a-wallet">Export a <code>Wallet</code></a></h4>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+<h4 id="export-a-wallet"><a href="#export-a-wallet">Export a <code>Wallet</code></a></h4>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)"</span>,
<span class="prelude-val">Some</span>(<span class="string">"wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"</span>),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::default</span>()
+ Network::Testnet,
+ MemoryDatabase::default()
)<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">export</span> <span class="op">=</span> <span class="ident">FullyNodedExport::export_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="string">"exported wallet"</span>, <span class="bool-val">true</span>)
- .<span class="ident">map_err</span>(<span class="ident">ToString::to_string</span>)
- .<span class="ident">map_err</span>(<span class="ident">bdk::Error::Generic</span>)<span class="question-mark">?</span>;
+<span class="kw">let </span>export = FullyNodedExport::export_wallet(<span class="kw-2">&</span>wallet, <span class="string">"exported wallet"</span>, <span class="bool-val">true</span>)
+ .map_err(ToString::to_string)
+ .map_err(bdk::Error::Generic)<span class="question-mark">?</span>;
-<span class="macro">println!</span>(<span class="string">"Exported: {}"</span>, <span class="ident">export</span>.<span class="ident">to_string</span>());</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.FullyNodedExport.html" title="bdk::wallet::export::FullyNodedExport struct">FullyNodedExport</a></div><div class="item-right docblock-short"><p>Structure that contains the export of a wallet</p>
-</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.WalletExport.html" title="bdk::wallet::export::WalletExport type">WalletExport</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short"><p>Alias for <a href="struct.FullyNodedExport.html" title="FullyNodedExport"><code>FullyNodedExport</code></a></p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<span class="macro">println!</span>(<span class="string">"Exported: {}"</span>, export.to_string());</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.FullyNodedExport.html" title="bdk::wallet::export::FullyNodedExport struct">FullyNodedExport</a></div><div class="item-right docblock-short">Structure that contains the export of a wallet</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.WalletExport.html" title="bdk::wallet::export::WalletExport type">WalletExport</a><span class="stab deprecated" title="">Deprecated</span></div><div class="item-right docblock-short">Alias for <a href="struct.FullyNodedExport.html" title="FullyNodedExport"><code>FullyNodedExport</code></a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"struct":[["FullyNodedExport","Structure that contains the export of a wallet"]],"type":[["WalletExport","Alias for [`FullyNodedExport`]"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":[["FullyNodedExport","Structure that contains the export of a wallet"]],"type":[["WalletExport","Alias for [`FullyNodedExport`]"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure that contains the export of a wallet"><meta name="keywords" content="rust, rustlang, rust-lang, FullyNodedExport"><title>FullyNodedExport in bdk::wallet::export - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">FullyNodedExport</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.blockheight">blockheight</a><a href="#structfield.label">label</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.change_descriptor">change_descriptor</a><a href="#method.descriptor">descriptor</a><a href="#method.export_wallet">export_wallet</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Deserialize%3C%27de%3E">Deserialize<'de></a><a href="#impl-FromStr">FromStr</a><a href="#impl-Serialize">Serialize</a><a href="#impl-ToString">ToString</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-DeserializeOwned">DeserializeOwned</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">export</a></h2><div id="sidebar-vars" data-name="FullyNodedExport" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">export</a>::<wbr><a class="struct" href="#">FullyNodedExport</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#81-87" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct FullyNodedExport {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Structure that contains the export of a wallet"><meta name="keywords" content="rust, rustlang, rust-lang, FullyNodedExport"><title>FullyNodedExport in bdk::wallet::export - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">FullyNodedExport</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.blockheight">blockheight</a></li><li><a href="#structfield.label">label</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.change_descriptor">change_descriptor</a></li><li><a href="#method.descriptor">descriptor</a></li><li><a href="#method.export_wallet">export_wallet</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-FullyNodedExport">Debug</a></li><li><a href="#impl-Deserialize%3C%27de%3E-for-FullyNodedExport">Deserialize<'de></a></li><li><a href="#impl-FromStr-for-FullyNodedExport">FromStr</a></li><li><a href="#impl-Serialize-for-FullyNodedExport">Serialize</a></li><li><a href="#impl-ToString-for-FullyNodedExport">ToString</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-FullyNodedExport">RefUnwindSafe</a></li><li><a href="#impl-Send-for-FullyNodedExport">Send</a></li><li><a href="#impl-Sync-for-FullyNodedExport">Sync</a></li><li><a href="#impl-Unpin-for-FullyNodedExport">Unpin</a></li><li><a href="#impl-UnwindSafe-for-FullyNodedExport">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-FullyNodedExport">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-FullyNodedExport">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-FullyNodedExport">BorrowMut<T></a></li><li><a href="#impl-DeserializeOwned-for-FullyNodedExport">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-FullyNodedExport">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-FullyNodedExport">Into<U></a></li><li><a href="#impl-Pointable-for-FullyNodedExport">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-FullyNodedExport">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-FullyNodedExport">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-FullyNodedExport">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::export</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">export</a>::<wbr><a class="struct" href="#">FullyNodedExport</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#81-87">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct FullyNodedExport {
pub blockheight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
pub label: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
/* private fields */
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Structure that contains the export of a wallet</p>
<p>For a usage example see <a href="index.html">this module</a>’s documentation.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.blockheight" class="structfield small-section-header"><a href="#structfield.blockheight" class="anchor field"></a><code>blockheight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Earliest block to rescan when looking for the wallet’s transactions</p>
-</div><span id="structfield.label" class="structfield small-section-header"><a href="#structfield.label" class="anchor field"></a><code>label: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Arbitrary label for the wallet</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#107-220" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.export_wallet" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#119-172" title="goto source code">source</a></div><a href="#method.export_wallet" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.export_wallet" class="fnname">export_wallet</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> wallet: &<a class="struct" href="../struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>, <br> label: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br> include_blockheight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>></h4></div></summary><div class="docblock"><p>Export a wallet</p>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.blockheight" class="structfield small-section-header"><a href="#structfield.blockheight" class="anchor field">§</a><code>blockheight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Earliest block to rescan when looking for the wallet’s transactions</p>
+</div><span id="structfield.label" class="structfield small-section-header"><a href="#structfield.label" class="anchor field">§</a><code>label: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><div class="docblock"><p>Arbitrary label for the wallet</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#107-220">source</a><a href="#impl-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.export_wallet" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#119-172">source</a><h4 class="code-header">pub fn <a href="#method.export_wallet" class="fn">export_wallet</a><D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>>(<br> wallet: &<a class="struct" href="../struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D>,<br> label: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,<br> include_blockheight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, &'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>></h4></section></summary><div class="docblock"><p>Export a wallet</p>
<p>This function returns an error if it determines that the <code>wallet</code>’s descriptor(s) are not
supported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44
and others.</p>
for the oldest transaction it knows and use that as the earliest block to rescan.</p>
<p>If the database is empty or <code>include_blockheight</code> is false, the <code>blockheight</code> field
returned will be <code>0</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#206-208" title="goto source code">source</a></div><a href="#method.descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.descriptor" class="fnname">descriptor</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Return the external descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.change_descriptor" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#211-219" title="goto source code">source</a></div><a href="#method.change_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.change_descriptor" class="fnname">change_descriptor</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></h4></div></summary><div class="docblock"><p>Return the internal descriptor, if present</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#80" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#80" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deserialize%3C%27de%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#80" title="goto source code">source</a></div><a href="#impl-Deserialize%3C%27de%3E" class="anchor"></a><h3 class="code-header in-band">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deserialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#80" title="goto source code">source</a></div><a href="#method.deserialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fnname">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>> <span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>, </span></h4></div></summary><div class='docblock'><p>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-FromStr" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#95-101" title="goto source code">source</a></div><a href="#impl-FromStr" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Err" class="type trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = <a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a></h4></div></summary><div class='docblock'><p>The associated error which can be returned from parsing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_str" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#98-100" title="goto source code">source</a></div><a href="#method.from_str" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fnname">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></div></summary><div class='docblock'><p>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Serialize" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#80" title="goto source code">source</a></div><a href="#impl-Serialize" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#80" title="goto source code">source</a></div><a href="#method.serialize" class="anchor"></a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>> <span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>, </span></h4></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#89-93" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#90-92" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details><div id="impl-DeserializeOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://docs.rs/serde/1.0.149/src/serde/de/mod.rs.html#605" title="goto source code">source</a></div><a href="#impl-DeserializeOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T <span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>, </span></h3></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.descriptor" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#206-208">source</a><h4 class="code-header">pub fn <a href="#method.descriptor" class="fn">descriptor</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>Return the external descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.change_descriptor" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#211-219">source</a><h4 class="code-header">pub fn <a href="#method.change_descriptor" class="fn">change_descriptor</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></h4></section></summary><div class="docblock"><p>Return the internal descriptor, if present</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#80">source</a><a href="#impl-Debug-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#80">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C%27de%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#80">source</a><a href="#impl-Deserialize%3C%27de%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#80">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a><__D>(__deserializer: __D) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>><span class="where fmt-newline">where<br> __D: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</span></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FromStr-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#95-101">source</a><a href="#impl-FromStr-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = <a class="struct" href="https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html" title="struct serde_json::error::Error">Error</a></h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#98-100">source</a><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(s: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>></h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Serialize-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#80">source</a><a href="#impl-Serialize-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#80">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a><__S>(&self, __serializer: __S) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>><span class="where fmt-newline">where<br> __S: <a class="trait" href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</span></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ToString-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#89-93">source</a><a href="#impl-ToString-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/export.rs.html#90-92">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section><section id="impl-Send-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-Send-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section><section id="impl-Sync-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-Sync-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section><section id="impl-Unpin-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-Unpin-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section><section id="impl-UnwindSafe-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-UnwindSafe-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-Pointable-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-FullyNodedExport" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><section id="impl-DeserializeOwned-for-FullyNodedExport" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/serde/1.0.150/src/serde/de/mod.rs.html#605">source</a><a href="#impl-DeserializeOwned-for-FullyNodedExport" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<span class="where fmt-newline">where<br> T: for<'de> <a class="trait" href="https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a><'de>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for [`FullyNodedExport`]"><meta name="keywords" content="rust, rustlang, rust-lang, WalletExport"><title>WalletExport in bdk::wallet::export - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">WalletExport</a></h2><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">export</a></h2><div id="sidebar-vars" data-name="WalletExport" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">export</a>::<wbr><a class="type" href="#">WalletExport</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#75" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust typedef"><code>pub type WalletExport = <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a>;</code></pre></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.18.0: <p>Please use [<code>FullyNodedExport</code>] instead</p>
-</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for <a href="struct.FullyNodedExport.html" title="FullyNodedExport"><code>FullyNodedExport</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Alias for [`FullyNodedExport`]"><meta name="keywords" content="rust, rustlang, rust-lang, WalletExport"><title>WalletExport in bdk::wallet::export - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">WalletExport</a></h2><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet::export</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Type Definition <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">export</a>::<wbr><a class="type" href="#">WalletExport</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/export.rs.html#75">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust typedef"><code>pub type WalletExport = <a class="struct" href="struct.FullyNodedExport.html" title="struct bdk::wallet::export::FullyNodedExport">FullyNodedExport</a>;</code></pre></div><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.18.0: Please use [<code>FullyNodedExport</code>] instead</span></div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Alias for <a href="struct.FullyNodedExport.html" title="FullyNodedExport"><code>FullyNodedExport</code></a></p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Return a fake wallet that appears to be funded for testing."><meta name="keywords" content="rust, rustlang, rust-lang, get_funded_wallet"><title>get_funded_wallet in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="get_funded_wallet" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">get_funded_wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1812-1850" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn get_funded_wallet(<br> descriptor: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><<a class="enum" href="../database/any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a>>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, Txid<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Return a fake wallet that appears to be funded for testing.</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Return a fake wallet that appears to be funded for testing."><meta name="keywords" content="rust, rustlang, rust-lang, get_funded_wallet"><title>get_funded_wallet in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">get_funded_wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1812-1850">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn get_funded_wallet(<br> descriptor: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -> (<a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><<a class="enum" href="../database/any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a>>, (<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>), Txid)</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Return a fake wallet that appears to be funded for testing.</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Deterministically generate a unique name given the descriptors defining the wallet"><meta name="keywords" content="rust, rustlang, rust-lang, wallet_name_from_descriptor"><title>wallet_name_from_descriptor in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="wallet_name_from_descriptor" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">wallet_name_from_descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1783-1809" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn wallet_name_from_descriptor<T>(<br> descriptor: T, <br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T>, <br> network: Network, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>> <span class="where fmt-newline">where<br> T: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>, </span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deterministically generate a unique name given the descriptors defining the wallet</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Deterministically generate a unique name given the descriptors defining the wallet"><meta name="keywords" content="rust, rustlang, rust-lang, wallet_name_from_descriptor"><title>wallet_name_from_descriptor in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">wallet_name_from_descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1783-1809">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn wallet_name_from_descriptor<T>(<br> descriptor: T,<br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T>,<br> network: Network,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>><span class="where fmt-newline">where<br> T: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>,</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deterministically generate a unique name given the descriptors defining the wallet</p>
<p>Compatible with <a href="fn.wallet_name_from_descriptor.html" title="wallet_name_from_descriptor"><code>wallet_name_from_descriptor</code></a></p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HWI Signer"><meta name="keywords" content="rust, rustlang, rust-lang, hardwaresigner"><title>bdk::wallet::hardwaresigner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module hardwaresigner</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li></ul></div><div id="sidebar-vars" data-name="hardwaresigner" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">hardwaresigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#12-97" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>hardware-signer</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>HWI Signer</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HWI Signer"><meta name="keywords" content="rust, rustlang, rust-lang, hardwaresigner"><title>bdk::wallet::hardwaresigner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module hardwaresigner</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">hardwaresigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#12-97">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>hardware-signer</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>HWI Signer</p>
<p>This module contains HWISigner, an implementation of a <a href="../signer/trait.TransactionSigner.html" title="TransactionSigner">TransactionSigner</a> to be
used with hardware wallets.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">devices</span> <span class="op">=</span> <span class="ident">HWIClient::enumerate</span>()<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">first_device</span> <span class="op">=</span> <span class="ident">devices</span>.<span class="ident">first</span>().<span class="ident">expect</span>(<span class="string">"No devices found!"</span>);
-<span class="kw">let</span> <span class="ident">custom_signer</span> <span class="op">=</span> <span class="ident">HWISigner::from_device</span>(<span class="ident">first_device</span>, <span class="ident">HWIChain::Test</span>)<span class="question-mark">?</span>;
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>devices = HWIClient::enumerate()<span class="question-mark">?</span>;
+<span class="kw">let </span>first_device = devices.first().expect(<span class="string">"No devices found!"</span>);
+<span class="kw">let </span>custom_signer = HWISigner::from_device(first_device, HWIChain::Test)<span class="question-mark">?</span>;
-<span class="comment">// Adding the hardware signer to the BDK wallet</span>
-<span class="ident">wallet</span>.<span class="ident">add_signer</span>(
- <span class="ident">KeychainKind::External</span>,
- <span class="ident">SignerOrdering</span>(<span class="number">200</span>),
- <span class="ident">Arc::new</span>(<span class="ident">custom_signer</span>),
+<span class="comment">// Adding the hardware signer to the BDK wallet
+</span>wallet.add_signer(
+ KeychainKind::External,
+ SignerOrdering(<span class="number">200</span>),
+ Arc::new(custom_signer),
);
</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.HWISigner.html" title="bdk::wallet::hardwaresigner::HWISigner struct">HWISigner</a></div><div class="item-right docblock-short"><p>Custom signer for Hardware Wallets</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.HWISigner.html" title="bdk::wallet::hardwaresigner::HWISigner struct">HWISigner</a></div><div class="item-right docblock-short">Custom signer for Hardware Wallets</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"struct":[["HWISigner","Custom signer for Hardware Wallets"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":[["HWISigner","Custom signer for Hardware Wallets"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Custom signer for Hardware Wallets"><meta name="keywords" content="rust, rustlang, rust-lang, HWISigner"><title>HWISigner in bdk::wallet::hardwaresigner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">HWISigner</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.from_device">from_device</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-SignerCommon">SignerCommon</a><a href="#impl-TransactionSigner">TransactionSigner</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">hardwaresigner</a></h2><div id="sidebar-vars" data-name="HWISigner" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">hardwaresigner</a>::<wbr><a class="struct" href="#">HWISigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#63-66" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct HWISigner { /* private fields */ }</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>hardware-signer</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Custom signer for Hardware Wallets</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Custom signer for Hardware Wallets"><meta name="keywords" content="rust, rustlang, rust-lang, HWISigner"><title>HWISigner in bdk::wallet::hardwaresigner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">HWISigner</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.from_device">from_device</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-HWISigner">Debug</a></li><li><a href="#impl-SignerCommon-for-HWISigner">SignerCommon</a></li><li><a href="#impl-TransactionSigner-for-HWISigner">TransactionSigner</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-HWISigner">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-HWISigner">Send</a></li><li><a href="#impl-Sync-for-HWISigner">Sync</a></li><li><a href="#impl-Unpin-for-HWISigner">Unpin</a></li><li><a href="#impl-UnwindSafe-for-HWISigner">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-HWISigner">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-HWISigner">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-HWISigner">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-HWISigner">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-HWISigner">Into<U></a></li><li><a href="#impl-Pointable-for-HWISigner">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-HWISigner">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-HWISigner">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-HWISigner">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::hardwaresigner</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">hardwaresigner</a>::<wbr><a class="struct" href="#">HWISigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#63-66">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct HWISigner { /* private fields */ }</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>hardware-signer</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Custom signer for Hardware Wallets</p>
<p>This ignores <code>sign_options</code> and leaves the decisions up to the hardware wallet.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#68-77" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from_device" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#70-76" title="goto source code">source</a></div><a href="#method.from_device" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.from_device" class="fnname">from_device</a>(<br> device: &HWIDevice, <br> chain: HWIChain<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a>, Error></h4></div></summary><div class="docblock"><p>Create a instance from the specified device and chain</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#59" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#59" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-SignerCommon" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#79-83" title="goto source code">source</a></div><a href="#impl-SignerCommon" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../signer/trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#80-82" title="goto source code">source</a></div><a href="#method.id" class="anchor"></a><h4 class="code-header">fn <a href="../signer/trait.SignerCommon.html#tymethod.id" class="fnname">id</a>(&self, _secp: &Secp256k1<All>) -> <a class="enum" href="../signer/enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class='docblock'><p>Return the <a href="../signer/enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer <a href="../signer/trait.SignerCommon.html#tymethod.id">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor_secret_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#240-242" title="goto source code">source</a></div><a href="#method.descriptor_secret_key" class="anchor"></a><h4 class="code-header">fn <a href="../signer/trait.SignerCommon.html#method.descriptor_secret_key" class="fnname">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></div></summary><div class='docblock'><p>Return the secret key for the signer <a href="../signer/trait.SignerCommon.html#method.descriptor_secret_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TransactionSigner" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#86-97" title="goto source code">source</a></div><a href="#impl-TransactionSigner" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="../signer/trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div></summary><div class="docblock"><p>This implementation ignores <code>sign_options</code></p>
-</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign_transaction" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#87-96" title="goto source code">source</a></div><a href="#method.sign_transaction" class="anchor"></a><h4 class="code-header">fn <a href="../signer/trait.TransactionSigner.html#tymethod.sign_transaction" class="fnname">sign_transaction</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> _sign_options: &<a class="struct" href="../signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> _secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></div></summary><div class='docblock'><p>Sign all the inputs of the psbt</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#68-77">source</a><a href="#impl-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_device" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#70-76">source</a><h4 class="code-header">pub fn <a href="#method.from_device" class="fn">from_device</a>(<br> device: &HWIDevice,<br> chain: HWIChain<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a>, Error></h4></section></summary><div class="docblock"><p>Create a instance from the specified device and chain</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#59">source</a><a href="#impl-Debug-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#59">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SignerCommon-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#79-83">source</a><a href="#impl-SignerCommon-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../signer/trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.id" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#80-82">source</a><a href="#method.id" class="anchor">§</a><h4 class="code-header">fn <a href="../signer/trait.SignerCommon.html#tymethod.id" class="fn">id</a>(&self, _secp: &Secp256k1<All>) -> <a class="enum" href="../signer/enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class='docblock'>Return the <a href="../signer/enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer <a href="../signer/trait.SignerCommon.html#tymethod.id">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.descriptor_secret_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#240-242">source</a><a href="#method.descriptor_secret_key" class="anchor">§</a><h4 class="code-header">fn <a href="../signer/trait.SignerCommon.html#method.descriptor_secret_key" class="fn">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></section></summary><div class='docblock'>Return the secret key for the signer <a href="../signer/trait.SignerCommon.html#method.descriptor_secret_key">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TransactionSigner-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#86-97">source</a><a href="#impl-TransactionSigner-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../signer/trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section></summary><div class="docblock"><p>This implementation ignores <code>sign_options</code></p>
+</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sign_transaction" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#87-96">source</a><a href="#method.sign_transaction" class="anchor">§</a><h4 class="code-header">fn <a href="../signer/trait.TransactionSigner.html#tymethod.sign_transaction" class="fn">sign_transaction</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> _sign_options: &<a class="struct" href="../signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> _secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../signer/enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></section></summary><div class='docblock'>Sign all the inputs of the psbt</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-HWISigner" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section><section id="impl-Send-for-HWISigner" class="impl has-srclink"><a href="#impl-Send-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section><section id="impl-Sync-for-HWISigner" class="impl has-srclink"><a href="#impl-Sync-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section><section id="impl-Unpin-for-HWISigner" class="impl has-srclink"><a href="#impl-Unpin-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section><section id="impl-UnwindSafe-for-HWISigner" class="impl has-srclink"><a href="#impl-UnwindSafe-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-HWISigner" class="impl has-srclink"><a href="#impl-Pointable-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-HWISigner" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wallet"><meta name="keywords" content="rust, rustlang, rust-lang, wallet"><title>bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module wallet</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></div><div id="sidebar-vars" data-name="wallet" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#12-5585" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wallet</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wallet"><meta name="keywords" content="rust, rustlang, rust-lang, wallet"><title>bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module wallet</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#12-5585">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wallet</p>
<p>This module defines the <a href="struct.Wallet.html" title="Wallet"><code>Wallet</code></a> structure.</p>
-</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="coin_selection/index.html" title="bdk::wallet::coin_selection mod">coin_selection</a></div><div class="item-right docblock-short"><p>Coin selection</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="export/index.html" title="bdk::wallet::export mod">export</a></div><div class="item-right docblock-short"><p>Wallet export</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="hardwaresigner/index.html" title="bdk::wallet::hardwaresigner mod">hardwaresigner</a><span class="stab portability" title="This is supported on crate feature `hardware-signer` only"><code>hardware-signer</code></span></div><div class="item-right docblock-short"><p>HWI Signer</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="signer/index.html" title="bdk::wallet::signer mod">signer</a></div><div class="item-right docblock-short"><p>Generalized signers</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="time/index.html" title="bdk::wallet::time mod">time</a></div><div class="item-right docblock-short"><p>Cross-platform time</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="tx_builder/index.html" title="bdk::wallet::tx_builder mod">tx_builder</a></div><div class="item-right docblock-short"><p>Transaction builder</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="verify/index.html" title="bdk::wallet::verify mod">verify</a><span class="stab portability" title="This is supported on crate feature `verify` only"><code>verify</code></span></div><div class="item-right docblock-short"><p>Verify transactions against the consensus rules</p>
-</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.AddressInfo.html" title="bdk::wallet::AddressInfo struct">AddressInfo</a></div><div class="item-right docblock-short"><p>A derived address and the index it was found at
-For convenience this automatically derefs to <code>Address</code></p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SyncOptions.html" title="bdk::wallet::SyncOptions struct">SyncOptions</a></div><div class="item-right docblock-short"><p>Options to a <a href="struct.Wallet.html#method.sync"><code>sync</code></a>.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Wallet.html" title="bdk::wallet::Wallet struct">Wallet</a></div><div class="item-right docblock-short"><p>A Bitcoin wallet</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AddressIndex.html" title="bdk::wallet::AddressIndex enum">AddressIndex</a></div><div class="item-right docblock-short"><p>The address index selection strategy to use to derived an address from the wallet’s external
-descriptor. See <a href="struct.Wallet.html#method.get_address" title="Wallet::get_address"><code>Wallet::get_address</code></a>. If you’re unsure which one to use use <code>WalletIndex::New</code>.</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.IsDust.html" title="bdk::wallet::IsDust trait">IsDust</a></div><div class="item-right docblock-short"><p>Trait to check if a value is below the dust limit.
+</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="coin_selection/index.html" title="bdk::wallet::coin_selection mod">coin_selection</a></div><div class="item-right docblock-short">Coin selection</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="export/index.html" title="bdk::wallet::export mod">export</a></div><div class="item-right docblock-short">Wallet export</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="hardwaresigner/index.html" title="bdk::wallet::hardwaresigner mod">hardwaresigner</a><span class="stab portability" title="Available on crate feature `hardware-signer` only"><code>hardware-signer</code></span></div><div class="item-right docblock-short">HWI Signer</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="signer/index.html" title="bdk::wallet::signer mod">signer</a></div><div class="item-right docblock-short">Generalized signers</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="time/index.html" title="bdk::wallet::time mod">time</a></div><div class="item-right docblock-short">Cross-platform time</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="tx_builder/index.html" title="bdk::wallet::tx_builder mod">tx_builder</a></div><div class="item-right docblock-short">Transaction builder</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="verify/index.html" title="bdk::wallet::verify mod">verify</a><span class="stab portability" title="Available on crate feature `verify` only"><code>verify</code></span></div><div class="item-right docblock-short">Verify transactions against the consensus rules</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.AddressInfo.html" title="bdk::wallet::AddressInfo struct">AddressInfo</a></div><div class="item-right docblock-short">A derived address and the index it was found at
+For convenience this automatically derefs to <code>Address</code></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SyncOptions.html" title="bdk::wallet::SyncOptions struct">SyncOptions</a></div><div class="item-right docblock-short">Options to a <a href="struct.Wallet.html#method.sync"><code>sync</code></a>.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Wallet.html" title="bdk::wallet::Wallet struct">Wallet</a></div><div class="item-right docblock-short">A Bitcoin wallet</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.AddressIndex.html" title="bdk::wallet::AddressIndex enum">AddressIndex</a></div><div class="item-right docblock-short">The address index selection strategy to use to derived an address from the wallet’s external
+descriptor. See <a href="struct.Wallet.html#method.get_address" title="Wallet::get_address"><code>Wallet::get_address</code></a>. If you’re unsure which one to use use <code>WalletIndex::New</code>.</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.IsDust.html" title="bdk::wallet::IsDust trait">IsDust</a></div><div class="item-right docblock-short">Trait to check if a value is below the dust limit.
We are performing dust value calculation for a given script public key using rust-bitcoin to
-keep it compatible with network dust rate</p>
-</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_funded_wallet.html" title="bdk::wallet::get_funded_wallet fn">get_funded_wallet</a></div><div class="item-right docblock-short"><p>Return a fake wallet that appears to be funded for testing.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.wallet_name_from_descriptor.html" title="bdk::wallet::wallet_name_from_descriptor fn">wallet_name_from_descriptor</a></div><div class="item-right docblock-short"><p>Deterministically generate a unique name given the descriptors defining the wallet</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+keep it compatible with network dust rate</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_funded_wallet.html" title="bdk::wallet::get_funded_wallet fn">get_funded_wallet</a></div><div class="item-right docblock-short">Return a fake wallet that appears to be funded for testing.</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.wallet_name_from_descriptor.html" title="bdk::wallet::wallet_name_from_descriptor fn">wallet_name_from_descriptor</a></div><div class="item-right docblock-short">Deterministically generate a unique name given the descriptors defining the wallet</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["AddressIndex","The address index selection strategy to use to derived an address from the wallet’s external descriptor. See [`Wallet::get_address`]. If you’re unsure which one to use use `WalletIndex::New`."]],"fn":[["get_funded_wallet","Return a fake wallet that appears to be funded for testing."],["wallet_name_from_descriptor","Deterministically generate a unique name given the descriptors defining the wallet"]],"mod":[["coin_selection","Coin selection"],["export","Wallet export"],["hardwaresigner","HWI Signer"],["signer","Generalized signers"],["time","Cross-platform time"],["tx_builder","Transaction builder"],["verify","Verify transactions against the consensus rules"]],"struct":[["AddressInfo","A derived address and the index it was found at For convenience this automatically derefs to `Address`"],["SyncOptions","Options to a `sync`."],["Wallet","A Bitcoin wallet"]],"trait":[["IsDust","Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["AddressIndex","The address index selection strategy to use to derived an address from the wallet’s external descriptor. See [`Wallet::get_address`]. If you’re unsure which one to use use `WalletIndex::New`."]],"fn":[["get_funded_wallet","Return a fake wallet that appears to be funded for testing."],["wallet_name_from_descriptor","Deterministically generate a unique name given the descriptors defining the wallet"]],"mod":[["coin_selection","Coin selection"],["export","Wallet export"],["hardwaresigner","HWI Signer"],["signer","Generalized signers"],["time","Cross-platform time"],["tx_builder","Transaction builder"],["verify","Verify transactions against the consensus rules"]],"struct":[["AddressInfo","A derived address and the index it was found at For convenience this automatically derefs to `Address`"],["SyncOptions","Options to a `sync`."],["Wallet","A Bitcoin wallet"]],"trait":[["IsDust","Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Signing context"><meta name="keywords" content="rust, rustlang, rust-lang, SignerContext"><title>SignerContext in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignerContext</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Legacy">Legacy</a><a href="#variant.Segwitv0">Segwitv0</a><a href="#variant.Tap">Tap</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CSignerContext%3E">PartialEq<SignerContext></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignerContext" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">SignerContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#193-203" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum SignerContext {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Signing context"><meta name="keywords" content="rust, rustlang, rust-lang, SignerContext"><title>SignerContext in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignerContext</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Legacy">Legacy</a></li><li><a href="#variant.Segwitv0">Segwitv0</a></li><li><a href="#variant.Tap">Tap</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignerContext">Clone</a></li><li><a href="#impl-Copy-for-SignerContext">Copy</a></li><li><a href="#impl-Debug-for-SignerContext">Debug</a></li><li><a href="#impl-Eq-for-SignerContext">Eq</a></li><li><a href="#impl-PartialEq%3CSignerContext%3E-for-SignerContext">PartialEq<SignerContext></a></li><li><a href="#impl-StructuralEq-for-SignerContext">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SignerContext">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignerContext">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignerContext">Send</a></li><li><a href="#impl-Sync-for-SignerContext">Sync</a></li><li><a href="#impl-Unpin-for-SignerContext">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignerContext">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignerContext">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignerContext">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignerContext">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SignerContext">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignerContext">Into<U></a></li><li><a href="#impl-Pointable-for-SignerContext">Pointable</a></li><li><a href="#impl-ToOwned-for-SignerContext">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignerContext">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignerContext">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignerContext">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">SignerContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#193-203">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum SignerContext {
Legacy,
Segwitv0,
Tap {
},
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Signing context</p>
<p>Used by our software signers to determine the type of signatures to make</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Legacy" class="variant small-section-header"><a href="#variant.Legacy" class="anchor field"></a><code>Legacy</code></h3><div class="docblock"><p>Legacy context</p>
-</div><h3 id="variant.Segwitv0" class="variant small-section-header"><a href="#variant.Segwitv0" class="anchor field"></a><code>Segwitv0</code></h3><div class="docblock"><p>Segwit v0 context (BIP 143)</p>
-</div><h3 id="variant.Tap" class="variant small-section-header"><a href="#variant.Tap" class="anchor field"></a><code>Tap</code></h3><div class="sub-variant" id="variant.Tap.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Tap.field.is_internal_key" class="variant small-section-header"><a href="#variant.Tap.field.is_internal_key" class="anchor field"></a><code>is_internal_key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the signer can sign for the internal key or not</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Legacy" class="variant"><a href="#variant.Legacy" class="anchor">§</a><h3 class="code-header">Legacy</h3></section><div class="docblock"><p>Legacy context</p>
+</div><section id="variant.Segwitv0" class="variant"><a href="#variant.Segwitv0" class="anchor">§</a><h3 class="code-header">Segwitv0</h3></section><div class="docblock"><p>Segwit v0 context (BIP 143)</p>
+</div><section id="variant.Tap" class="variant"><a href="#variant.Tap" class="anchor">§</a><h3 class="code-header">Tap</h3></section><div class="sub-variant" id="variant.Tap.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Tap.field.is_internal_key" class="small-section-header"><a href="#variant.Tap.field.is_internal_key" class="anchor field">§</a><code>is_internal_key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the signer can sign for the internal key or not</p>
</div></div></div><div class="docblock"><p>Taproot context (BIP 340)</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSignerContext%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-PartialEq%3CSignerContext%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#192" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-Clone-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-Debug-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSignerContext%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-PartialEq%3CSignerContext%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Copy-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-Copy-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-Eq-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-Eq-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-StructuralEq-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-StructuralEq-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-StructuralPartialEq-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#192">source</a><a href="#impl-StructuralPartialEq-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignerContext" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-Send-for-SignerContext" class="impl has-srclink"><a href="#impl-Send-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-Sync-for-SignerContext" class="impl has-srclink"><a href="#impl-Sync-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-Unpin-for-SignerContext" class="impl has-srclink"><a href="#impl-Unpin-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section><section id="impl-UnwindSafe-for-SignerContext" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignerContext" class="impl has-srclink"><a href="#impl-Pointable-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignerContext" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignerContext" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignerContext" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Signing error"><meta name="keywords" content="rust, rustlang, rust-lang, SignerError"><title>SignerError in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignerError</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.HWIError">HWIError</a><a href="#variant.InputIndexOutOfRange">InputIndexOutOfRange</a><a href="#variant.InvalidKey">InvalidKey</a><a href="#variant.InvalidNonWitnessUtxo">InvalidNonWitnessUtxo</a><a href="#variant.InvalidSighash">InvalidSighash</a><a href="#variant.MissingHdKeypath">MissingHdKeypath</a><a href="#variant.MissingKey">MissingKey</a><a href="#variant.MissingNonWitnessUtxo">MissingNonWitnessUtxo</a><a href="#variant.MissingWitnessScript">MissingWitnessScript</a><a href="#variant.MissingWitnessUtxo">MissingWitnessUtxo</a><a href="#variant.NonStandardSighash">NonStandardSighash</a><a href="#variant.SighashError">SighashError</a><a href="#variant.UserCanceled">UserCanceled</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-Error">Error</a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CSignerError%3E">From<SignerError></a><a href="#impl-PartialEq%3CSignerError%3E">PartialEq<SignerError></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignerError" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">SignerError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#134-166" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum SignerError {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Signing error"><meta name="keywords" content="rust, rustlang, rust-lang, SignerError"><title>SignerError in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignerError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.HWIError">HWIError</a></li><li><a href="#variant.InputIndexOutOfRange">InputIndexOutOfRange</a></li><li><a href="#variant.InvalidKey">InvalidKey</a></li><li><a href="#variant.InvalidNonWitnessUtxo">InvalidNonWitnessUtxo</a></li><li><a href="#variant.InvalidSighash">InvalidSighash</a></li><li><a href="#variant.MissingHdKeypath">MissingHdKeypath</a></li><li><a href="#variant.MissingKey">MissingKey</a></li><li><a href="#variant.MissingNonWitnessUtxo">MissingNonWitnessUtxo</a></li><li><a href="#variant.MissingWitnessScript">MissingWitnessScript</a></li><li><a href="#variant.MissingWitnessUtxo">MissingWitnessUtxo</a></li><li><a href="#variant.NonStandardSighash">NonStandardSighash</a></li><li><a href="#variant.SighashError">SighashError</a></li><li><a href="#variant.UserCanceled">UserCanceled</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignerError">Clone</a></li><li><a href="#impl-Debug-for-SignerError">Debug</a></li><li><a href="#impl-Display-for-SignerError">Display</a></li><li><a href="#impl-Eq-for-SignerError">Eq</a></li><li><a href="#impl-Error-for-SignerError">Error</a></li><li><a href="#impl-From%3CError%3E-for-SignerError">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-SignerError-1">From<Error></a></li><li><a href="#impl-From%3CSignerError%3E-for-Error">From<SignerError></a></li><li><a href="#impl-PartialEq%3CSignerError%3E-for-SignerError">PartialEq<SignerError></a></li><li><a href="#impl-StructuralEq-for-SignerError">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SignerError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignerError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignerError">Send</a></li><li><a href="#impl-Sync-for-SignerError">Sync</a></li><li><a href="#impl-Unpin-for-SignerError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignerError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignerError">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignerError">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignerError">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SignerError">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignerError">Into<U></a></li><li><a href="#impl-Pointable-for-SignerError">Pointable</a></li><li><a href="#impl-Provider-for-SignerError">Provider</a></li><li><a href="#impl-ToOwned-for-SignerError">ToOwned</a></li><li><a href="#impl-ToString-for-SignerError">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignerError">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignerError">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignerError">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">SignerError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#134-166">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum SignerError {
<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 13 variants</span></summary> MissingKey,
InvalidKey,
UserCanceled,
SighashError(Error),
HWIError(Error),
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Signing error</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.MissingKey" class="variant small-section-header"><a href="#variant.MissingKey" class="anchor field"></a><code>MissingKey</code></h3><div class="docblock"><p>The private key is missing for the required public key</p>
-</div><h3 id="variant.InvalidKey" class="variant small-section-header"><a href="#variant.InvalidKey" class="anchor field"></a><code>InvalidKey</code></h3><div class="docblock"><p>The private key in use has the right fingerprint but derives differently than expected</p>
-</div><h3 id="variant.UserCanceled" class="variant small-section-header"><a href="#variant.UserCanceled" class="anchor field"></a><code>UserCanceled</code></h3><div class="docblock"><p>The user canceled the operation</p>
-</div><h3 id="variant.InputIndexOutOfRange" class="variant small-section-header"><a href="#variant.InputIndexOutOfRange" class="anchor field"></a><code>InputIndexOutOfRange</code></h3><div class="docblock"><p>Input index is out of range</p>
-</div><h3 id="variant.MissingNonWitnessUtxo" class="variant small-section-header"><a href="#variant.MissingNonWitnessUtxo" class="anchor field"></a><code>MissingNonWitnessUtxo</code></h3><div class="docblock"><p>The <code>non_witness_utxo</code> field of the transaction is required to sign this input</p>
-</div><h3 id="variant.InvalidNonWitnessUtxo" class="variant small-section-header"><a href="#variant.InvalidNonWitnessUtxo" class="anchor field"></a><code>InvalidNonWitnessUtxo</code></h3><div class="docblock"><p>The <code>non_witness_utxo</code> specified is invalid</p>
-</div><h3 id="variant.MissingWitnessUtxo" class="variant small-section-header"><a href="#variant.MissingWitnessUtxo" class="anchor field"></a><code>MissingWitnessUtxo</code></h3><div class="docblock"><p>The <code>witness_utxo</code> field of the transaction is required to sign this input</p>
-</div><h3 id="variant.MissingWitnessScript" class="variant small-section-header"><a href="#variant.MissingWitnessScript" class="anchor field"></a><code>MissingWitnessScript</code></h3><div class="docblock"><p>The <code>witness_script</code> field of the transaction is required to sign this input</p>
-</div><h3 id="variant.MissingHdKeypath" class="variant small-section-header"><a href="#variant.MissingHdKeypath" class="anchor field"></a><code>MissingHdKeypath</code></h3><div class="docblock"><p>The fingerprint and derivation path are missing from the psbt input</p>
-</div><h3 id="variant.NonStandardSighash" class="variant small-section-header"><a href="#variant.NonStandardSighash" class="anchor field"></a><code>NonStandardSighash</code></h3><div class="docblock"><p>The psbt contains a non-<code>SIGHASH_ALL</code> sighash in one of its input and the user hasn’t
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.MissingKey" class="variant"><a href="#variant.MissingKey" class="anchor">§</a><h3 class="code-header">MissingKey</h3></section><div class="docblock"><p>The private key is missing for the required public key</p>
+</div><section id="variant.InvalidKey" class="variant"><a href="#variant.InvalidKey" class="anchor">§</a><h3 class="code-header">InvalidKey</h3></section><div class="docblock"><p>The private key in use has the right fingerprint but derives differently than expected</p>
+</div><section id="variant.UserCanceled" class="variant"><a href="#variant.UserCanceled" class="anchor">§</a><h3 class="code-header">UserCanceled</h3></section><div class="docblock"><p>The user canceled the operation</p>
+</div><section id="variant.InputIndexOutOfRange" class="variant"><a href="#variant.InputIndexOutOfRange" class="anchor">§</a><h3 class="code-header">InputIndexOutOfRange</h3></section><div class="docblock"><p>Input index is out of range</p>
+</div><section id="variant.MissingNonWitnessUtxo" class="variant"><a href="#variant.MissingNonWitnessUtxo" class="anchor">§</a><h3 class="code-header">MissingNonWitnessUtxo</h3></section><div class="docblock"><p>The <code>non_witness_utxo</code> field of the transaction is required to sign this input</p>
+</div><section id="variant.InvalidNonWitnessUtxo" class="variant"><a href="#variant.InvalidNonWitnessUtxo" class="anchor">§</a><h3 class="code-header">InvalidNonWitnessUtxo</h3></section><div class="docblock"><p>The <code>non_witness_utxo</code> specified is invalid</p>
+</div><section id="variant.MissingWitnessUtxo" class="variant"><a href="#variant.MissingWitnessUtxo" class="anchor">§</a><h3 class="code-header">MissingWitnessUtxo</h3></section><div class="docblock"><p>The <code>witness_utxo</code> field of the transaction is required to sign this input</p>
+</div><section id="variant.MissingWitnessScript" class="variant"><a href="#variant.MissingWitnessScript" class="anchor">§</a><h3 class="code-header">MissingWitnessScript</h3></section><div class="docblock"><p>The <code>witness_script</code> field of the transaction is required to sign this input</p>
+</div><section id="variant.MissingHdKeypath" class="variant"><a href="#variant.MissingHdKeypath" class="anchor">§</a><h3 class="code-header">MissingHdKeypath</h3></section><div class="docblock"><p>The fingerprint and derivation path are missing from the psbt input</p>
+</div><section id="variant.NonStandardSighash" class="variant"><a href="#variant.NonStandardSighash" class="anchor">§</a><h3 class="code-header">NonStandardSighash</h3></section><div class="docblock"><p>The psbt contains a non-<code>SIGHASH_ALL</code> sighash in one of its input and the user hasn’t
explicitly allowed them</p>
<p>To enable signing transactions with non-standard sighashes set
<a href="struct.SignOptions.html#structfield.allow_all_sighashes" title="SignOptions::allow_all_sighashes"><code>SignOptions::allow_all_sighashes</code></a> to <code>true</code>.</p>
-</div><h3 id="variant.InvalidSighash" class="variant small-section-header"><a href="#variant.InvalidSighash" class="anchor field"></a><code>InvalidSighash</code></h3><div class="docblock"><p>Invalid SIGHASH for the signing context in use</p>
-</div><h3 id="variant.SighashError" class="variant small-section-header"><a href="#variant.SighashError" class="anchor field"></a><code>SighashError(Error)</code></h3><div class="docblock"><p>Error while computing the hash to sign</p>
-</div><h3 id="variant.HWIError" class="variant small-section-header"><a href="#variant.HWIError" class="anchor field"></a><code>HWIError(Error)</code></h3><div class="docblock"><p>Error while signing using hardware wallets</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#181-185" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#182-184" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#187" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#169-173" title="goto source code">source</a></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#170-172" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(e: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#175-179" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#176-178" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(e: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CSignerError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#193" title="goto source code">source</a></div><a href="#impl-From%3CSignerError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#193" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSignerError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#impl-PartialEq%3CSignerError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#133" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><section id="variant.InvalidSighash" class="variant"><a href="#variant.InvalidSighash" class="anchor">§</a><h3 class="code-header">InvalidSighash</h3></section><div class="docblock"><p>Invalid SIGHASH for the signing context in use</p>
+</div><section id="variant.SighashError" class="variant"><a href="#variant.SighashError" class="anchor">§</a><h3 class="code-header">SighashError(Error)</h3></section><div class="docblock"><p>Error while computing the hash to sign</p>
+</div><section id="variant.HWIError" class="variant"><a href="#variant.HWIError" class="anchor">§</a><h3 class="code-header">HWIError(Error)</h3></section><div class="docblock"><p>Error while signing using hardware wallets</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#impl-Clone-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#impl-Debug-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#181-185">source</a><a href="#impl-Display-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#182-184">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#187">source</a><a href="#impl-Error-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#169-173">source</a><a href="#impl-From%3CError%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#170-172">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(e: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-SignerError-1" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#175-179">source</a><a href="#impl-From%3CError%3E-for-SignerError-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#176-178">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(e: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CSignerError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#193">source</a><a href="#impl-From%3CSignerError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#193">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSignerError%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#impl-PartialEq%3CSignerError%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Eq-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#impl-Eq-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section><section id="impl-StructuralEq-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#impl-StructuralEq-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section><section id="impl-StructuralPartialEq-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#133">source</a><a href="#impl-StructuralPartialEq-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignerError" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section><section id="impl-Send-for-SignerError" class="impl has-srclink"><a href="#impl-Send-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section><section id="impl-Sync-for-SignerError" class="impl has-srclink"><a href="#impl-Sync-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section><section id="impl-Unpin-for-SignerError" class="impl has-srclink"><a href="#impl-Unpin-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section><section id="impl-UnwindSafe-for-SignerError" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignerError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignerError" class="impl has-srclink"><a href="#impl-Pointable-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignerError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignerError" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignerError" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among multiple of them"><meta name="keywords" content="rust, rustlang, rust-lang, SignerId"><title>SignerId in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignerId</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Dummy">Dummy</a><a href="#variant.Fingerprint">Fingerprint</a><a href="#variant.PkHash">PkHash</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Eq">Eq</a><a href="#impl-From%3CFingerprint%3E">From<Fingerprint></a><a href="#impl-From%3CHash%3E">From<Hash></a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CSignerId%3E">PartialEq<SignerId></a><a href="#impl-PartialOrd%3CSignerId%3E">PartialOrd<SignerId></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignerId" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">SignerId</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#111-118" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum SignerId {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among multiple of them"><meta name="keywords" content="rust, rustlang, rust-lang, SignerId"><title>SignerId in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignerId</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Dummy">Dummy</a></li><li><a href="#variant.Fingerprint">Fingerprint</a></li><li><a href="#variant.PkHash">PkHash</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignerId">Clone</a></li><li><a href="#impl-Debug-for-SignerId">Debug</a></li><li><a href="#impl-Eq-for-SignerId">Eq</a></li><li><a href="#impl-From%3CFingerprint%3E-for-SignerId">From<Fingerprint></a></li><li><a href="#impl-From%3CHash%3E-for-SignerId">From<Hash></a></li><li><a href="#impl-Hash-for-SignerId">Hash</a></li><li><a href="#impl-Ord-for-SignerId">Ord</a></li><li><a href="#impl-PartialEq%3CSignerId%3E-for-SignerId">PartialEq<SignerId></a></li><li><a href="#impl-PartialOrd%3CSignerId%3E-for-SignerId">PartialOrd<SignerId></a></li><li><a href="#impl-StructuralEq-for-SignerId">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SignerId">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignerId">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignerId">Send</a></li><li><a href="#impl-Sync-for-SignerId">Sync</a></li><li><a href="#impl-Unpin-for-SignerId">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignerId">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignerId">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignerId">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignerId">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-SignerId">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-SignerId">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignerId">Into<U></a></li><li><a href="#impl-Pointable-for-SignerId">Pointable</a></li><li><a href="#impl-ToOwned-for-SignerId">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignerId">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignerId">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignerId">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">SignerId</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#111-118">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum SignerId {
PkHash(Hash),
Fingerprint(Fingerprint),
Dummy(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Identifier of a signer in the <code>SignersContainers</code>. Used as a key to find the right signer among
multiple of them</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.PkHash" class="variant small-section-header"><a href="#variant.PkHash" class="anchor field"></a><code>PkHash(Hash)</code></h3><div class="docblock"><p>Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key</p>
-</div><h3 id="variant.Fingerprint" class="variant small-section-header"><a href="#variant.Fingerprint" class="anchor field"></a><code>Fingerprint(Fingerprint)</code></h3><div class="docblock"><p>The fingerprint of a BIP32 extended key</p>
-</div><h3 id="variant.Dummy" class="variant small-section-header"><a href="#variant.Dummy" class="anchor field"></a><code>Dummy(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</code></h3><div class="docblock"><p>Dummy identifier</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CFingerprint%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#126-130" title="goto source code">source</a></div><a href="#impl-From%3CFingerprint%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Fingerprint> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#127-129" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(fing: Fingerprint) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CHash%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#120-124" title="goto source code">source</a></div><a href="#impl-From%3CHash%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Hash> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#121-123" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(hash: Hash) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSignerId%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-PartialEq%3CSignerId%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CSignerId%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CSignerId%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#110" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.PkHash" class="variant"><a href="#variant.PkHash" class="anchor">§</a><h3 class="code-header">PkHash(Hash)</h3></section><div class="docblock"><p>Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key</p>
+</div><section id="variant.Fingerprint" class="variant"><a href="#variant.Fingerprint" class="anchor">§</a><h3 class="code-header">Fingerprint(Fingerprint)</h3></section><div class="docblock"><p>The fingerprint of a BIP32 extended key</p>
+</div><section id="variant.Dummy" class="variant"><a href="#variant.Dummy" class="anchor">§</a><h3 class="code-header">Dummy(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section><div class="docblock"><p>Dummy identifier</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-Clone-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-Debug-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CFingerprint%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#126-130">source</a><a href="#impl-From%3CFingerprint%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Fingerprint> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#127-129">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(fing: Fingerprint) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CHash%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#120-124">source</a><a href="#impl-From%3CHash%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Hash> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#121-123">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(hash: Hash) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-Hash-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-Ord-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSignerId%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-PartialEq%3CSignerId%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CSignerId%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-PartialOrd%3CSignerId%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-Eq-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section><section id="impl-StructuralEq-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-StructuralEq-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section><section id="impl-StructuralPartialEq-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#110">source</a><a href="#impl-StructuralPartialEq-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignerId" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section><section id="impl-Send-for-SignerId" class="impl has-srclink"><a href="#impl-Send-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section><section id="impl-Sync-for-SignerId" class="impl has-srclink"><a href="#impl-Sync-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section><section id="impl-Unpin-for-SignerId" class="impl has-srclink"><a href="#impl-Unpin-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section><section id="impl-UnwindSafe-for-SignerId" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignerId" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-SignerId" class="impl has-srclink"><a href="#impl-CallHasher-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignerId" class="impl has-srclink"><a href="#impl-Pointable-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignerId" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignerId" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignerId" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Customize which taproot script-path leaves the signer should sign."><meta name="keywords" content="rust, rustlang, rust-lang, TapLeavesOptions"><title>TapLeavesOptions in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TapLeavesOptions</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.All">All</a><a href="#variant.Exclude">Exclude</a><a href="#variant.Include">Include</a><a href="#variant.None">None</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CTapLeavesOptions%3E">PartialEq<TapLeavesOptions></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="TapLeavesOptions" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">TapLeavesOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#741-751" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum TapLeavesOptions {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Customize which taproot script-path leaves the signer should sign."><meta name="keywords" content="rust, rustlang, rust-lang, TapLeavesOptions"><title>TapLeavesOptions in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TapLeavesOptions</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.All">All</a></li><li><a href="#variant.Exclude">Exclude</a></li><li><a href="#variant.Include">Include</a></li><li><a href="#variant.None">None</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-TapLeavesOptions">Clone</a></li><li><a href="#impl-Debug-for-TapLeavesOptions">Debug</a></li><li><a href="#impl-Default-for-TapLeavesOptions">Default</a></li><li><a href="#impl-Eq-for-TapLeavesOptions">Eq</a></li><li><a href="#impl-PartialEq%3CTapLeavesOptions%3E-for-TapLeavesOptions">PartialEq<TapLeavesOptions></a></li><li><a href="#impl-StructuralEq-for-TapLeavesOptions">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-TapLeavesOptions">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-TapLeavesOptions">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TapLeavesOptions">Send</a></li><li><a href="#impl-Sync-for-TapLeavesOptions">Sync</a></li><li><a href="#impl-Unpin-for-TapLeavesOptions">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TapLeavesOptions">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-TapLeavesOptions">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-TapLeavesOptions">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-TapLeavesOptions">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-TapLeavesOptions">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-TapLeavesOptions">Into<U></a></li><li><a href="#impl-Pointable-for-TapLeavesOptions">Pointable</a></li><li><a href="#impl-ToOwned-for-TapLeavesOptions">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-TapLeavesOptions">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-TapLeavesOptions">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-TapLeavesOptions">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="enum" href="#">TapLeavesOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#741-751">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum TapLeavesOptions {
All,
Include(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>),
Exclude(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>),
None,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Customize which taproot script-path leaves the signer should sign.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.All" class="variant small-section-header"><a href="#variant.All" class="anchor field"></a><code>All</code></h3><div class="docblock"><p>The signer will sign all the leaves it has a key for.</p>
-</div><h3 id="variant.Include" class="variant small-section-header"><a href="#variant.Include" class="anchor field"></a><code>Include(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>)</code></h3><div class="docblock"><p>The signer won’t sign leaves other than the ones specified. Note that it could still ignore
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.All" class="variant"><a href="#variant.All" class="anchor">§</a><h3 class="code-header">All</h3></section><div class="docblock"><p>The signer will sign all the leaves it has a key for.</p>
+</div><section id="variant.Include" class="variant"><a href="#variant.Include" class="anchor">§</a><h3 class="code-header">Include(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>)</h3></section><div class="docblock"><p>The signer won’t sign leaves other than the ones specified. Note that it could still ignore
some of the specified leaves, if it doesn’t have the right key to sign them.</p>
-</div><h3 id="variant.Exclude" class="variant small-section-header"><a href="#variant.Exclude" class="anchor field"></a><code>Exclude(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>)</code></h3><div class="docblock"><p>The signer won’t sign the specified leaves.</p>
-</div><h3 id="variant.None" class="variant small-section-header"><a href="#variant.None" class="anchor field"></a><code>None</code></h3><div class="docblock"><p>The signer won’t sign any leaf.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#753-757" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#754-756" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CTapLeavesOptions%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#impl-PartialEq%3CTapLeavesOptions%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a>> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#740" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><section id="variant.Exclude" class="variant"><a href="#variant.Exclude" class="anchor">§</a><h3 class="code-header">Exclude(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><TapLeafHash>)</h3></section><div class="docblock"><p>The signer won’t sign the specified leaves.</p>
+</div><section id="variant.None" class="variant"><a href="#variant.None" class="anchor">§</a><h3 class="code-header">None</h3></section><div class="docblock"><p>The signer won’t sign any leaf.</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#impl-Clone-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#impl-Debug-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#753-757">source</a><a href="#impl-Default-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#754-756">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CTapLeavesOptions%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#impl-PartialEq%3CTapLeavesOptions%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a>> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Eq-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#impl-Eq-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section><section id="impl-StructuralEq-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#impl-StructuralEq-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section><section id="impl-StructuralPartialEq-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#740">source</a><a href="#impl-StructuralPartialEq-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section><section id="impl-Send-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-Send-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section><section id="impl-Sync-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-Sync-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section><section id="impl-Unpin-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-Unpin-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section><section id="impl-UnwindSafe-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-UnwindSafe-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-Pointable-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-TapLeavesOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-TapLeavesOptions" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-TapLeavesOptions" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Generalized signers"><meta name="keywords" content="rust, rustlang, rust-lang, signer"><title>bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module signer</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="signer" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">signer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#12-1123" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generalized signers</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Generalized signers"><meta name="keywords" content="rust, rustlang, rust-lang, signer"><title>bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module signer</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">signer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#12-1123">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generalized signers</p>
<p>This module provides the ability to add customized signers to a <a href="../struct.Wallet.html"><code>Wallet</code></a>
through the <a href="../struct.Wallet.html#method.add_signer"><code>Wallet::add_signer</code></a> function.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">struct</span> <span class="ident">CustomSigner</span> {
- <span class="ident">device</span>: <span class="ident">CustomHSM</span>,
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#[derive(Debug)]
+</span><span class="kw">struct </span>CustomSigner {
+ device: CustomHSM,
}
-<span class="kw">impl</span> <span class="ident">CustomSigner</span> {
- <span class="kw">fn</span> <span class="ident">connect</span>() -> <span class="self">Self</span> {
- <span class="ident">CustomSigner</span> { <span class="ident">device</span>: <span class="ident">CustomHSM::connect</span>() }
+<span class="kw">impl </span>CustomSigner {
+ <span class="kw">fn </span>connect() -> <span class="self">Self </span>{
+ CustomSigner { device: CustomHSM::connect() }
}
}
-<span class="kw">impl</span> <span class="ident">SignerCommon</span> <span class="kw">for</span> <span class="ident">CustomSigner</span> {
- <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident">Secp256k1</span><span class="op"><</span><span class="ident">All</span><span class="op">></span>) -> <span class="ident">SignerId</span> {
- <span class="self">self</span>.<span class="ident">device</span>.<span class="ident">get_id</span>()
+<span class="kw">impl </span>SignerCommon <span class="kw">for </span>CustomSigner {
+ <span class="kw">fn </span>id(<span class="kw-2">&</span><span class="self">self</span>, _secp: <span class="kw-2">&</span>Secp256k1<All>) -> SignerId {
+ <span class="self">self</span>.device.get_id()
}
}
-<span class="kw">impl</span> <span class="ident">InputSigner</span> <span class="kw">for</span> <span class="ident">CustomSigner</span> {
- <span class="kw">fn</span> <span class="ident">sign_input</span>(
+<span class="kw">impl </span>InputSigner <span class="kw">for </span>CustomSigner {
+ <span class="kw">fn </span>sign_input(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">_sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident">Secp256k1</span><span class="op"><</span><span class="ident">All</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">device</span>.<span class="ident">hsm_sign_input</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>)<span class="question-mark">?</span>;
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ _sign_options: <span class="kw-2">&</span>SignOptions,
+ _secp: <span class="kw-2">&</span>Secp256k1<All>,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError> {
+ <span class="self">self</span>.device.hsm_sign_input(psbt, input_index)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">let</span> <span class="ident">custom_signer</span> <span class="op">=</span> <span class="ident">CustomSigner::connect</span>();
+<span class="kw">let </span>custom_signer = CustomSigner::connect();
-<span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)"</span>;
-<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="ident">descriptor</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">MemoryDatabase::default</span>())<span class="question-mark">?</span>;
-<span class="ident">wallet</span>.<span class="ident">add_signer</span>(
- <span class="ident">KeychainKind::External</span>,
- <span class="ident">SignerOrdering</span>(<span class="number">200</span>),
- <span class="ident">Arc::new</span>(<span class="ident">custom_signer</span>)
+<span class="kw">let </span>descriptor = <span class="string">"wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)"</span>;
+<span class="kw">let </span><span class="kw-2">mut </span>wallet = Wallet::new(descriptor, <span class="prelude-val">None</span>, Network::Testnet, MemoryDatabase::default())<span class="question-mark">?</span>;
+wallet.add_signer(
+ KeychainKind::External,
+ SignerOrdering(<span class="number">200</span>),
+ Arc::new(custom_signer)
);
</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignOptions.html" title="bdk::wallet::signer::SignOptions struct">SignOptions</a></div><div class="item-right docblock-short"><p>Options for a software signer</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignerOrdering.html" title="bdk::wallet::signer::SignerOrdering struct">SignerOrdering</a></div><div class="item-right docblock-short"><p>Defines the order in which signers are called</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignerWrapper.html" title="bdk::wallet::signer::SignerWrapper struct">SignerWrapper</a></div><div class="item-right docblock-short"><p>Wrapper structure to pair a signer with its context</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignersContainer.html" title="bdk::wallet::signer::SignersContainer struct">SignersContainer</a></div><div class="item-right docblock-short"><p>Container for multiple signers</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SignerContext.html" title="bdk::wallet::signer::SignerContext enum">SignerContext</a></div><div class="item-right docblock-short"><p>Signing context</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SignerError.html" title="bdk::wallet::signer::SignerError enum">SignerError</a></div><div class="item-right docblock-short"><p>Signing error</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SignerId.html" title="bdk::wallet::signer::SignerId enum">SignerId</a></div><div class="item-right docblock-short"><p>Identifier of a signer in the <code>SignersContainers</code>. Used as a key to find the right signer among
-multiple of them</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.TapLeavesOptions.html" title="bdk::wallet::signer::TapLeavesOptions enum">TapLeavesOptions</a></div><div class="item-right docblock-short"><p>Customize which taproot script-path leaves the signer should sign.</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.InputSigner.html" title="bdk::wallet::signer::InputSigner trait">InputSigner</a></div><div class="item-right docblock-short"><p>PSBT Input signer</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.SignerCommon.html" title="bdk::wallet::signer::SignerCommon trait">SignerCommon</a></div><div class="item-right docblock-short"><p>Common signer methods</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.TransactionSigner.html" title="bdk::wallet::signer::TransactionSigner trait">TransactionSigner</a></div><div class="item-right docblock-short"><p>PSBT signer</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignOptions.html" title="bdk::wallet::signer::SignOptions struct">SignOptions</a></div><div class="item-right docblock-short">Options for a software signer</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignerOrdering.html" title="bdk::wallet::signer::SignerOrdering struct">SignerOrdering</a></div><div class="item-right docblock-short">Defines the order in which signers are called</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignerWrapper.html" title="bdk::wallet::signer::SignerWrapper struct">SignerWrapper</a></div><div class="item-right docblock-short">Wrapper structure to pair a signer with its context</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SignersContainer.html" title="bdk::wallet::signer::SignersContainer struct">SignersContainer</a></div><div class="item-right docblock-short">Container for multiple signers</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SignerContext.html" title="bdk::wallet::signer::SignerContext enum">SignerContext</a></div><div class="item-right docblock-short">Signing context</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SignerError.html" title="bdk::wallet::signer::SignerError enum">SignerError</a></div><div class="item-right docblock-short">Signing error</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.SignerId.html" title="bdk::wallet::signer::SignerId enum">SignerId</a></div><div class="item-right docblock-short">Identifier of a signer in the <code>SignersContainers</code>. Used as a key to find the right signer among
+multiple of them</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.TapLeavesOptions.html" title="bdk::wallet::signer::TapLeavesOptions enum">TapLeavesOptions</a></div><div class="item-right docblock-short">Customize which taproot script-path leaves the signer should sign.</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.InputSigner.html" title="bdk::wallet::signer::InputSigner trait">InputSigner</a></div><div class="item-right docblock-short">PSBT Input signer</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.SignerCommon.html" title="bdk::wallet::signer::SignerCommon trait">SignerCommon</a></div><div class="item-right docblock-short">Common signer methods</div></div><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.TransactionSigner.html" title="bdk::wallet::signer::TransactionSigner trait">TransactionSigner</a></div><div class="item-right docblock-short">PSBT signer</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["SignerContext","Signing context"],["SignerError","Signing error"],["SignerId","Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among multiple of them"],["TapLeavesOptions","Customize which taproot script-path leaves the signer should sign."]],"struct":[["SignOptions","Options for a software signer"],["SignerOrdering","Defines the order in which signers are called"],["SignerWrapper","Wrapper structure to pair a signer with its context"],["SignersContainer","Container for multiple signers"]],"trait":[["InputSigner","PSBT Input signer"],["SignerCommon","Common signer methods"],["TransactionSigner","PSBT signer"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["SignerContext","Signing context"],["SignerError","Signing error"],["SignerId","Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among multiple of them"],["TapLeavesOptions","Customize which taproot script-path leaves the signer should sign."]],"struct":[["SignOptions","Options for a software signer"],["SignerOrdering","Defines the order in which signers are called"],["SignerWrapper","Wrapper structure to pair a signer with its context"],["SignersContainer","Container for multiple signers"]],"trait":[["InputSigner","PSBT Input signer"],["SignerCommon","Common signer methods"],["TransactionSigner","PSBT signer"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options for a software signer"><meta name="keywords" content="rust, rustlang, rust-lang, SignOptions"><title>SignOptions in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignOptions</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.allow_all_sighashes">allow_all_sighashes</a><a href="#structfield.allow_grinding">allow_grinding</a><a href="#structfield.assume_height">assume_height</a><a href="#structfield.remove_partial_sigs">remove_partial_sigs</a><a href="#structfield.sign_with_tap_internal_key">sign_with_tap_internal_key</a><a href="#structfield.tap_leaves_options">tap_leaves_options</a><a href="#structfield.trust_witness_utxo">trust_witness_utxo</a><a href="#structfield.try_finalize">try_finalize</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignOptions" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#682-737" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SignOptions {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options for a software signer"><meta name="keywords" content="rust, rustlang, rust-lang, SignOptions"><title>SignOptions in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignOptions</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.allow_all_sighashes">allow_all_sighashes</a></li><li><a href="#structfield.allow_grinding">allow_grinding</a></li><li><a href="#structfield.assume_height">assume_height</a></li><li><a href="#structfield.remove_partial_sigs">remove_partial_sigs</a></li><li><a href="#structfield.sign_with_tap_internal_key">sign_with_tap_internal_key</a></li><li><a href="#structfield.tap_leaves_options">tap_leaves_options</a></li><li><a href="#structfield.trust_witness_utxo">trust_witness_utxo</a></li><li><a href="#structfield.try_finalize">try_finalize</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignOptions">Clone</a></li><li><a href="#impl-Debug-for-SignOptions">Debug</a></li><li><a href="#impl-Default-for-SignOptions">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignOptions">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignOptions">Send</a></li><li><a href="#impl-Sync-for-SignOptions">Sync</a></li><li><a href="#impl-Unpin-for-SignOptions">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignOptions">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignOptions">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignOptions">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignOptions">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SignOptions">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignOptions">Into<U></a></li><li><a href="#impl-Pointable-for-SignOptions">Pointable</a></li><li><a href="#impl-ToOwned-for-SignOptions">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignOptions">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignOptions">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignOptions">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#682-737">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SignOptions {
pub trust_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
pub assume_height: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>>,
pub allow_all_sighashes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
pub allow_grinding: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Options for a software signer</p>
<p>Adjust the behavior of our software signers and the way a transaction is finalized</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.trust_witness_utxo" class="structfield small-section-header"><a href="#structfield.trust_witness_utxo" class="anchor field"></a><code>trust_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the signer should trust the <code>witness_utxo</code>, if the <code>non_witness_utxo</code> hasn’t been
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.trust_witness_utxo" class="structfield small-section-header"><a href="#structfield.trust_witness_utxo" class="anchor field">§</a><code>trust_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the signer should trust the <code>witness_utxo</code>, if the <code>non_witness_utxo</code> hasn’t been
provided</p>
<p>Defaults to <code>false</code> to mitigate the “SegWit bug” which chould trick the wallet into
paying a fee larger than expected.</p>
should correctly produce a signature, at the expense of an increased trust in the creator
of the PSBT.</p>
<p>For more details see: <a href="https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd">https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd</a></p>
-</div><span id="structfield.assume_height" class="structfield small-section-header"><a href="#structfield.assume_height" class="anchor field"></a><code>assume_height: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>></code></span><div class="docblock"><p>Whether the wallet should assume a specific height has been reached when trying to finalize
+</div><span id="structfield.assume_height" class="structfield small-section-header"><a href="#structfield.assume_height" class="anchor field">§</a><code>assume_height: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>></code></span><div class="docblock"><p>Whether the wallet should assume a specific height has been reached when trying to finalize
a transaction</p>
<p>The wallet will only “use” a timelock to satisfy the spending policy of an input if the
timelock height has already been reached. This option allows overriding the “current height” to let the
wallet use timelocks in the future to spend a coin.</p>
-</div><span id="structfield.allow_all_sighashes" class="structfield small-section-header"><a href="#structfield.allow_all_sighashes" class="anchor field"></a><code>allow_all_sighashes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the signer should use the <code>sighash_type</code> set in the PSBT when signing, no matter
+</div><span id="structfield.allow_all_sighashes" class="structfield small-section-header"><a href="#structfield.allow_all_sighashes" class="anchor field">§</a><code>allow_all_sighashes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the signer should use the <code>sighash_type</code> set in the PSBT when signing, no matter
what its value is</p>
<p>Defaults to <code>false</code> which will only allow signing using <code>SIGHASH_ALL</code>.</p>
-</div><span id="structfield.remove_partial_sigs" class="structfield small-section-header"><a href="#structfield.remove_partial_sigs" class="anchor field"></a><code>remove_partial_sigs: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether to remove partial signatures from the PSBT inputs while finalizing PSBT.</p>
+</div><span id="structfield.remove_partial_sigs" class="structfield small-section-header"><a href="#structfield.remove_partial_sigs" class="anchor field">§</a><code>remove_partial_sigs: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether to remove partial signatures from the PSBT inputs while finalizing PSBT.</p>
<p>Defaults to <code>true</code> which will remove partial signatures during finalization.</p>
-</div><span id="structfield.try_finalize" class="structfield small-section-header"><a href="#structfield.try_finalize" class="anchor field"></a><code>try_finalize: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether to try finalizing the PSBT after the inputs are signed.</p>
+</div><span id="structfield.try_finalize" class="structfield small-section-header"><a href="#structfield.try_finalize" class="anchor field">§</a><code>try_finalize: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether to try finalizing the PSBT after the inputs are signed.</p>
<p>Defaults to <code>true</code> which will try finalizing PSBT after inputs are signed.</p>
-</div><span id="structfield.tap_leaves_options" class="structfield small-section-header"><a href="#structfield.tap_leaves_options" class="anchor field"></a><code>tap_leaves_options: <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></code></span><div class="docblock"><p>Specifies which Taproot script-spend leaves we should sign for. This option is
+</div><span id="structfield.tap_leaves_options" class="structfield small-section-header"><a href="#structfield.tap_leaves_options" class="anchor field">§</a><code>tap_leaves_options: <a class="enum" href="enum.TapLeavesOptions.html" title="enum bdk::wallet::signer::TapLeavesOptions">TapLeavesOptions</a></code></span><div class="docblock"><p>Specifies which Taproot script-spend leaves we should sign for. This option is
ignored if we’re signing a non-taproot PSBT.</p>
<p>Defaults to All, i.e., the wallet will sign all the leaves it has a key for.</p>
-</div><span id="structfield.sign_with_tap_internal_key" class="structfield small-section-header"><a href="#structfield.sign_with_tap_internal_key" class="anchor field"></a><code>sign_with_tap_internal_key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether we should try to sign a taproot transaction with the taproot internal key
+</div><span id="structfield.sign_with_tap_internal_key" class="structfield small-section-header"><a href="#structfield.sign_with_tap_internal_key" class="anchor field">§</a><code>sign_with_tap_internal_key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether we should try to sign a taproot transaction with the taproot internal key
or not. This option is ignored if we’re signing a non-taproot PSBT.</p>
<p>Defaults to <code>true</code>, i.e., we always try to sign with the taproot internal key.</p>
-</div><span id="structfield.allow_grinding" class="structfield small-section-header"><a href="#structfield.allow_grinding" class="anchor field"></a><code>allow_grinding: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether we should grind ECDSA signature to ensure signing with low r
+</div><span id="structfield.allow_grinding" class="structfield small-section-header"><a href="#structfield.allow_grinding" class="anchor field">§</a><code>allow_grinding: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether we should grind ECDSA signature to ensure signing with low r
or not.
Defaults to <code>true</code>, i.e., we always grind ECDSA signature to sign with low r.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#681" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#681" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#681" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#681" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#760-773" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#761-772" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#681">source</a><a href="#impl-Clone-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#681">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#681">source</a><a href="#impl-Debug-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#681">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#760-773">source</a><a href="#impl-Default-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#761-772">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignOptions" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section><section id="impl-Send-for-SignOptions" class="impl has-srclink"><a href="#impl-Send-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section><section id="impl-Sync-for-SignOptions" class="impl has-srclink"><a href="#impl-Sync-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section><section id="impl-Unpin-for-SignOptions" class="impl has-srclink"><a href="#impl-Unpin-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section><section id="impl-UnwindSafe-for-SignOptions" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignOptions" class="impl has-srclink"><a href="#impl-Pointable-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignOptions" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignOptions" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Defines the order in which signers are called"><meta name="keywords" content="rust, rustlang, rust-lang, SignerOrdering"><title>SignerOrdering in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignerOrdering</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Tuple Fields</a></h3><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Eq">Eq</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CSignerOrdering%3E">PartialEq<SignerOrdering></a><a href="#impl-PartialOrd%3CSignerOrdering%3E">PartialOrd<SignerOrdering></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignerOrdering" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignerOrdering</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#546" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SignerOrdering(pub <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Defines the order in which signers are called</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Defines the order in which signers are called"><meta name="keywords" content="rust, rustlang, rust-lang, SignerOrdering"><title>SignerOrdering in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignerOrdering</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Tuple Fields</a></h3><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignerOrdering">Clone</a></li><li><a href="#impl-Debug-for-SignerOrdering">Debug</a></li><li><a href="#impl-Default-for-SignerOrdering">Default</a></li><li><a href="#impl-Eq-for-SignerOrdering">Eq</a></li><li><a href="#impl-Ord-for-SignerOrdering">Ord</a></li><li><a href="#impl-PartialEq%3CSignerOrdering%3E-for-SignerOrdering">PartialEq<SignerOrdering></a></li><li><a href="#impl-PartialOrd%3CSignerOrdering%3E-for-SignerOrdering">PartialOrd<SignerOrdering></a></li><li><a href="#impl-StructuralEq-for-SignerOrdering">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-SignerOrdering">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignerOrdering">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignerOrdering">Send</a></li><li><a href="#impl-Sync-for-SignerOrdering">Sync</a></li><li><a href="#impl-Unpin-for-SignerOrdering">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignerOrdering">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignerOrdering">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignerOrdering">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignerOrdering">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SignerOrdering">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignerOrdering">Into<U></a></li><li><a href="#impl-Pointable-for-SignerOrdering">Pointable</a></li><li><a href="#impl-ToOwned-for-SignerOrdering">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignerOrdering">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignerOrdering">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignerOrdering">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignerOrdering</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#546">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SignerOrdering(pub <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Defines the order in which signers are called</p>
<p>The default value is <code>100</code>. Signers with an ordering above that will be called later,
and they will thus see the partial signatures added to the transaction once they get to sign
themselves.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field"></a><code>0: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#548-552" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#549-551" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CSignerOrdering%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-PartialEq%3CSignerOrdering%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CSignerOrdering%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CSignerOrdering%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#545" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-Clone-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-Debug-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#548-552">source</a><a href="#impl-Default-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#549-551">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-Ord-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CSignerOrdering%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-PartialEq%3CSignerOrdering%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CSignerOrdering%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-PartialOrd%3CSignerOrdering%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-Eq-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section><section id="impl-StructuralEq-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-StructuralEq-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section><section id="impl-StructuralPartialEq-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#545">source</a><a href="#impl-StructuralPartialEq-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignerOrdering" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section><section id="impl-Send-for-SignerOrdering" class="impl has-srclink"><a href="#impl-Send-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section><section id="impl-Sync-for-SignerOrdering" class="impl has-srclink"><a href="#impl-Sync-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section><section id="impl-Unpin-for-SignerOrdering" class="impl has-srclink"><a href="#impl-Unpin-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section><section id="impl-UnwindSafe-for-SignerOrdering" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignerOrdering" class="impl has-srclink"><a href="#impl-Pointable-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignerOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignerOrdering" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignerOrdering" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wrapper structure to pair a signer with its context"><meta name="keywords" content="rust, rustlang, rust-lang, SignerWrapper"><title>SignerWrapper in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignerWrapper</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.new">new</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Deref">Deref</a><a href="#impl-InputSigner">InputSigner</a><a href="#impl-SignerCommon">SignerCommon</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TransactionSigner">TransactionSigner</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignerWrapper" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignerWrapper</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#207-210" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SignerWrapper<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wrapper structure to pair a signer with its context</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#212-217" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#214-216" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(signer: S, ctx: <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>) -> Self</h4></div></summary><div class="docblock"><p>Create a wrapped signer from a signer and a context</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#206" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#206" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#206" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#206" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#219-225" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = S</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#222-224" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-InputSigner" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#300-368" title="goto source code">source</a></div><a href="#impl-InputSigner" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign_input" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#301-367" title="goto source code">source</a></div><a href="#method.sign_input" class="anchor"></a><h4 class="code-header">fn <a href="trait.InputSigner.html#tymethod.sign_input" class="fnname">sign_input</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></div></summary><div class='docblock'><p>Sign a single psbt input</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-InputSigner-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#383-480" title="goto source code">source</a></div><a href="#impl-InputSigner-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign_input-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#384-479" title="goto source code">source</a></div><a href="#method.sign_input-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.InputSigner.html#tymethod.sign_input" class="fnname">sign_input</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></div></summary><div class='docblock'><p>Sign a single psbt input</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-SignerCommon" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#290-298" title="goto source code">source</a></div><a href="#impl-SignerCommon" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#291-293" title="goto source code">source</a></div><a href="#method.id" class="anchor"></a><h4 class="code-header">fn <a href="trait.SignerCommon.html#tymethod.id" class="fnname">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class='docblock'><p>Return the <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer <a href="trait.SignerCommon.html#tymethod.id">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor_secret_key" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#295-297" title="goto source code">source</a></div><a href="#method.descriptor_secret_key" class="anchor"></a><h4 class="code-header">fn <a href="trait.SignerCommon.html#method.descriptor_secret_key" class="fnname">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></div></summary><div class='docblock'><p>Return the secret key for the signer <a href="trait.SignerCommon.html#method.descriptor_secret_key">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-SignerCommon-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#370-381" title="goto source code">source</a></div><a href="#impl-SignerCommon-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.id-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#371-373" title="goto source code">source</a></div><a href="#method.id-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.SignerCommon.html#tymethod.id" class="fnname">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class='docblock'><p>Return the <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer <a href="trait.SignerCommon.html#tymethod.id">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor_secret_key-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#375-380" title="goto source code">source</a></div><a href="#method.descriptor_secret_key-1" class="anchor"></a><h4 class="code-header">fn <a href="trait.SignerCommon.html#method.descriptor_secret_key" class="fnname">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></div></summary><div class='docblock'><p>Return the secret key for the signer <a href="trait.SignerCommon.html#method.descriptor_secret_key">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>, </span></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>, </span></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S> <span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>, </span></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TransactionSigner" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#275-288" title="goto source code">source</a></div><a href="#impl-TransactionSigner" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign_transaction" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#276-287" title="goto source code">source</a></div><a href="#method.sign_transaction" class="anchor"></a><h4 class="code-header">pub fn <a href="trait.TransactionSigner.html#tymethod.sign_transaction" class="fnname">sign_transaction</a>(<br> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self, <br> &mut PartiallySignedTransaction, <br> &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></div></summary><div class='docblock'><p>Sign all the inputs of the psbt</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wrapper structure to pair a signer with its context"><meta name="keywords" content="rust, rustlang, rust-lang, SignerWrapper"><title>SignerWrapper in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignerWrapper</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignerWrapper%3CS%3E">Clone</a></li><li><a href="#impl-Debug-for-SignerWrapper%3CS%3E">Debug</a></li><li><a href="#impl-Deref-for-SignerWrapper%3CS%3E">Deref</a></li><li><a href="#impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E">InputSigner</a></li><li><a href="#impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E">InputSigner</a></li><li><a href="#impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E">SignerCommon</a></li><li><a href="#impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E">SignerCommon</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignerWrapper%3CS%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignerWrapper%3CS%3E">Send</a></li><li><a href="#impl-Sync-for-SignerWrapper%3CS%3E">Sync</a></li><li><a href="#impl-Unpin-for-SignerWrapper%3CS%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignerWrapper%3CS%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignerWrapper%3CS%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignerWrapper%3CS%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignerWrapper%3CS%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SignerWrapper%3CS%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignerWrapper%3CS%3E">Into<U></a></li><li><a href="#impl-Pointable-for-SignerWrapper%3CS%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-SignerWrapper%3CS%3E">ToOwned</a></li><li><a href="#impl-TransactionSigner-for-SignerWrapper%3CS%3E">TransactionSigner</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignerWrapper%3CS%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignerWrapper%3CS%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignerWrapper%3CS%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignerWrapper</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#207-210">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SignerWrapper<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wrapper structure to pair a signer with its context</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#212-217">source</a><a href="#impl-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#214-216">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(signer: S, ctx: <a class="enum" href="enum.SignerContext.html" title="enum bdk::wallet::signer::SignerContext">SignerContext</a>) -> Self</h4></section></summary><div class="docblock"><p>Create a wrapped signer from a signer and a context</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#206">source</a><a href="#impl-Clone-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#206">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#206">source</a><a href="#impl-Debug-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#206">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#219-225">source</a><a href="#impl-Deref-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = S</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#222-224">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#300-368">source</a><a href="#impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sign_input" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#301-367">source</a><a href="#method.sign_input" class="anchor">§</a><h4 class="code-header">fn <a href="trait.InputSigner.html#tymethod.sign_input" class="fn">sign_input</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></section></summary><div class='docblock'>Sign a single psbt input</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#383-480">source</a><a href="#impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sign_input-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#384-479">source</a><a href="#method.sign_input-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.InputSigner.html#tymethod.sign_input" class="fn">sign_input</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></section></summary><div class='docblock'>Sign a single psbt input</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#290-298">source</a><a href="#impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.id" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#291-293">source</a><a href="#method.id" class="anchor">§</a><h4 class="code-header">fn <a href="trait.SignerCommon.html#tymethod.id" class="fn">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class='docblock'>Return the <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer <a href="trait.SignerCommon.html#tymethod.id">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.descriptor_secret_key" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#295-297">source</a><a href="#method.descriptor_secret_key" class="anchor">§</a><h4 class="code-header">fn <a href="trait.SignerCommon.html#method.descriptor_secret_key" class="fn">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></section></summary><div class='docblock'>Return the secret key for the signer <a href="trait.SignerCommon.html#method.descriptor_secret_key">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#370-381">source</a><a href="#impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.id-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#371-373">source</a><a href="#method.id-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.SignerCommon.html#tymethod.id" class="fn">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class='docblock'>Return the <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer <a href="trait.SignerCommon.html#tymethod.id">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.descriptor_secret_key-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#375-380">source</a><a href="#method.descriptor_secret_key-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.SignerCommon.html#method.descriptor_secret_key" class="fn">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></section></summary><div class='docblock'>Return the secret key for the signer <a href="trait.SignerCommon.html#method.descriptor_secret_key">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-Send-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-Sync-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-Unpin-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><S><span class="where fmt-newline">where<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-Pointable-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TransactionSigner-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#275-288">source</a><a href="#impl-TransactionSigner-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sign_transaction" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#276-287">source</a><a href="#method.sign_transaction" class="anchor">§</a><h4 class="code-header">fn <a href="trait.TransactionSigner.html#tymethod.sign_transaction" class="fn">sign_transaction</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></section></summary><div class='docblock'>Sign all the inputs of the psbt</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignerWrapper%3CS%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignerWrapper%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Container for multiple signers"><meta name="keywords" content="rust, rustlang, rust-lang, SignersContainer"><title>SignersContainer in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignersContainer</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.add_external">add_external</a><a href="#method.as_key_map">as_key_map</a><a href="#method.build">build</a><a href="#method.find">find</a><a href="#method.ids">ids</a><a href="#method.new">new</a><a href="#method.remove">remove</a><a href="#method.signers">signers</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignersContainer" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignersContainer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#571" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SignersContainer(_);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Container for multiple signers</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#573-624" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.as_key_map" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#575-581" title="goto source code">source</a></div><a href="#method.as_key_map" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.as_key_map" class="fnname">as_key_map</a>(&self, secp: &Secp256k1<All>) -> <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a></h4></div></summary><div class="docblock"><p>Create a map of public keys to secret keys</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#587-623" title="goto source code">source</a></div><a href="#method.build" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.build" class="fnname">build</a>(<br> keymap: <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>, <br> descriptor: &<a class="enum" href="../../descriptor/enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>, <br> secp: &Secp256k1<All><br>) -> <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h4></div></summary><div class="docblock"><p>Build a new signer container from a <a href="../../keys/type.KeyMap.html" title="KeyMap"><code>KeyMap</code></a></p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Container for multiple signers"><meta name="keywords" content="rust, rustlang, rust-lang, SignersContainer"><title>SignersContainer in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignersContainer</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_external">add_external</a></li><li><a href="#method.as_key_map">as_key_map</a></li><li><a href="#method.build">build</a></li><li><a href="#method.find">find</a></li><li><a href="#method.ids">ids</a></li><li><a href="#method.new">new</a></li><li><a href="#method.remove">remove</a></li><li><a href="#method.signers">signers</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-SignersContainer">Clone</a></li><li><a href="#impl-Debug-for-SignersContainer">Debug</a></li><li><a href="#impl-Default-for-SignersContainer">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SignersContainer">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-SignersContainer">Send</a></li><li><a href="#impl-Sync-for-SignersContainer">Sync</a></li><li><a href="#impl-Unpin-for-SignersContainer">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SignersContainer">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SignersContainer">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SignersContainer">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SignersContainer">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SignersContainer">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SignersContainer">Into<U></a></li><li><a href="#impl-Pointable-for-SignersContainer">Pointable</a></li><li><a href="#impl-ToOwned-for-SignersContainer">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SignersContainer">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SignersContainer">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SignersContainer">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="struct" href="#">SignersContainer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#571">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SignersContainer(_);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Container for multiple signers</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#573-624">source</a><a href="#impl-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_key_map" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#575-581">source</a><h4 class="code-header">pub fn <a href="#method.as_key_map" class="fn">as_key_map</a>(&self, secp: &Secp256k1<All>) -> <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a></h4></section></summary><div class="docblock"><p>Create a map of public keys to secret keys</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#587-623">source</a><h4 class="code-header">pub fn <a href="#method.build" class="fn">build</a>(<br> keymap: <a class="type" href="../../keys/type.KeyMap.html" title="type bdk::keys::KeyMap">KeyMap</a>,<br> descriptor: &<a class="enum" href="../../descriptor/enum.Descriptor.html" title="enum bdk::descriptor::Descriptor">Descriptor</a><<a class="enum" href="../../keys/enum.DescriptorPublicKey.html" title="enum bdk::keys::DescriptorPublicKey">DescriptorPublicKey</a>>,<br> secp: &Secp256k1<All><br>) -> <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h4></section></summary><div class="docblock"><p>Build a new signer container from a <a href="../../keys/type.KeyMap.html" title="KeyMap"><code>KeyMap</code></a></p>
<p>Also looks at the corresponding descriptor to determine the <a href="enum.SignerContext.html" title="SignerContext"><code>SignerContext</code></a> to attach to
the signers</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#626-676" title="goto source code">source</a></div><a href="#impl-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#628-630" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>() -> Self</h4></div></summary><div class="docblock"><p>Default constructor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_external" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#634-641" title="goto source code">source</a></div><a href="#method.add_external" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_external" class="fnname">add_external</a>(<br> &mut self, <br> id: <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>, <br> ordering: <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>, <br> signer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>></h4></div></summary><div class="docblock"><p>Adds an external signer to the container for the specified id. Optionally returns the
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SignersContainer-1" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#626-676">source</a><a href="#impl-SignersContainer-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#628-630">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>() -> Self</h4></section></summary><div class="docblock"><p>Default constructor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_external" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#634-641">source</a><h4 class="code-header">pub fn <a href="#method.add_external" class="fn">add_external</a>(<br> &mut self,<br> id: <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>,<br> ordering: <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>,<br> signer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>></h4></section></summary><div class="docblock"><p>Adds an external signer to the container for the specified id. Optionally returns the
signer that was previously in the container, if any</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.remove" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#644-650" title="goto source code">source</a></div><a href="#method.remove" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.remove" class="fnname">remove</a>(<br> &mut self, <br> id: <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>, <br> ordering: <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>></h4></div></summary><div class="docblock"><p>Removes a signer from the container and returns it</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ids" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#653-658" title="goto source code">source</a></div><a href="#method.ids" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.ids" class="fnname">ids</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><&<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A></div><code class="content"><span class="where fmt-newline">impl<A> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A> <span class="where fmt-newline">where<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>, </span></span></code></span></div></span></span></h4></div></summary><div class="docblock"><p>Returns the list of identifiers of all the signers in the container</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.signers" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#661-663" title="goto source code">source</a></div><a href="#method.signers" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.signers" class="fnname">signers</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><div class="notable">Notable traits for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A></div><code class="content"><span class="where fmt-newline">impl<A> <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, A> <span class="where fmt-newline">where<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>, </span></span></code></span></div></span></span></h4></div></summary><div class="docblock"><p>Returns the list of signers in the container, sorted by lowest to highest <code>ordering</code></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.find" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#666-675" title="goto source code">source</a></div><a href="#method.find" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.find" class="fnname">find</a>(&self, id: <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>></h4></div></summary><div class="docblock"><p>Finds the signer with lowest ordering for a given id in the container.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#570" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#570" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#570" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#570" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#570" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#570" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.remove" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#644-650">source</a><h4 class="code-header">pub fn <a href="#method.remove" class="fn">remove</a>(<br> &mut self,<br> id: <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>,<br> ordering: <a class="struct" href="struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>></h4></section></summary><div class="docblock"><p>Removes a signer from the container and returns it</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ids" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#653-658">source</a><h4 class="code-header">pub fn <a href="#method.ids" class="fn">ids</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><&<a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>> <a href="#" class="notable-traits" data-ty="Vec<&SignerId>">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the list of identifiers of all the signers in the container</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.signers" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#661-663">source</a><h4 class="code-header">pub fn <a href="#method.signers" class="fn">signers</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>> <a href="#" class="notable-traits" data-ty="Vec<&Arc<dyn TransactionSigner>>">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the list of signers in the container, sorted by lowest to highest <code>ordering</code></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.find" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#666-675">source</a><h4 class="code-header">pub fn <a href="#method.find" class="fn">find</a>(&self, id: <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>>></h4></section></summary><div class="docblock"><p>Finds the signer with lowest ordering for a given id in the container.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#570">source</a><a href="#impl-Clone-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#570">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#570">source</a><a href="#impl-Debug-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#570">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#570">source</a><a href="#impl-Default-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#570">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SignersContainer" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section><section id="impl-Send-for-SignersContainer" class="impl has-srclink"><a href="#impl-Send-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section><section id="impl-Sync-for-SignersContainer" class="impl has-srclink"><a href="#impl-Sync-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section><section id="impl-Unpin-for-SignersContainer" class="impl has-srclink"><a href="#impl-Unpin-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section><section id="impl-UnwindSafe-for-SignersContainer" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SignersContainer" class="impl has-srclink"><a href="#impl-Pointable-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SignersContainer" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SignersContainer" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SignersContainer" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div><script type="text/json" id="notable-traits-data">{"Vec<&Arc<dyn TransactionSigner>>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A></code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl<A> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A><span class=\"where fmt-newline\">where<br> A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</span></span>","Vec<&SignerId>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A></code></h3><pre class=\"content\"><code><span class=\"where fmt-newline\">impl<A> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A><span class=\"where fmt-newline\">where<br> A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</span></span>"}</script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PSBT Input signer"><meta name="keywords" content="rust, rustlang, rust-lang, InputSigner"><title>InputSigner in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">InputSigner</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.sign_input">sign_input</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="InputSigner" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="trait" href="#">InputSigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#250-259" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait InputSigner: <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> {
- fn <a href="#tymethod.sign_input" class="fnname">sign_input</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> secp: &Secp256k1<All><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PSBT Input signer"><meta name="keywords" content="rust, rustlang, rust-lang, InputSigner"><title>InputSigner in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">InputSigner</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.sign_input">sign_input</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="trait" href="#">InputSigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#250-259">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait InputSigner: <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> {
+ fn <a href="#tymethod.sign_input" class="fn">sign_input</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>PSBT Input signer</p>
<p>This trait can be implemented to provide custom signers to the wallet. If the signer supports signing
individual inputs, this trait should be implemented and BDK will provide automatically an implementation
for <a href="trait.TransactionSigner.html" title="TransactionSigner"><code>TransactionSigner</code></a>.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.sign_input" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#252-258" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.sign_input" class="fnname">sign_input</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></div></summary><div class="docblock"><p>Sign a single psbt input</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-InputSigner" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#300-368" title="goto source code">source</a></div><a href="#impl-InputSigner" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></div><div id="impl-InputSigner-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#383-480" title="goto source code">source</a></div><a href="#impl-InputSigner-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></div></div><script type="text/javascript" src="../../../implementors/bdk/wallet/signer/trait.InputSigner.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.sign_input" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#252-258">source</a><h4 class="code-header">fn <a href="#tymethod.sign_input" class="fn">sign_input</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> input_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></section></summary><div class="docblock"><p>Sign a single psbt input</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#300-368">source</a><a href="#impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></section><section id="impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#383-480">source</a><a href="#impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></section></div><script src="../../../implementors/bdk/wallet/signer/trait.InputSigner.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Common signer methods"><meta name="keywords" content="rust, rustlang, rust-lang, SignerCommon"><title>SignerCommon in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SignerCommon</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.id">id</a></div><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><div class="sidebar-links"><a href="#method.descriptor_secret_key">descriptor_secret_key</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="SignerCommon" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="trait" href="#">SignerCommon</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#228-243" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait SignerCommon: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
- fn <a href="#tymethod.id" class="fnname">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Common signer methods"><meta name="keywords" content="rust, rustlang, rust-lang, SignerCommon"><title>SignerCommon in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SignerCommon</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.id">id</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.descriptor_secret_key">descriptor_secret_key</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="trait" href="#">SignerCommon</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#228-243">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait SignerCommon: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
+ fn <a href="#tymethod.id" class="fn">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a>;
- fn <a href="#method.descriptor_secret_key" class="fnname">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>> { ... }
+ fn <a href="#method.descriptor_secret_key" class="fn">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>> { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Common signer methods</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.id" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#233" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.id" class="fnname">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></div></summary><div class="docblock"><p>Return the <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.id" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#233">source</a><h4 class="code-header">fn <a href="#tymethod.id" class="fn">id</a>(&self, secp: &Secp256k1<All>) -> <a class="enum" href="enum.SignerId.html" title="enum bdk::wallet::signer::SignerId">SignerId</a></h4></section></summary><div class="docblock"><p>Return the <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> for this signer</p>
<p>The <a href="enum.SignerId.html" title="SignerId"><code>SignerId</code></a> can be used to lookup a signer in the <a href="../struct.Wallet.html"><code>Wallet</code></a>’s signers map or to
compare two signers.</p>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.descriptor_secret_key" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#240-242" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#method.descriptor_secret_key" class="fnname">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></div></summary><div class="docblock"><p>Return the secret key for the signer</p>
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.descriptor_secret_key" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#240-242">source</a><h4 class="code-header">fn <a href="#method.descriptor_secret_key" class="fn">descriptor_secret_key</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../keys/enum.DescriptorSecretKey.html" title="enum bdk::keys::DescriptorSecretKey">DescriptorSecretKey</a>></h4></section></summary><div class="docblock"><p>Return the secret key for the signer</p>
<p>This is used internally to reconstruct the original descriptor that may contain secrets.
External signers that are meant to keep key isolated should just return <code>None</code> here (which
is the default for this method, if not overridden).</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-SignerCommon" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#79-83" title="goto source code">source</a></div><a href="#impl-SignerCommon" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="../hardwaresigner/struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>hardware-signer</code></strong> only.</div></div></div><div id="impl-SignerCommon-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#290-298" title="goto source code">source</a></div><a href="#impl-SignerCommon-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></div><div id="impl-SignerCommon-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#370-381" title="goto source code">source</a></div><a href="#impl-SignerCommon-2" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></div></div><script type="text/javascript" src="../../../implementors/bdk/wallet/signer/trait.SignerCommon.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-SignerCommon-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#79-83">source</a><a href="#impl-SignerCommon-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="../hardwaresigner/struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>hardware-signer</code></strong> only.</div></span></section><section id="impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#290-298">source</a><a href="#impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CExtendedPrivKey%3E%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><<a class="struct" href="../../descriptor/struct.DescriptorXKey.html" title="struct bdk::descriptor::DescriptorXKey">DescriptorXKey</a><ExtendedPrivKey>></h3></section><section id="impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#370-381">source</a><a href="#impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> for <a class="struct" href="struct.SignerWrapper.html" title="struct bdk::wallet::signer::SignerWrapper">SignerWrapper</a><PrivateKey></h3></section></div><script src="../../../implementors/bdk/wallet/signer/trait.SignerCommon.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PSBT signer"><meta name="keywords" content="rust, rustlang, rust-lang, TransactionSigner"><title>TransactionSigner in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TransactionSigner</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.sign_transaction">sign_transaction</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a></h2><div id="sidebar-vars" data-name="TransactionSigner" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="trait" href="#">TransactionSigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#265-273" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait TransactionSigner: <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> {
- fn <a href="#tymethod.sign_transaction" class="fnname">sign_transaction</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> secp: &Secp256k1<All><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PSBT signer"><meta name="keywords" content="rust, rustlang, rust-lang, TransactionSigner"><title>TransactionSigner in bdk::wallet::signer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TransactionSigner</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.sign_transaction">sign_transaction</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::wallet::signer</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">signer</a>::<wbr><a class="trait" href="#">TransactionSigner</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#265-273">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait TransactionSigner: <a class="trait" href="trait.SignerCommon.html" title="trait bdk::wallet::signer::SignerCommon">SignerCommon</a> {
+ fn <a href="#tymethod.sign_transaction" class="fn">sign_transaction</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br> ) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>PSBT signer</p>
<p>This trait can be implemented when the signer can’t sign inputs individually, but signs the whole transaction
at once.</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.sign_transaction" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#267-272" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.sign_transaction" class="fnname">sign_transaction</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>, <br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></div></summary><div class="docblock"><p>Sign all the inputs of the psbt</p>
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-TransactionSigner" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/hardwaresigner.rs.html#86-97" title="goto source code">source</a></div><a href="#impl-TransactionSigner" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for <a class="struct" href="../hardwaresigner/struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>hardware-signer</code></strong> only.</div></div></div><div class="docblock"><p>This implementation ignores <code>sign_options</code></p>
-</div><div id="impl-TransactionSigner-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/signer.rs.html#275-288" title="goto source code">source</a></div><a href="#impl-TransactionSigner-1" class="anchor"></a><h3 class="code-header in-band">impl<T: <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a>> <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for T</h3></div></div><script type="text/javascript" src="../../../implementors/bdk/wallet/signer/trait.TransactionSigner.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.sign_transaction" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#267-272">source</a><h4 class="code-header">fn <a href="#tymethod.sign_transaction" class="fn">sign_transaction</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> sign_options: &<a class="struct" href="struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a>,<br> secp: &Secp256k1<All><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.SignerError.html" title="enum bdk::wallet::signer::SignerError">SignerError</a>></h4></section></summary><div class="docblock"><p>Sign all the inputs of the psbt</p>
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-TransactionSigner-for-HWISigner" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/hardwaresigner.rs.html#86-97">source</a><a href="#impl-TransactionSigner-for-HWISigner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for <a class="struct" href="../hardwaresigner/struct.HWISigner.html" title="struct bdk::wallet::hardwaresigner::HWISigner">HWISigner</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>hardware-signer</code></strong> only.</div></span></section><div class="docblock"><p>This implementation ignores <code>sign_options</code></p>
+</div><section id="impl-TransactionSigner-for-T" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/signer.rs.html#275-288">source</a><a href="#impl-TransactionSigner-for-T" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.InputSigner.html" title="trait bdk::wallet::signer::InputSigner">InputSigner</a>> <a class="trait" href="trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a> for T</h3></section></div><script src="../../../implementors/bdk/wallet/signer/trait.TransactionSigner.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A derived address and the index it was found at For convenience this automatically derefs to `Address`"><meta name="keywords" content="rust, rustlang, rust-lang, AddressInfo"><title>AddressInfo in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">AddressInfo</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.address">address</a><a href="#structfield.index">index</a><a href="#structfield.keychain">keychain</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#deref-methods-Address">Methods from Deref<Target=Address></a></h3><div class="sidebar-links"><a href="#method.address_type">address_type</a><a href="#method.is_related_to_pubkey">is_related_to_pubkey</a><a href="#method.is_related_to_xonly_pubkey">is_related_to_xonly_pubkey</a><a href="#method.is_standard">is_standard</a><a href="#method.is_valid_for_network">is_valid_for_network</a><a href="#method.script_pubkey">script_pubkey</a><a href="#method.to_qr_uri">to_qr_uri</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Deref">Deref</a><a href="#impl-Display">Display</a><a href="#impl-Eq">Eq</a><a href="#impl-PartialEq%3CAddressInfo%3E">PartialEq<AddressInfo></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="AddressInfo" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="struct" href="#">AddressInfo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#138-145" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct AddressInfo {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A derived address and the index it was found at For convenience this automatically derefs to `Address`"><meta name="keywords" content="rust, rustlang, rust-lang, AddressInfo"><title>AddressInfo in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">AddressInfo</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.address">address</a></li><li><a href="#structfield.index">index</a></li><li><a href="#structfield.keychain">keychain</a></li></ul><h3><a href="#deref-methods-Address">Methods from Deref<Target=Address></a></h3><ul class="block"><li><a href="#method.address_type">address_type</a></li><li><a href="#method.is_related_to_pubkey">is_related_to_pubkey</a></li><li><a href="#method.is_related_to_xonly_pubkey">is_related_to_xonly_pubkey</a></li><li><a href="#method.is_standard">is_standard</a></li><li><a href="#method.is_valid_for_network">is_valid_for_network</a></li><li><a href="#method.script_pubkey">script_pubkey</a></li><li><a href="#method.to_qr_uri">to_qr_uri</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-AddressInfo">Debug</a></li><li><a href="#impl-Deref-for-AddressInfo">Deref</a></li><li><a href="#impl-Display-for-AddressInfo">Display</a></li><li><a href="#impl-Eq-for-AddressInfo">Eq</a></li><li><a href="#impl-PartialEq%3CAddressInfo%3E-for-AddressInfo">PartialEq<AddressInfo></a></li><li><a href="#impl-StructuralEq-for-AddressInfo">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-AddressInfo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-AddressInfo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-AddressInfo">Send</a></li><li><a href="#impl-Sync-for-AddressInfo">Sync</a></li><li><a href="#impl-Unpin-for-AddressInfo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AddressInfo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-AddressInfo">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-AddressInfo">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-AddressInfo">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-AddressInfo">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-AddressInfo">Into<U></a></li><li><a href="#impl-Pointable-for-AddressInfo">Pointable</a></li><li><a href="#impl-ToString-for-AddressInfo">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-AddressInfo">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-AddressInfo">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-AddressInfo">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="struct" href="#">AddressInfo</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#138-145">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct AddressInfo {
pub index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
pub address: Address,
pub keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A derived address and the index it was found at
For convenience this automatically derefs to <code>Address</code></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.index" class="structfield small-section-header"><a href="#structfield.index" class="anchor field"></a><code>index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Child index of this address</p>
-</div><span id="structfield.address" class="structfield small-section-header"><a href="#structfield.address" class="anchor field"></a><code>address: Address</code></span><div class="docblock"><p>Address</p>
-</div><span id="structfield.keychain" class="structfield small-section-header"><a href="#structfield.keychain" class="anchor field"></a><code>keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><div class="docblock"><p>Type of keychain</p>
-</div><h2 id="deref-methods-Address" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = Address></span><a href="#deref-methods-Address" class="anchor"></a></h2><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.address_type" class="method has-srclink"><div class="rightside"></div><a href="#method.address_type" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.address_type" class="fnname">address_type</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><AddressType></h4></div></summary><div class="docblock"><p>Gets the address type of the address.</p>
-<h5 id="returns" class="section-header"><a href="#returns">Returns</a></h5>
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.index" class="structfield small-section-header"><a href="#structfield.index" class="anchor field">§</a><code>index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>Child index of this address</p>
+</div><span id="structfield.address" class="structfield small-section-header"><a href="#structfield.address" class="anchor field">§</a><code>address: Address</code></span><div class="docblock"><p>Address</p>
+</div><span id="structfield.keychain" class="structfield small-section-header"><a href="#structfield.keychain" class="anchor field">§</a><code>keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a></code></span><div class="docblock"><p>Type of keychain</p>
+</div><h2 id="deref-methods-Address" class="small-section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = Address></span><a href="#deref-methods-Address" class="anchor">§</a></h2><div id="deref-methods-Address-1"><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.address_type" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.address_type" class="fn">address_type</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><AddressType></h4></section></summary><div class="docblock"><p>Gets the address type of the address.</p>
+<h5 id="returns"><a href="#returns">Returns</a></h5>
<p>None if unknown, non-standard or related to the future witness version.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_standard" class="method has-srclink"><div class="rightside"></div><a href="#method.is_standard" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_standard" class="fnname">is_standard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Checks whether or not the address is following Bitcoin standardness rules.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_standard" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_standard" class="fn">is_standard</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks whether or not the address is following Bitcoin standardness rules.</p>
<p>SegWit addresses with unassigned witness versions or non-standard program sizes are
considered non-standard.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.script_pubkey" class="method has-srclink"><div class="rightside"></div><a href="#method.script_pubkey" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.script_pubkey" class="fnname">script_pubkey</a>(&self) -> Script</h4></div></summary><div class="docblock"><p>Generates a script pubkey spending to this address.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_qr_uri" class="method has-srclink"><div class="rightside"></div><a href="#method.to_qr_uri" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.to_qr_uri" class="fnname">to_qr_uri</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Creates a URI string <em>bitcoin:address</em> optimized to be encoded in QR codes.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.script_pubkey" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.script_pubkey" class="fn">script_pubkey</a>(&self) -> Script</h4></section></summary><div class="docblock"><p>Generates a script pubkey spending to this address.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_qr_uri" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.to_qr_uri" class="fn">to_qr_uri</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>Creates a URI string <em>bitcoin:address</em> optimized to be encoded in QR codes.</p>
<p>If the address is bech32, both the schema and the address become uppercase.
If the address is base58, the schema is lowercase and the address is left mixed case.</p>
<p>Quoting BIP 173 “inside QR codes uppercase SHOULD be used, as those permit the use of
alphanumeric mode, which is 45% more compact than the normal byte mode.”</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_valid_for_network" class="method has-srclink"><div class="rightside"></div><a href="#method.is_valid_for_network" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_valid_for_network" class="fnname">is_valid_for_network</a>(&self, network: Network) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Parsed addresses do not always have <em>one</em> network. The problem is that legacy testnet,
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_valid_for_network" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_valid_for_network" class="fn">is_valid_for_network</a>(&self, network: Network) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Parsed addresses do not always have <em>one</em> network. The problem is that legacy testnet,
regtest and signet addresse use the same prefix instead of multiple different ones. When
parsing, such addresses are always assumed to be testnet addresses (the same is true for
bech32 signet addresses). So if one wants to check if an address belongs to a certain
network a simple comparison is not enough anymore. Instead this function can be used.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Address</span>, <span class="ident">Network</span>};
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bitcoin::{Address, Network};
-<span class="kw">let</span> <span class="ident">address</span>: <span class="ident">Address</span> <span class="op">=</span> <span class="string">"2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e"</span>.<span class="ident">parse</span>().<span class="ident">unwrap</span>();
-<span class="macro">assert!</span>(<span class="ident">address</span>.<span class="ident">is_valid_for_network</span>(<span class="ident">Network::Testnet</span>));
-<span class="macro">assert!</span>(<span class="ident">address</span>.<span class="ident">is_valid_for_network</span>(<span class="ident">Network::Regtest</span>));
-<span class="macro">assert!</span>(<span class="ident">address</span>.<span class="ident">is_valid_for_network</span>(<span class="ident">Network::Signet</span>));
+<span class="kw">let </span>address: Address = <span class="string">"2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e"</span>.parse().unwrap();
+<span class="macro">assert!</span>(address.is_valid_for_network(Network::Testnet));
+<span class="macro">assert!</span>(address.is_valid_for_network(Network::Regtest));
+<span class="macro">assert!</span>(address.is_valid_for_network(Network::Signet));
-<span class="macro">assert_eq!</span>(<span class="ident">address</span>.<span class="ident">is_valid_for_network</span>(<span class="ident">Network::Bitcoin</span>), <span class="bool-val">false</span>);
+<span class="macro">assert_eq!</span>(address.is_valid_for_network(Network::Bitcoin), <span class="bool-val">false</span>);
-<span class="kw">let</span> <span class="ident">address</span>: <span class="ident">Address</span> <span class="op">=</span> <span class="string">"32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf"</span>.<span class="ident">parse</span>().<span class="ident">unwrap</span>();
-<span class="macro">assert!</span>(<span class="ident">address</span>.<span class="ident">is_valid_for_network</span>(<span class="ident">Network::Bitcoin</span>));
-<span class="macro">assert_eq!</span>(<span class="ident">address</span>.<span class="ident">is_valid_for_network</span>(<span class="ident">Network::Testnet</span>), <span class="bool-val">false</span>);</code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_related_to_pubkey" class="method has-srclink"><div class="rightside"></div><a href="#method.is_related_to_pubkey" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_related_to_pubkey" class="fnname">is_related_to_pubkey</a>(&self, pubkey: &PublicKey) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns true if the given pubkey is directly related to the address payload.</p>
+<span class="kw">let </span>address: Address = <span class="string">"32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf"</span>.parse().unwrap();
+<span class="macro">assert!</span>(address.is_valid_for_network(Network::Bitcoin));
+<span class="macro">assert_eq!</span>(address.is_valid_for_network(Network::Testnet), <span class="bool-val">false</span>);</code></pre></div>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_related_to_pubkey" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_related_to_pubkey" class="fn">is_related_to_pubkey</a>(&self, pubkey: &PublicKey) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the given pubkey is directly related to the address payload.</p>
<p>This is determined by directly comparing the address payload with either the
hash of the given public key or the segwit redeem hash generated from the
given key. For taproot addresses, the supplied key is assumed to be tweaked</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_related_to_xonly_pubkey" class="method has-srclink"><div class="rightside"></div><a href="#method.is_related_to_xonly_pubkey" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_related_to_xonly_pubkey" class="fnname">is_related_to_xonly_pubkey</a>(&self, xonly_pubkey: &XOnlyPublicKey) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Returns true if the supplied xonly public key can be used to derive the address.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_related_to_xonly_pubkey" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.is_related_to_xonly_pubkey" class="fn">is_related_to_xonly_pubkey</a>(&self, xonly_pubkey: &XOnlyPublicKey) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the supplied xonly public key can be used to derive the address.</p>
<p>This will only work for Taproot addresses. The Public Key is
assumed to have already been tweaked.</p>
-</div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Deref" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#147-153" title="goto source code">source</a></div><a href="#impl-Deref" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="type trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = Address</h4></div></summary><div class='docblock'><p>The resulting type after dereferencing.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#150-152" title="goto source code">source</a></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fnname">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></div></summary><div class='docblock'><p>Dereferences the value.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#155-159" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#156-158" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CAddressInfo%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#impl-PartialEq%3CAddressInfo%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: &<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#137" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref-1" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref-1" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#impl-Debug-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Deref-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#147-153">source</a><a href="#impl-Deref-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = Address</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#150-152">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#155-159">source</a><a href="#impl-Display-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#156-158">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CAddressInfo%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#impl-PartialEq%3CAddressInfo%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><section id="impl-Eq-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#impl-Eq-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section><section id="impl-StructuralEq-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#impl-StructuralEq-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section><section id="impl-StructuralPartialEq-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#137">source</a><a href="#impl-StructuralPartialEq-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-AddressInfo" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section><section id="impl-Send-for-AddressInfo" class="impl has-srclink"><a href="#impl-Send-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section><section id="impl-Sync-for-AddressInfo" class="impl has-srclink"><a href="#impl-Sync-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section><section id="impl-Unpin-for-AddressInfo" class="impl has-srclink"><a href="#impl-Unpin-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section><section id="impl-UnwindSafe-for-AddressInfo" class="impl has-srclink"><a href="#impl-UnwindSafe-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-AddressInfo" class="impl has-srclink"><a href="#impl-Pointable-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref-1" class="method trait-impl has-srclink"><a href="#method.deref-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-AddressInfo" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-AddressInfo" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-AddressInfo" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options to a `sync`."><meta name="keywords" content="rust, rustlang, rust-lang, SyncOptions"><title>SyncOptions in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">SyncOptions</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.progress">progress</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="SyncOptions" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="struct" href="#">SyncOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#165-168" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct SyncOptions {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Options to a `sync`."><meta name="keywords" content="rust, rustlang, rust-lang, SyncOptions"><title>SyncOptions in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">SyncOptions</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block"><li><a href="#structfield.progress">progress</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-SyncOptions">Debug</a></li><li><a href="#impl-Default-for-SyncOptions">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SyncOptions">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-SyncOptions">Send</a></li><li><a href="#impl-Sync-for-SyncOptions">!Sync</a></li><li><a href="#impl-Unpin-for-SyncOptions">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SyncOptions">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SyncOptions">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SyncOptions">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SyncOptions">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-SyncOptions">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-SyncOptions">Into<U></a></li><li><a href="#impl-Pointable-for-SyncOptions">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SyncOptions">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-SyncOptions">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-SyncOptions">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="struct" href="#">SyncOptions</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#165-168">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SyncOptions {
pub progress: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../blockchain/trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>>>,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Options to a <a href="struct.Wallet.html#method.sync"><code>sync</code></a>.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.progress" class="structfield small-section-header"><a href="#structfield.progress" class="anchor field"></a><code>progress: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../blockchain/trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>>></code></span><div class="docblock"><p>The progress tracker which may be informed when progress is made.</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#161" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#161" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#161" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#161" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.progress" class="structfield small-section-header"><a href="#structfield.progress" class="anchor field">§</a><code>progress: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="../blockchain/trait.Progress.html" title="trait bdk::blockchain::Progress">Progress</a>>></code></span><div class="docblock"><p>The progress tracker which may be informed when progress is made.</p>
+</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#161">source</a><a href="#impl-Debug-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#161">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#161">source</a><a href="#impl-Default-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#161">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SyncOptions" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section><section id="impl-Send-for-SyncOptions" class="impl has-srclink"><a href="#impl-Send-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section><section id="impl-Sync-for-SyncOptions" class="impl has-srclink"><a href="#impl-Sync-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section><section id="impl-Unpin-for-SyncOptions" class="impl has-srclink"><a href="#impl-Unpin-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section><section id="impl-UnwindSafe-for-SyncOptions" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-SyncOptions" class="impl has-srclink"><a href="#impl-Pointable-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SyncOptions" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-SyncOptions" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-SyncOptions" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A Bitcoin wallet"><meta name="keywords" content="rust, rustlang, rust-lang, Wallet"><title>Wallet in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Wallet</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.add_signer">add_signer</a><a href="#method.build_fee_bump">build_fee_bump</a><a href="#method.build_tx">build_tx</a><a href="#method.database">database</a><a href="#method.descriptor_checksum">descriptor_checksum</a><a href="#method.ensure_addresses_cached">ensure_addresses_cached</a><a href="#method.finalize_psbt">finalize_psbt</a><a href="#method.get_address">get_address</a><a href="#method.get_balance">get_balance</a><a href="#method.get_descriptor_for_keychain">get_descriptor_for_keychain</a><a href="#method.get_internal_address">get_internal_address</a><a href="#method.get_psbt_input">get_psbt_input</a><a href="#method.get_signers">get_signers</a><a href="#method.get_tx">get_tx</a><a href="#method.get_utxo">get_utxo</a><a href="#method.is_mine">is_mine</a><a href="#method.list_transactions">list_transactions</a><a href="#method.list_unspent">list_unspent</a><a href="#method.network">network</a><a href="#method.new">new</a><a href="#method.new_offline">new_offline</a><a href="#method.policies">policies</a><a href="#method.public_descriptor">public_descriptor</a><a href="#method.secp_ctx">secp_ctx</a><a href="#method.sign">sign</a><a href="#method.sync">sync</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="Wallet" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="struct" href="#">Wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#90-102" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct Wallet<D> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A Bitcoin wallet</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A Bitcoin wallet"><meta name="keywords" content="rust, rustlang, rust-lang, Wallet"><title>Wallet in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Wallet</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_signer">add_signer</a></li><li><a href="#method.build_fee_bump">build_fee_bump</a></li><li><a href="#method.build_tx">build_tx</a></li><li><a href="#method.database">database</a></li><li><a href="#method.descriptor_checksum">descriptor_checksum</a></li><li><a href="#method.ensure_addresses_cached">ensure_addresses_cached</a></li><li><a href="#method.finalize_psbt">finalize_psbt</a></li><li><a href="#method.get_address">get_address</a></li><li><a href="#method.get_balance">get_balance</a></li><li><a href="#method.get_descriptor_for_keychain">get_descriptor_for_keychain</a></li><li><a href="#method.get_internal_address">get_internal_address</a></li><li><a href="#method.get_psbt_input">get_psbt_input</a></li><li><a href="#method.get_signers">get_signers</a></li><li><a href="#method.get_tx">get_tx</a></li><li><a href="#method.get_utxo">get_utxo</a></li><li><a href="#method.is_mine">is_mine</a></li><li><a href="#method.list_transactions">list_transactions</a></li><li><a href="#method.list_unspent">list_unspent</a></li><li><a href="#method.network">network</a></li><li><a href="#method.new">new</a></li><li><a href="#method.new_offline">new_offline</a></li><li><a href="#method.policies">policies</a></li><li><a href="#method.public_descriptor">public_descriptor</a></li><li><a href="#method.secp_ctx">secp_ctx</a></li><li><a href="#method.sign">sign</a></li><li><a href="#method.sync">sync</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Wallet%3CD%3E">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Wallet%3CD%3E">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Wallet%3CD%3E">Send</a></li><li><a href="#impl-Sync-for-Wallet%3CD%3E">!Sync</a></li><li><a href="#impl-Unpin-for-Wallet%3CD%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Wallet%3CD%3E">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Wallet%3CD%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Wallet%3CD%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Wallet%3CD%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-Wallet%3CD%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-Wallet%3CD%3E">Into<U></a></li><li><a href="#impl-Pointable-for-Wallet%3CD%3E">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Wallet%3CD%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-Wallet%3CD%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-Wallet%3CD%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="struct" href="#">Wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#90-102">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Wallet<D> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A Bitcoin wallet</p>
<p>The <code>Wallet</code> struct acts as a way of coherently interfacing with output descriptors and related transactions.
Its main components are:</p>
<ol>
<li>A <a href="../database/trait.Database.html"><code>Database</code></a> where it tracks transactions and utxos related to the descriptors.</li>
<li><a href="signer/index.html"><code>signer</code></a>s that can contribute signatures to addresses instantiated from the descriptors.</li>
</ol>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#170-1778" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_offline" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#176-183" title="goto source code">source</a></div><a href="#method.new_offline" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_offline" class="fnname">new_offline</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E, <br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>, <br> network: Network, <br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>Just use Wallet::new – all wallets are offline now!</p>
-</div></div></summary><div class="docblock"><p>Create a new “offline” wallet</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#188-233" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E, <br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>, <br> network: Network, <br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Create a wallet.</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#170-1778">source</a><a href="#impl-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D> <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D><span class="where fmt-newline">where<br> D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_offline" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#176-183">source</a><h4 class="code-header">pub fn <a href="#method.new_offline" class="fn">new_offline</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E,<br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>,<br> network: Network,<br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: Just use Wallet::new – all wallets are offline now!</span></div></span></summary><div class="docblock"><p>Create a new “offline” wallet</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#188-233">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E,<br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>,<br> network: Network,<br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Create a wallet.</p>
<p>The only way this can fail is if the descriptors passed in do not match the checksums in <code>database</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.network" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#249-251" title="goto source code">source</a></div><a href="#method.network" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.network" class="fnname">network</a>(&self) -> Network</h4></div></summary><div class="docblock"><p>Get the Bitcoin network the wallet is using.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_address" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#335-337" title="goto source code">source</a></div><a href="#method.get_address" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_address" class="fnname">get_address</a>(<br> &self, <br> address_index: <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return a derived address using the external descriptor, see <a href="enum.AddressIndex.html" title="AddressIndex"><code>AddressIndex</code></a> for
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.network" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#249-251">source</a><h4 class="code-header">pub fn <a href="#method.network" class="fn">network</a>(&self) -> Network</h4></section></summary><div class="docblock"><p>Get the Bitcoin network the wallet is using.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_address" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#335-337">source</a><h4 class="code-header">pub fn <a href="#method.get_address" class="fn">get_address</a>(<br> &self,<br> address_index: <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return a derived address using the external descriptor, see <a href="enum.AddressIndex.html" title="AddressIndex"><code>AddressIndex</code></a> for
available address index selection strategies. If none of the keys in the descriptor are derivable
(i.e. does not end with /*) then the same address will always be returned for any <a href="enum.AddressIndex.html" title="AddressIndex"><code>AddressIndex</code></a>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_internal_address" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#346-348" title="goto source code">source</a></div><a href="#method.get_internal_address" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_internal_address" class="fnname">get_internal_address</a>(<br> &self, <br> address_index: <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return a derived address using the internal (change) descriptor.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_internal_address" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#346-348">source</a><h4 class="code-header">pub fn <a href="#method.get_internal_address" class="fn">get_internal_address</a>(<br> &self,<br> address_index: <a class="enum" href="enum.AddressIndex.html" title="enum bdk::wallet::AddressIndex">AddressIndex</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="struct.AddressInfo.html" title="struct bdk::wallet::AddressInfo">AddressInfo</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return a derived address using the internal (change) descriptor.</p>
<p>If the wallet doesn’t have an internal descriptor it will use the external descriptor.</p>
<p>see <a href="enum.AddressIndex.html" title="AddressIndex"><code>AddressIndex</code></a> for available address index selection strategies. If none of the keys
in the descriptor are derivable (i.e. does not end with /*) then the same address will always
be returned for any <a href="enum.AddressIndex.html" title="AddressIndex"><code>AddressIndex</code></a>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ensure_addresses_cached" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#369-405" title="goto source code">source</a></div><a href="#method.ensure_addresses_cached" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.ensure_addresses_cached" class="fnname">ensure_addresses_cached</a>(&self, max_addresses: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Ensures that there are at least <code>max_addresses</code> addresses cached in the database if the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ensure_addresses_cached" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#369-405">source</a><h4 class="code-header">pub fn <a href="#method.ensure_addresses_cached" class="fn">ensure_addresses_cached</a>(&self, max_addresses: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Ensures that there are at least <code>max_addresses</code> addresses cached in the database if the
descriptor is derivable, or 1 address if it is not.
Will return <code>Ok(true)</code> if there are new addresses generated (either external or internal),
and <code>Ok(false)</code> if all the required addresses are already cached. This function is useful to
explicitly cache addresses in a wallet to do things like check <a href="struct.Wallet.html#method.is_mine" title="Wallet::is_mine"><code>Wallet::is_mine</code></a> on
transaction output scripts.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.is_mine" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#408-410" title="goto source code">source</a></div><a href="#method.is_mine" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.is_mine" class="fnname">is_mine</a>(&self, script: &Script) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return whether or not a <code>script</code> is part of this wallet (either internal or external)</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.list_unspent" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#416-424" title="goto source code">source</a></div><a href="#method.list_unspent" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.list_unspent" class="fnname">list_unspent</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the list of unspent outputs of this wallet</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_mine" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#408-410">source</a><h4 class="code-header">pub fn <a href="#method.is_mine" class="fn">is_mine</a>(&self, script: &Script) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return whether or not a <code>script</code> is part of this wallet (either internal or external)</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.list_unspent" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#416-424">source</a><h4 class="code-header">pub fn <a href="#method.list_unspent" class="fn">list_unspent</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the list of unspent outputs of this wallet</p>
<p>Note that this method only operates on the internal database, which first needs to be
<a href="struct.Wallet.html#method.sync" title="Wallet::sync"><code>Wallet::sync</code></a> manually.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#428-430" title="goto source code">source</a></div><a href="#method.get_utxo" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_utxo" class="fnname">get_utxo</a>(&self, outpoint: OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Returns the <code>UTXO</code> owned by this wallet corresponding to <code>outpoint</code> if it exists in the
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_utxo" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#428-430">source</a><h4 class="code-header">pub fn <a href="#method.get_utxo" class="fn">get_utxo</a>(&self, outpoint: OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Returns the <code>UTXO</code> owned by this wallet corresponding to <code>outpoint</code> if it exists in the
wallet’s database.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#439-445" title="goto source code">source</a></div><a href="#method.get_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_tx" class="fnname">get_tx</a>(<br> &self, <br> txid: &Txid, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return a single transactions made and received by the wallet</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#439-445">source</a><h4 class="code-header">pub fn <a href="#method.get_tx" class="fn">get_tx</a>(<br> &self,<br> txid: &Txid,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return a single transactions made and received by the wallet</p>
<p>Optionally fill the <a href="../struct.TransactionDetails.html#structfield.transaction" title="TransactionDetails::transaction"><code>TransactionDetails::transaction</code></a> field with the raw transaction if
<code>include_raw</code> is <code>true</code>.</p>
<p>Note that this method only operates on the internal database, which first needs to be
<a href="struct.Wallet.html#method.sync" title="Wallet::sync"><code>Wallet::sync</code></a> manually.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.list_transactions" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#465-467" title="goto source code">source</a></div><a href="#method.list_transactions" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.list_transactions" class="fnname">list_transactions</a>(<br> &self, <br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return an unsorted list of transactions made and received by the wallet</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.list_transactions" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#465-467">source</a><h4 class="code-header">pub fn <a href="#method.list_transactions" class="fn">list_transactions</a>(<br> &self,<br> include_raw: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return an unsorted list of transactions made and received by the wallet</p>
<p>Optionally fill the <a href="../struct.TransactionDetails.html#structfield.transaction" title="TransactionDetails::transaction"><code>TransactionDetails::transaction</code></a> field with the raw transaction if
<code>include_raw</code> is <code>true</code>.</p>
<p>To sort transactions, the following code can be used:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="ident">tx_list</span>.<span class="ident">sort_by</span>(<span class="op">|</span><span class="ident">a</span>, <span class="ident">b</span><span class="op">|</span> {
- <span class="ident">b</span>.<span class="ident">confirmation_time</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">t</span><span class="op">|</span> <span class="ident">t</span>.<span class="ident">height</span>)
- .<span class="ident">cmp</span>(<span class="kw-2">&</span><span class="ident">a</span>.<span class="ident">confirmation_time</span>.<span class="ident">as_ref</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">t</span><span class="op">|</span> <span class="ident">t</span>.<span class="ident">height</span>))
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>tx_list.sort_by(|a, b| {
+ b.confirmation_time
+ .as_ref()
+ .map(|t| t.height)
+ .cmp(<span class="kw-2">&</span>a.confirmation_time.as_ref().map(|t| t.height))
});</code></pre></div>
<p>Note that this method only operates on the internal database, which first needs to be
<a href="struct.Wallet.html#method.sync" title="Wallet::sync"><code>Wallet::sync</code></a> manually.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_balance" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#474-515" title="goto source code">source</a></div><a href="#method.get_balance" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_balance" class="fnname">get_balance</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.Balance.html" title="struct bdk::Balance">Balance</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the balance, separated into available, trusted-pending, untrusted-pending and immature
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_balance" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#474-515">source</a><h4 class="code-header">pub fn <a href="#method.get_balance" class="fn">get_balance</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../struct.Balance.html" title="struct bdk::Balance">Balance</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the balance, separated into available, trusted-pending, untrusted-pending and immature
values.</p>
<p>Note that this method only operates on the internal database, which first needs to be
<a href="struct.Wallet.html#method.sync" title="Wallet::sync"><code>Wallet::sync</code></a> manually.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_signer" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#520-532" title="goto source code">source</a></div><a href="#method.add_signer" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_signer" class="fnname">add_signer</a>(<br> &mut self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>, <br> ordering: <a class="struct" href="signer/struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>, <br> signer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="signer/trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>><br>)</h4></div></summary><div class="docblock"><p>Add an external signer</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_signer" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#520-532">source</a><h4 class="code-header">pub fn <a href="#method.add_signer" class="fn">add_signer</a>(<br> &mut self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>,<br> ordering: <a class="struct" href="signer/struct.SignerOrdering.html" title="struct bdk::wallet::signer::SignerOrdering">SignerOrdering</a>,<br> signer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><dyn <a class="trait" href="signer/trait.TransactionSigner.html" title="trait bdk::wallet::signer::TransactionSigner">TransactionSigner</a>><br>)</h4></section></summary><div class="docblock"><p>Add an external signer</p>
<p>See <a href="signer/index.html">the <code>signer</code> module</a> for an example.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_signers" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#550-555" title="goto source code">source</a></div><a href="#method.get_signers" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_signers" class="fnname">get_signers</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>></h4></div></summary><div class="docblock"><p>Get the signers</p>
-<h6 id="example" class="section-header"><a href="#example">Example</a></h6>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)"</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">MemoryDatabase::new</span>())<span class="question-mark">?</span>;
-<span class="kw">for</span> <span class="ident">secret_key</span> <span class="kw">in</span> <span class="ident">wallet</span>.<span class="ident">get_signers</span>(<span class="ident">KeychainKind::External</span>).<span class="ident">signers</span>().<span class="ident">iter</span>().<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">descriptor_secret_key</span>()) {
- <span class="comment">// secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*</span>
- <span class="macro">println!</span>(<span class="string">"secret_key: {}"</span>, <span class="ident">secret_key</span>);
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_signers" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#550-555">source</a><h4 class="code-header">pub fn <a href="#method.get_signers" class="fn">get_signers</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><<a class="struct" href="signer/struct.SignersContainer.html" title="struct bdk::wallet::signer::SignersContainer">SignersContainer</a>></h4></section></summary><div class="docblock"><p>Get the signers</p>
+<h6 id="example"><a href="#example">Example</a></h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)"</span>, <span class="prelude-val">None</span>, Network::Testnet, MemoryDatabase::new())<span class="question-mark">?</span>;
+<span class="kw">for </span>secret_key <span class="kw">in </span>wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
+ <span class="comment">// secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
+ </span><span class="macro">println!</span>(<span class="string">"secret_key: {}"</span>, secret_key);
}
-<span class="prelude-val">Ok</span>::<span class="op"><</span>(), <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">std::error::Error</span><span class="op">></span><span class="op">></span>(())</code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#583-590" title="goto source code">source</a></div><a href="#method.build_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.build_tx" class="fnname">build_tx</a>(<br> &self<br>) -> <a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'_, D, <a class="type" href="coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="tx_builder/struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a>></h4></div></summary><div class="docblock"><p>Start building a transaction.</p>
+<span class="prelude-val">Ok</span>::<(), Box<<span class="kw">dyn </span>std::error::Error>>(())</code></pre></div>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build_tx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#583-590">source</a><h4 class="code-header">pub fn <a href="#method.build_tx" class="fn">build_tx</a>(<br> &self<br>) -> <a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'_, D, <a class="type" href="coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="tx_builder/struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a>></h4></section></summary><div class="docblock"><p>Start building a transaction.</p>
<p>This returns a blank <a href="tx_builder/struct.TxBuilder.html"><code>TxBuilder</code></a> from which you can specify the parameters for the transaction.</p>
-<h6 id="example-1" class="section-header"><a href="#example-1">Example</a></h6>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
+<h6 id="example-1"><a href="#example-1">Example</a></h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(psbt, details) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(to_address.script_pubkey(), <span class="number">50_000</span>);
+ builder.finish()<span class="question-mark">?
+</span>};
<span class="comment">// sign and broadcast ...</span></code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build_fee_bump" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#976-1084" title="goto source code">source</a></div><a href="#method.build_fee_bump" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.build_fee_bump" class="fnname">build_fee_bump</a>(<br> &self, <br> txid: Txid<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'_, D, <a class="type" href="coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="tx_builder/struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Bump the fee of a transaction previously created with this wallet.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build_fee_bump" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#976-1084">source</a><h4 class="code-header">pub fn <a href="#method.build_fee_bump" class="fn">build_fee_bump</a>(<br> &self,<br> txid: Txid<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'_, D, <a class="type" href="coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="tx_builder/struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Bump the fee of a transaction previously created with this wallet.</p>
<p>Returns an error if the transaction is already confirmed or doesn’t explicitly signal
<em>replace by fee</em> (RBF). If the transaction can be fee bumped then it returns a <a href="tx_builder/struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a>
pre-populated with the inputs and outputs of the original transaction.</p>
-<h6 id="example-2" class="section-header"><a href="#example-2">Example</a></h6>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
-<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>())<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
-<span class="comment">// broadcast tx but it's taking too long to confirm so we want to bump the fee</span>
-<span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">tx</span>.<span class="ident">txid</span>())<span class="question-mark">?</span>;
- <span class="ident">builder</span>
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
+<h6 id="example-2"><a href="#example-2">Example</a></h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(to_address.script_pubkey(), <span class="number">50_000</span>)
+ .enable_rbf();
+ builder.finish()<span class="question-mark">?
+</span>};
+<span class="kw">let _ </span>= wallet.sign(<span class="kw-2">&mut </span>psbt, SignOptions::default())<span class="question-mark">?</span>;
+<span class="kw">let </span>tx = psbt.extract_tx();
+<span class="comment">// broadcast tx but it's taking too long to confirm so we want to bump the fee
+</span><span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(tx.txid())<span class="question-mark">?</span>;
+ builder
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>));
+ builder.finish()<span class="question-mark">?
+</span>};
-<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>())<span class="question-mark">?</span>;
-<span class="kw">let</span> <span class="ident">fee_bumped_tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
+<span class="kw">let _ </span>= wallet.sign(<span class="kw-2">&mut </span>psbt, SignOptions::default())<span class="question-mark">?</span>;
+<span class="kw">let </span>fee_bumped_tx = psbt.extract_tx();
<span class="comment">// broadcast fee_bumped_tx to replace original</span></code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1112-1162" title="goto source code">source</a></div><a href="#method.sign" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sign" class="fnname">sign</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Sign a transaction with all the wallet’s signers, in the order specified by every signer’s
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sign" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1112-1162">source</a><h4 class="code-header">pub fn <a href="#method.sign" class="fn">sign</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Sign a transaction with all the wallet’s signers, in the order specified by every signer’s
<a href="signer/struct.SignerOrdering.html" title="SignerOrdering"><code>SignerOrdering</code></a></p>
<p>The <a href="signer/struct.SignOptions.html" title="SignOptions"><code>SignOptions</code></a> can be used to tweak the behavior of the software signers, and the way
the transaction is finalized at the end. Note that it can’t be guaranteed that <em>every</em>
signers will follow the options, but the “software signers” (WIF keys and <code>xprv</code>) defined
in this library will.</p>
-<h6 id="example-3" class="section-header"><a href="#example-3">Example</a></h6>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
-<span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>())<span class="question-mark">?</span>;
-<span class="macro">assert!</span>(<span class="ident">finalized</span>, <span class="string">"we should have signed all the inputs"</span>);</code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.policies" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1165-1179" title="goto source code">source</a></div><a href="#method.policies" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.policies" class="fnname">policies</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../descriptor/policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the spending policies for the wallet’s descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.public_descriptor" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1185-1194" title="goto source code">source</a></div><a href="#method.public_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.public_descriptor" class="fnname">public_descriptor</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has
+<h6 id="example-3"><a href="#example-3">Example</a></h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(to_address.script_pubkey(), <span class="number">50_000</span>);
+ builder.finish()<span class="question-mark">?
+</span>};
+<span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, SignOptions::default())<span class="question-mark">?</span>;
+<span class="macro">assert!</span>(finalized, <span class="string">"we should have signed all the inputs"</span>);</code></pre></div>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.policies" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1165-1179">source</a><h4 class="code-header">pub fn <a href="#method.policies" class="fn">policies</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../descriptor/policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the spending policies for the wallet’s descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.public_descriptor" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1185-1194">source</a><h4 class="code-header">pub fn <a href="#method.public_descriptor" class="fn">public_descriptor</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has
the same structure but with every secret key removed</p>
<p>This can be used to build a watch-only version of a wallet</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.finalize_psbt" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1204-1292" title="goto source code">source</a></div><a href="#method.finalize_psbt" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.finalize_psbt" class="fnname">finalize_psbt</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.finalize_psbt" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1204-1292">source</a><h4 class="code-header">pub fn <a href="#method.finalize_psbt" class="fn">finalize_psbt</a>(<br> &self,<br> psbt: &mut PartiallySignedTransaction,<br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass
validation and construct the respective <code>scriptSig</code> or <code>scriptWitness</code>. Please refer to
<a href="https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#Input_Finalizer">BIP174</a>
for further information.</p>
<p>Returns <code>true</code> if the PSBT could be finalized, and <code>false</code> otherwise.</p>
<p>The <a href="signer/struct.SignOptions.html" title="SignOptions"><code>SignOptions</code></a> can be used to tweak the behavior of the finalizer.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.secp_ctx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1295-1297" title="goto source code">source</a></div><a href="#method.secp_ctx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.secp_ctx" class="fnname">secp_ctx</a>(&self) -> &Secp256k1<All></h4></div></summary><div class="docblock"><p>Return the secp256k1 context used for all signing operations</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_descriptor_for_keychain" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1300-1303" title="goto source code">source</a></div><a href="#method.get_descriptor_for_keychain" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_descriptor_for_keychain" class="fnname">get_descriptor_for_keychain</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> &<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h4></div></summary><div class="docblock"><p>Returns the descriptor used to create addresses for a particular <code>keychain</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_psbt_input" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1597-1633" title="goto source code">source</a></div><a href="#method.get_psbt_input" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_psbt_input" class="fnname">get_psbt_input</a>(<br> &self, <br> utxo: <a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>, <br> sighash_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><PsbtSighashType>, <br> only_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Input, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>get the corresponding PSBT Input for a LocalUtxo</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.database" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1684-1686" title="goto source code">source</a></div><a href="#method.database" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.database" class="fnname">database</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = D> + '_</h4></div></summary><div class="docblock"><p>Return an immutable reference to the internal database</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sync" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1690-1765" title="goto source code">source</a></div><a href="#method.sync" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sync" class="fnname">sync</a><B: <a class="trait" href="../blockchain/trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> + <a class="trait" href="../blockchain/trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a>>(<br> &self, <br> blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B, <br> sync_opts: <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Sync the internal database with the blockchain</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor_checksum" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1770-1777" title="goto source code">source</a></div><a href="#method.descriptor_checksum" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.descriptor_checksum" class="fnname">descriptor_checksum</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Return the checksum of the public descriptor associated to <code>keychain</code></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.secp_ctx" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1295-1297">source</a><h4 class="code-header">pub fn <a href="#method.secp_ctx" class="fn">secp_ctx</a>(&self) -> &Secp256k1<All></h4></section></summary><div class="docblock"><p>Return the secp256k1 context used for all signing operations</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_descriptor_for_keychain" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1300-1303">source</a><h4 class="code-header">pub fn <a href="#method.get_descriptor_for_keychain" class="fn">get_descriptor_for_keychain</a>(<br> &self,<br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> &<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h4></section></summary><div class="docblock"><p>Returns the descriptor used to create addresses for a particular <code>keychain</code>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_psbt_input" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1597-1633">source</a><h4 class="code-header">pub fn <a href="#method.get_psbt_input" class="fn">get_psbt_input</a>(<br> &self,<br> utxo: <a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>,<br> sighash_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><PsbtSighashType>,<br> only_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Input, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>get the corresponding PSBT Input for a LocalUtxo</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.database" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1684-1686">source</a><h4 class="code-header">pub fn <a href="#method.database" class="fn">database</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = D> + '_</h4></section></summary><div class="docblock"><p>Return an immutable reference to the internal database</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sync" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1690-1765">source</a><h4 class="code-header">pub fn <a href="#method.sync" class="fn">sync</a><B: <a class="trait" href="../blockchain/trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> + <a class="trait" href="../blockchain/trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a>>(<br> &self,<br> blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B,<br> sync_opts: <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Sync the internal database with the blockchain</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.descriptor_checksum" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#1770-1777">source</a><h4 class="code-header">pub fn <a href="#method.descriptor_checksum" class="fn">descriptor_checksum</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>Return the checksum of the public descriptor associated to <code>keychain</code></p>
<p>Internally calls <a href="struct.Wallet.html#method.get_descriptor_for_keychain" title="Self::get_descriptor_for_keychain"><code>Self::get_descriptor_for_keychain</code></a> to fetch the right descriptor</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#89" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#89" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#89">source</a><a href="#impl-Debug-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/mod.rs.html#89">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></section><section id="impl-Send-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-Send-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D><span class="where fmt-newline">where<br> D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-Sync-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></section><section id="impl-Unpin-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D><span class="where fmt-newline">where<br> D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-Pointable-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Wallet%3CD%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-Wallet%3CD%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Return the current timestamp in seconds"><meta name="keywords" content="rust, rustlang, rust-lang, get_timestamp"><title>get_timestamp in bdk::wallet::time - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">time</a></h2><div id="sidebar-vars" data-name="get_timestamp" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">time</a>::<wbr><a class="fn" href="#">get_timestamp</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/time.rs.html#29-34" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn get_timestamp() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Return the current timestamp in seconds</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Return the current timestamp in seconds"><meta name="keywords" content="rust, rustlang, rust-lang, get_timestamp"><title>get_timestamp in bdk::wallet::time - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet::time</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">time</a>::<wbr><a class="fn" href="#">get_timestamp</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/time.rs.html#29-34">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn get_timestamp() -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Return the current timestamp in seconds</p>
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Cross-platform time"><meta name="keywords" content="rust, rustlang, rust-lang, time"><title>bdk::wallet::time - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module time</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#functions">Functions</a></li></ul></div><div id="sidebar-vars" data-name="time" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">time</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/time.rs.html#12-73" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Cross-platform time</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Cross-platform time"><meta name="keywords" content="rust, rustlang, rust-lang, time"><title>bdk::wallet::time - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module time</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">time</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/time.rs.html#12-73">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Cross-platform time</p>
<p>This module provides a function to get the current timestamp that works on all the platforms
supported by the library.</p>
<p>It can be useful to compare it with the timestamps found in
<a href="../../struct.TransactionDetails.html"><code>TransactionDetails</code></a>.</p>
-</div></details><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_timestamp.html" title="bdk::wallet::time::get_timestamp fn">get_timestamp</a></div><div class="item-right docblock-short"><p>Return the current timestamp in seconds</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.get_timestamp.html" title="bdk::wallet::time::get_timestamp fn">get_timestamp</a></div><div class="item-right docblock-short">Return the current timestamp in seconds</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"fn":[["get_timestamp","Return the current timestamp in seconds"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"fn":[["get_timestamp","Return the current timestamp in seconds"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"><meta name="keywords" content="rust, rustlang, rust-lang, IsDust"><title>IsDust in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">IsDust</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><div class="sidebar-links"><a href="#tymethod.is_dust">is_dust</a></div><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><div class="sidebar-links"><a href="#impl-IsDust-for-u64">u64</a></div><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="IsDust" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="trait" href="#">IsDust</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/utils.rs.html#22-25" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait IsDust {
- fn <a href="#tymethod.is_dust" class="fnname">is_dust</a>(&self, script: &Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"><meta name="keywords" content="rust, rustlang, rust-lang, IsDust"><title>IsDust in bdk::wallet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">IsDust</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.is_dust">is_dust</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-IsDust-for-u64">u64</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::wallet</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="trait" href="#">IsDust</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/utils.rs.html#22-25">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait IsDust {
+ fn <a href="#tymethod.is_dust" class="fn">is_dust</a>(&self, script: &Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>;
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait to check if a value is below the dust limit.
We are performing dust value calculation for a given script public key using rust-bitcoin to
keep it compatible with network dust rate</p>
-</div></details><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.is_dust" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/utils.rs.html#24" title="goto source code">source</a></div><h4 class="code-header">fn <a href="#tymethod.is_dust" class="fnname">is_dust</a>(&self, script: &Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class="docblock"><p>Check whether or not a value is below dust limit</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-IsDust-for-u64" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/utils.rs.html#27-31" title="goto source code">source</a></div><a href="#impl-IsDust-for-u64" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.IsDust.html" title="trait bdk::wallet::IsDust">IsDust</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h3></div></summary><div class="impl-items"><div id="method.is_dust" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/utils.rs.html#28-30" title="goto source code">source</a></div><a href="#method.is_dust" class="anchor"></a><h4 class="code-header">fn <a href="#tymethod.is_dust" class="fnname">is_dust</a>(&self, script: &Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"></div><script type="text/javascript" src="../../implementors/bdk/wallet/trait.IsDust.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.is_dust" class="method has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/utils.rs.html#24">source</a><h4 class="code-header">fn <a href="#tymethod.is_dust" class="fn">is_dust</a>(&self, script: &Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check whether or not a value is below dust limit</p>
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IsDust-for-u64" class="impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/utils.rs.html#27-31">source</a><a href="#impl-IsDust-for-u64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.IsDust.html" title="trait bdk::wallet::IsDust">IsDust</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h3></section></summary><div class="impl-items"><section id="method.is_dust" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/bdk/wallet/utils.rs.html#28-30">source</a><a href="#method.is_dust" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.is_dust" class="fn">is_dust</a>(&self, script: &Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../implementors/bdk/wallet/utils/trait.IsDust.js" data-ignore-extern-crates="std" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Policy regarding the use of change outputs when creating a transaction"><meta name="keywords" content="rust, rustlang, rust-lang, ChangeSpendPolicy"><title>ChangeSpendPolicy in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">ChangeSpendPolicy</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.ChangeAllowed">ChangeAllowed</a><a href="#variant.ChangeForbidden">ChangeForbidden</a><a href="#variant.OnlyChange">OnlyChange</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CChangeSpendPolicy%3E">PartialEq<ChangeSpendPolicy></a><a href="#impl-PartialOrd%3CChangeSpendPolicy%3E">PartialOrd<ChangeSpendPolicy></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a></h2><div id="sidebar-vars" data-name="ChangeSpendPolicy" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="enum" href="#">ChangeSpendPolicy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#751-758" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum ChangeSpendPolicy {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Policy regarding the use of change outputs when creating a transaction"><meta name="keywords" content="rust, rustlang, rust-lang, ChangeSpendPolicy"><title>ChangeSpendPolicy in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">ChangeSpendPolicy</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.ChangeAllowed">ChangeAllowed</a></li><li><a href="#variant.ChangeForbidden">ChangeForbidden</a></li><li><a href="#variant.OnlyChange">OnlyChange</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-ChangeSpendPolicy">Clone</a></li><li><a href="#impl-Copy-for-ChangeSpendPolicy">Copy</a></li><li><a href="#impl-Debug-for-ChangeSpendPolicy">Debug</a></li><li><a href="#impl-Default-for-ChangeSpendPolicy">Default</a></li><li><a href="#impl-Eq-for-ChangeSpendPolicy">Eq</a></li><li><a href="#impl-Hash-for-ChangeSpendPolicy">Hash</a></li><li><a href="#impl-Ord-for-ChangeSpendPolicy">Ord</a></li><li><a href="#impl-PartialEq%3CChangeSpendPolicy%3E-for-ChangeSpendPolicy">PartialEq<ChangeSpendPolicy></a></li><li><a href="#impl-PartialOrd%3CChangeSpendPolicy%3E-for-ChangeSpendPolicy">PartialOrd<ChangeSpendPolicy></a></li><li><a href="#impl-StructuralEq-for-ChangeSpendPolicy">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-ChangeSpendPolicy">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ChangeSpendPolicy">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ChangeSpendPolicy">Send</a></li><li><a href="#impl-Sync-for-ChangeSpendPolicy">Sync</a></li><li><a href="#impl-Unpin-for-ChangeSpendPolicy">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ChangeSpendPolicy">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ChangeSpendPolicy">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ChangeSpendPolicy">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ChangeSpendPolicy">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-ChangeSpendPolicy">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-ChangeSpendPolicy">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-ChangeSpendPolicy">Into<U></a></li><li><a href="#impl-Pointable-for-ChangeSpendPolicy">Pointable</a></li><li><a href="#impl-ToOwned-for-ChangeSpendPolicy">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ChangeSpendPolicy">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-ChangeSpendPolicy">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-ChangeSpendPolicy">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::tx_builder</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="enum" href="#">ChangeSpendPolicy</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#751-758">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum ChangeSpendPolicy {
ChangeAllowed,
OnlyChange,
ChangeForbidden,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Policy regarding the use of change outputs when creating a transaction</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.ChangeAllowed" class="variant small-section-header"><a href="#variant.ChangeAllowed" class="anchor field"></a><code>ChangeAllowed</code></h3><div class="docblock"><p>Use both change and non-change outputs (default)</p>
-</div><h3 id="variant.OnlyChange" class="variant small-section-header"><a href="#variant.OnlyChange" class="anchor field"></a><code>OnlyChange</code></h3><div class="docblock"><p>Only use change outputs (see <a href="struct.TxBuilder.html#method.only_spend_change" title="TxBuilder::only_spend_change"><code>TxBuilder::only_spend_change</code></a>)</p>
-</div><h3 id="variant.ChangeForbidden" class="variant small-section-header"><a href="#variant.ChangeForbidden" class="anchor field"></a><code>ChangeForbidden</code></h3><div class="docblock"><p>Only use non-change outputs (see <a href="struct.TxBuilder.html#method.do_not_spend_change" title="TxBuilder::do_not_spend_change"><code>TxBuilder::do_not_spend_change</code></a>)</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#760-764" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#761-763" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CChangeSpendPolicy%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-PartialEq%3CChangeSpendPolicy%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CChangeSpendPolicy%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CChangeSpendPolicy%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#750" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ChangeAllowed" class="variant"><a href="#variant.ChangeAllowed" class="anchor">§</a><h3 class="code-header">ChangeAllowed</h3></section><div class="docblock"><p>Use both change and non-change outputs (default)</p>
+</div><section id="variant.OnlyChange" class="variant"><a href="#variant.OnlyChange" class="anchor">§</a><h3 class="code-header">OnlyChange</h3></section><div class="docblock"><p>Only use change outputs (see <a href="struct.TxBuilder.html#method.only_spend_change" title="TxBuilder::only_spend_change"><code>TxBuilder::only_spend_change</code></a>)</p>
+</div><section id="variant.ChangeForbidden" class="variant"><a href="#variant.ChangeForbidden" class="anchor">§</a><h3 class="code-header">ChangeForbidden</h3></section><div class="docblock"><p>Only use non-change outputs (see <a href="struct.TxBuilder.html#method.do_not_spend_change" title="TxBuilder::do_not_spend_change"><code>TxBuilder::do_not_spend_change</code></a>)</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-Clone-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-Debug-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#760-764">source</a><a href="#impl-Default-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#761-763">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-Hash-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-Ord-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CChangeSpendPolicy%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-PartialEq%3CChangeSpendPolicy%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CChangeSpendPolicy%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-PartialOrd%3CChangeSpendPolicy%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Copy-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-Copy-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-Eq-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-Eq-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-StructuralEq-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-StructuralEq-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-StructuralPartialEq-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#750">source</a><a href="#impl-StructuralPartialEq-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-Send-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-Send-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-Sync-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-Sync-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-Unpin-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-Unpin-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section><section id="impl-UnwindSafe-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-UnwindSafe-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-CallHasher-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-Pointable-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-ChangeSpendPolicy" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-ChangeSpendPolicy" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Ordering of the transaction’s inputs and outputs"><meta name="keywords" content="rust, rustlang, rust-lang, TxOrdering"><title>TxOrdering in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TxOrdering</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Bip69Lexicographic">Bip69Lexicographic</a><a href="#variant.Shuffle">Shuffle</a><a href="#variant.Untouched">Untouched</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.sort_tx">sort_tx</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-Eq">Eq</a><a href="#impl-Hash">Hash</a><a href="#impl-Ord">Ord</a><a href="#impl-PartialEq%3CTxOrdering%3E">PartialEq<TxOrdering></a><a href="#impl-PartialOrd%3CTxOrdering%3E">PartialOrd<TxOrdering></a><a href="#impl-StructuralEq">StructuralEq</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-CallHasher">CallHasher</a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a></h2><div id="sidebar-vars" data-name="TxOrdering" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="enum" href="#">TxOrdering</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#676-683" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum TxOrdering {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Ordering of the transaction’s inputs and outputs"><meta name="keywords" content="rust, rustlang, rust-lang, TxOrdering"><title>TxOrdering in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TxOrdering</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Bip69Lexicographic">Bip69Lexicographic</a></li><li><a href="#variant.Shuffle">Shuffle</a></li><li><a href="#variant.Untouched">Untouched</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.sort_tx">sort_tx</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-TxOrdering">Clone</a></li><li><a href="#impl-Copy-for-TxOrdering">Copy</a></li><li><a href="#impl-Debug-for-TxOrdering">Debug</a></li><li><a href="#impl-Default-for-TxOrdering">Default</a></li><li><a href="#impl-Eq-for-TxOrdering">Eq</a></li><li><a href="#impl-Hash-for-TxOrdering">Hash</a></li><li><a href="#impl-Ord-for-TxOrdering">Ord</a></li><li><a href="#impl-PartialEq%3CTxOrdering%3E-for-TxOrdering">PartialEq<TxOrdering></a></li><li><a href="#impl-PartialOrd%3CTxOrdering%3E-for-TxOrdering">PartialOrd<TxOrdering></a></li><li><a href="#impl-StructuralEq-for-TxOrdering">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-TxOrdering">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-TxOrdering">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TxOrdering">Send</a></li><li><a href="#impl-Sync-for-TxOrdering">Sync</a></li><li><a href="#impl-Unpin-for-TxOrdering">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TxOrdering">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-TxOrdering">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-TxOrdering">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-TxOrdering">BorrowMut<T></a></li><li><a href="#impl-CallHasher-for-TxOrdering">CallHasher</a></li><li><a href="#impl-From%3CT%3E-for-TxOrdering">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-TxOrdering">Into<U></a></li><li><a href="#impl-Pointable-for-TxOrdering">Pointable</a></li><li><a href="#impl-ToOwned-for-TxOrdering">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-TxOrdering">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-TxOrdering">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-TxOrdering">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::tx_builder</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="enum" href="#">TxOrdering</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#676-683">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum TxOrdering {
Shuffle,
Untouched,
Bip69Lexicographic,
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Ordering of the transaction’s inputs and outputs</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.Shuffle" class="variant small-section-header"><a href="#variant.Shuffle" class="anchor field"></a><code>Shuffle</code></h3><div class="docblock"><p>Randomized (default)</p>
-</div><h3 id="variant.Untouched" class="variant small-section-header"><a href="#variant.Untouched" class="anchor field"></a><code>Untouched</code></h3><div class="docblock"><p>Unchanged</p>
-</div><h3 id="variant.Bip69Lexicographic" class="variant small-section-header"><a href="#variant.Bip69Lexicographic" class="anchor field"></a><code>Bip69Lexicographic</code></h3><div class="docblock"><p>BIP69 / Lexicographic</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#691-717" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sort_tx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#693-716" title="goto source code">source</a></div><a href="#method.sort_tx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sort_tx" class="fnname">sort_tx</a>(&self, tx: &mut Transaction)</h4></div></summary><div class="docblock"><p>Sort transaction inputs and outputs by <a href="enum.TxOrdering.html" title="TxOrdering"><code>TxOrdering</code></a> variant</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#685-689" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#686-688" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> Self</h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Hash" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-Hash" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fnname">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></div></summary><div class='docblock'><p>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.hash_slice" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#237-239" title="goto source code">source</a></div><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fnname">hash_slice</a><H>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H) <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>, </span></h4></div></summary><div class='docblock'><p>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Ord" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-Ord" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#method.cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fnname">cmp</a>(&self, other: &<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></div></summary><div class='docblock'><p>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.max" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#785-787" title="goto source code">source</a></div><a href="#method.max" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fnname">max</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.min" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#805-807" title="goto source code">source</a></div><a href="#method.min" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fnname">min</a>(self, other: Self) -> Self</h4></div></summary><div class='docblock'><p>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clamp" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#830-832" title="goto source code">source</a></div><a href="#method.clamp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fnname">clamp</a>(self, min: Self, max: Self) -> Self</h4></div></summary><div class='docblock'><p>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialEq%3CTxOrdering%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-PartialEq%3CTxOrdering%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.eq" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fnname">eq</a>(&self, other: &<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
-by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ne" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#219" title="goto source code">source</a></div><a href="#method.ne" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fnname">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests for <code>!=</code>.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-PartialOrd%3CTxOrdering%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-PartialOrd%3CTxOrdering%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.partial_cmp" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fnname">partial_cmp</a>(&self, other: &<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></div></summary><div class='docblock'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.lt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1082" title="goto source code">source</a></div><a href="#method.lt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fnname">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.le" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1102" title="goto source code">source</a></div><a href="#method.le" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fnname">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.gt" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1125" title="goto source code">source</a></div><a href="#method.gt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fnname">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ge" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145" title="goto source code">source</a></div><a href="#method.ge" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fnname">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></div></summary><div class='docblock'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
-</div></details></div></details><div id="impl-Copy" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-Copy" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-Eq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-Eq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-StructuralEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-StructuralEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-StructuralPartialEq" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#675" title="goto source code">source</a></div><a href="#impl-StructuralPartialEq" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-CallHasher" class="impl has-srclink"><div class="rightside"></div><a href="#impl-CallHasher" class="anchor"></a><h3 class="code-header in-band">impl<T> CallHasher for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><div id="method.get_hash" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.get_hash" class="anchor"></a><h4 class="code-header">pub default fn <a class="fnname">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a> <span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>, </span></h4></div></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Shuffle" class="variant"><a href="#variant.Shuffle" class="anchor">§</a><h3 class="code-header">Shuffle</h3></section><div class="docblock"><p>Randomized (default)</p>
+</div><section id="variant.Untouched" class="variant"><a href="#variant.Untouched" class="anchor">§</a><h3 class="code-header">Untouched</h3></section><div class="docblock"><p>Unchanged</p>
+</div><section id="variant.Bip69Lexicographic" class="variant"><a href="#variant.Bip69Lexicographic" class="anchor">§</a><h3 class="code-header">Bip69Lexicographic</h3></section><div class="docblock"><p>BIP69 / Lexicographic</p>
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#691-717">source</a><a href="#impl-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sort_tx" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#693-716">source</a><h4 class="code-header">pub fn <a href="#method.sort_tx" class="fn">sort_tx</a>(&self, tx: &mut Transaction)</h4></section></summary><div class="docblock"><p>Sort transaction inputs and outputs by <a href="enum.TxOrdering.html" title="TxOrdering"><code>TxOrdering</code></a> variant</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-Clone-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-Debug-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#685-689">source</a><a href="#impl-Default-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#686-688">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-Hash-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a><__H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>>(&self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>__H)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#239-241">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>H)<span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-Ord-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#798-801">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#825-828">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#857-861">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><Self>,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CTxOrdering%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-PartialEq%3CTxOrdering%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CTxOrdering%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-PartialOrd%3CTxOrdering%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1126">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1145">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code><=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1163">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1182">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Rhs) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>>=</code>
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Copy-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-Copy-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-Eq-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-Eq-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-StructuralEq-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-StructuralEq-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html" title="trait core::marker::StructuralEq">StructuralEq</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-StructuralPartialEq-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#675">source</a><a href="#impl-StructuralPartialEq-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-TxOrdering" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-Send-for-TxOrdering" class="impl has-srclink"><a href="#impl-Send-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-Sync-for-TxOrdering" class="impl has-srclink"><a href="#impl-Sync-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-Unpin-for-TxOrdering" class="impl has-srclink"><a href="#impl-Unpin-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section><section id="impl-UnwindSafe-for-TxOrdering" class="impl has-srclink"><a href="#impl-UnwindSafe-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-CallHasher-for-TxOrdering" class="impl has-srclink"><a href="#impl-CallHasher-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> CallHasher for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl has-srclink"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">default fn <a class="fn">get_hash</a><H, B>(value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>H, build_hasher: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><span class="where fmt-newline">where<br> H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-TxOrdering" class="impl has-srclink"><a href="#impl-Pointable-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-TxOrdering" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-TxOrdering" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-TxOrdering" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Transaction builder"><meta name="keywords" content="rust, rustlang, rust-lang, tx_builder"><title>bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module tx_builder</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="tx_builder" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">tx_builder</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#12-923" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Transaction builder</p>
-<h3 id="example" class="section-header"><a href="#example">Example</a></h3>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// create a TxBuilder from a wallet</span>
-<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Transaction builder"><meta name="keywords" content="rust, rustlang, rust-lang, tx_builder"><title>bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module tx_builder</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">tx_builder</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#12-923">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Transaction builder</p>
+<h3 id="example"><a href="#example">Example</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// create a TxBuilder from a wallet
+</span><span class="kw">let </span><span class="kw-2">mut </span>tx_builder = wallet.build_tx();
-<span class="ident">tx_builder</span>
- <span class="comment">// Create a transaction with one output to `to_address` of 50_000 satoshi</span>
- .<span class="ident">add_recipient</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>)
- <span class="comment">// With a custom fee rate of 5.0 satoshi/vbyte</span>
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>))
- <span class="comment">// Only spend non-change outputs</span>
- .<span class="ident">do_not_spend_change</span>()
- <span class="comment">// Turn on RBF signaling</span>
- .<span class="ident">enable_rbf</span>();
-<span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">tx_details</span>) <span class="op">=</span> <span class="ident">tx_builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>;</code></pre></div>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BumpFee.html" title="bdk::wallet::tx_builder::BumpFee struct">BumpFee</a></div><div class="item-right docblock-short"><p>Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to bump the fee of an existing transaction.</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CreateTx.html" title="bdk::wallet::tx_builder::CreateTx struct">CreateTx</a></div><div class="item-right docblock-short"><p>Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to create a new transaction (as opposed
-to bumping the fee of an existing one).</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.TxBuilder.html" title="bdk::wallet::tx_builder::TxBuilder struct">TxBuilder</a></div><div class="item-right docblock-short"><p>A transaction builder</p>
-</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.ChangeSpendPolicy.html" title="bdk::wallet::tx_builder::ChangeSpendPolicy enum">ChangeSpendPolicy</a></div><div class="item-right docblock-short"><p>Policy regarding the use of change outputs when creating a transaction</p>
-</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.TxOrdering.html" title="bdk::wallet::tx_builder::TxOrdering enum">TxOrdering</a></div><div class="item-right docblock-short"><p>Ordering of the transaction’s inputs and outputs</p>
-</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.TxBuilderContext.html" title="bdk::wallet::tx_builder::TxBuilderContext trait">TxBuilderContext</a></div><div class="item-right docblock-short"><p>Context in which the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is valid</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+tx_builder
+ <span class="comment">// Create a transaction with one output to `to_address` of 50_000 satoshi
+ </span>.add_recipient(to_address.script_pubkey(), <span class="number">50_000</span>)
+ <span class="comment">// With a custom fee rate of 5.0 satoshi/vbyte
+ </span>.fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>))
+ <span class="comment">// Only spend non-change outputs
+ </span>.do_not_spend_change()
+ <span class="comment">// Turn on RBF signaling
+ </span>.enable_rbf();
+<span class="kw">let </span>(psbt, tx_details) = tx_builder.finish()<span class="question-mark">?</span>;</code></pre></div>
+</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.BumpFee.html" title="bdk::wallet::tx_builder::BumpFee struct">BumpFee</a></div><div class="item-right docblock-short">Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to bump the fee of an existing transaction.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CreateTx.html" title="bdk::wallet::tx_builder::CreateTx struct">CreateTx</a></div><div class="item-right docblock-short">Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to create a new transaction (as opposed
+to bumping the fee of an existing one).</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.TxBuilder.html" title="bdk::wallet::tx_builder::TxBuilder struct">TxBuilder</a></div><div class="item-right docblock-short">A transaction builder</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.ChangeSpendPolicy.html" title="bdk::wallet::tx_builder::ChangeSpendPolicy enum">ChangeSpendPolicy</a></div><div class="item-right docblock-short">Policy regarding the use of change outputs when creating a transaction</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.TxOrdering.html" title="bdk::wallet::tx_builder::TxOrdering enum">TxOrdering</a></div><div class="item-right docblock-short">Ordering of the transaction’s inputs and outputs</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.TxBuilderContext.html" title="bdk::wallet::tx_builder::TxBuilderContext trait">TxBuilderContext</a></div><div class="item-right docblock-short">Context in which the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is valid</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["ChangeSpendPolicy","Policy regarding the use of change outputs when creating a transaction"],["TxOrdering","Ordering of the transaction’s inputs and outputs"]],"struct":[["BumpFee","Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction."],["CreateTx","Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed to bumping the fee of an existing one)."],["TxBuilder","A transaction builder"]],"trait":[["TxBuilderContext","Context in which the [`TxBuilder`] is valid"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["ChangeSpendPolicy","Policy regarding the use of change outputs when creating a transaction"],["TxOrdering","Ordering of the transaction’s inputs and outputs"]],"struct":[["BumpFee","Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction."],["CreateTx","Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed to bumping the fee of an existing one)."],["TxBuilder","A transaction builder"]],"trait":[["TxBuilderContext","Context in which the [`TxBuilder`] is valid"]]};
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction."><meta name="keywords" content="rust, rustlang, rust-lang, BumpFee"><title>BumpFee in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">BumpFee</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-TxBuilderContext">TxBuilderContext</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a></h2><div id="sidebar-vars" data-name="BumpFee" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="struct" href="#">BumpFee</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#64" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct BumpFee;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to bump the fee of an existing transaction.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#63" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#63" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#63" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#63" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#63" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#63" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><div id="impl-TxBuilderContext" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#65" title="goto source code">source</a></div><a href="#impl-TxBuilderContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction."><meta name="keywords" content="rust, rustlang, rust-lang, BumpFee"><title>BumpFee in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">BumpFee</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-BumpFee">Clone</a></li><li><a href="#impl-Debug-for-BumpFee">Debug</a></li><li><a href="#impl-Default-for-BumpFee">Default</a></li><li><a href="#impl-TxBuilderContext-for-BumpFee">TxBuilderContext</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-BumpFee">RefUnwindSafe</a></li><li><a href="#impl-Send-for-BumpFee">Send</a></li><li><a href="#impl-Sync-for-BumpFee">Sync</a></li><li><a href="#impl-Unpin-for-BumpFee">Unpin</a></li><li><a href="#impl-UnwindSafe-for-BumpFee">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-BumpFee">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-BumpFee">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-BumpFee">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-BumpFee">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-BumpFee">Into<U></a></li><li><a href="#impl-Pointable-for-BumpFee">Pointable</a></li><li><a href="#impl-ToOwned-for-BumpFee">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-BumpFee">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-BumpFee">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-BumpFee">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::tx_builder</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="struct" href="#">BumpFee</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#64">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct BumpFee;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to bump the fee of an existing transaction.</p>
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#63">source</a><a href="#impl-Clone-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#63">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#63">source</a><a href="#impl-Debug-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#63">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#63">source</a><a href="#impl-Default-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#63">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><section id="impl-TxBuilderContext-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#65">source</a><a href="#impl-TxBuilderContext-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-BumpFee" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section><section id="impl-Send-for-BumpFee" class="impl has-srclink"><a href="#impl-Send-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section><section id="impl-Sync-for-BumpFee" class="impl has-srclink"><a href="#impl-Sync-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section><section id="impl-Unpin-for-BumpFee" class="impl has-srclink"><a href="#impl-Unpin-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section><section id="impl-UnwindSafe-for-BumpFee" class="impl has-srclink"><a href="#impl-UnwindSafe-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-BumpFee" class="impl has-srclink"><a href="#impl-Pointable-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-BumpFee" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed to bumping the fee of an existing one)."><meta name="keywords" content="rust, rustlang, rust-lang, CreateTx"><title>CreateTx in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">CreateTx</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</a><a href="#impl-TxBuilderContext">TxBuilderContext</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a></h2><div id="sidebar-vars" data-name="CreateTx" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="struct" href="#">CreateTx</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#59" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct CreateTx;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to create a new transaction (as opposed
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed to bumping the fee of an existing one)."><meta name="keywords" content="rust, rustlang, rust-lang, CreateTx"><title>CreateTx in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">CreateTx</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-CreateTx">Clone</a></li><li><a href="#impl-Debug-for-CreateTx">Debug</a></li><li><a href="#impl-Default-for-CreateTx">Default</a></li><li><a href="#impl-TxBuilderContext-for-CreateTx">TxBuilderContext</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CreateTx">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CreateTx">Send</a></li><li><a href="#impl-Sync-for-CreateTx">Sync</a></li><li><a href="#impl-Unpin-for-CreateTx">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CreateTx">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-CreateTx">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-CreateTx">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-CreateTx">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-CreateTx">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-CreateTx">Into<U></a></li><li><a href="#impl-Pointable-for-CreateTx">Pointable</a></li><li><a href="#impl-ToOwned-for-CreateTx">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-CreateTx">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-CreateTx">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-CreateTx">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::tx_builder</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="struct" href="#">CreateTx</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#59">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct CreateTx;</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Marker type to indicate the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is being used to create a new transaction (as opposed
to bumping the fee of an existing one).</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#58" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#58" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#58" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#58" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Default" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#58" title="goto source code">source</a></div><a href="#impl-Default" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.default" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#58" title="goto source code">source</a></div><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -> <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h4></div></summary><div class='docblock'><p>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
-</div></details></div></details><div id="impl-TxBuilderContext" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#60" title="goto source code">source</a></div><a href="#impl-TxBuilderContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#58">source</a><a href="#impl-Clone-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#58">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#58">source</a><a href="#impl-Debug-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#58">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#58">source</a><a href="#impl-Default-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#58">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><section id="impl-TxBuilderContext-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#60">source</a><a href="#impl-TxBuilderContext-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-CreateTx" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section><section id="impl-Send-for-CreateTx" class="impl has-srclink"><a href="#impl-Send-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section><section id="impl-Sync-for-CreateTx" class="impl has-srclink"><a href="#impl-Sync-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section><section id="impl-Unpin-for-CreateTx" class="impl has-srclink"><a href="#impl-Unpin-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section><section id="impl-UnwindSafe-for-CreateTx" class="impl has-srclink"><a href="#impl-UnwindSafe-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-CreateTx" class="impl has-srclink"><a href="#impl-Pointable-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-CreateTx" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A transaction builder"><meta name="keywords" content="rust, rustlang, rust-lang, TxBuilder"><title>TxBuilder in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TxBuilder</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.add_data">add_data</a><a href="#method.add_foreign_utxo">add_foreign_utxo</a><a href="#method.add_global_xpubs">add_global_xpubs</a><a href="#method.add_recipient">add_recipient</a><a href="#method.add_unspendable">add_unspendable</a><a href="#method.add_utxo">add_utxo</a><a href="#method.add_utxos">add_utxos</a><a href="#method.allow_dust">allow_dust</a><a href="#method.allow_shrinking">allow_shrinking</a><a href="#method.change_policy">change_policy</a><a href="#method.coin_selection">coin_selection</a><a href="#method.current_height">current_height</a><a href="#method.do_not_spend_change">do_not_spend_change</a><a href="#method.drain_to">drain_to</a><a href="#method.drain_wallet">drain_wallet</a><a href="#method.enable_rbf">enable_rbf</a><a href="#method.enable_rbf_with_sequence">enable_rbf_with_sequence</a><a href="#method.fee_absolute">fee_absolute</a><a href="#method.fee_rate">fee_rate</a><a href="#method.finish">finish</a><a href="#method.include_output_redeem_witness_script">include_output_redeem_witness_script</a><a href="#method.manually_selected_only">manually_selected_only</a><a href="#method.nlocktime">nlocktime</a><a href="#method.only_spend_change">only_spend_change</a><a href="#method.only_witness_utxo">only_witness_utxo</a><a href="#method.ordering">ordering</a><a href="#method.policy_path">policy_path</a><a href="#method.set_recipients">set_recipients</a><a href="#method.sighash">sighash</a><a href="#method.unspendable">unspendable</a><a href="#method.version">version</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">!Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a></h2><div id="sidebar-vars" data-name="TxBuilder" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="struct" href="#">TxBuilder</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#118-123" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust struct"><code>pub struct TxBuilder<'a, D, Cs, Ctx> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A transaction builder</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A transaction builder"><meta name="keywords" content="rust, rustlang, rust-lang, TxBuilder"><title>TxBuilder in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TxBuilder</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_data">add_data</a></li><li><a href="#method.add_foreign_utxo">add_foreign_utxo</a></li><li><a href="#method.add_global_xpubs">add_global_xpubs</a></li><li><a href="#method.add_recipient">add_recipient</a></li><li><a href="#method.add_unspendable">add_unspendable</a></li><li><a href="#method.add_utxo">add_utxo</a></li><li><a href="#method.add_utxos">add_utxos</a></li><li><a href="#method.allow_dust">allow_dust</a></li><li><a href="#method.allow_shrinking">allow_shrinking</a></li><li><a href="#method.change_policy">change_policy</a></li><li><a href="#method.coin_selection">coin_selection</a></li><li><a href="#method.current_height">current_height</a></li><li><a href="#method.do_not_spend_change">do_not_spend_change</a></li><li><a href="#method.drain_to">drain_to</a></li><li><a href="#method.drain_wallet">drain_wallet</a></li><li><a href="#method.enable_rbf">enable_rbf</a></li><li><a href="#method.enable_rbf_with_sequence">enable_rbf_with_sequence</a></li><li><a href="#method.fee_absolute">fee_absolute</a></li><li><a href="#method.fee_rate">fee_rate</a></li><li><a href="#method.finish">finish</a></li><li><a href="#method.include_output_redeem_witness_script">include_output_redeem_witness_script</a></li><li><a href="#method.manually_selected_only">manually_selected_only</a></li><li><a href="#method.nlocktime">nlocktime</a></li><li><a href="#method.only_spend_change">only_spend_change</a></li><li><a href="#method.only_witness_utxo">only_witness_utxo</a></li><li><a href="#method.ordering">ordering</a></li><li><a href="#method.policy_path">policy_path</a></li><li><a href="#method.set_recipients">set_recipients</a></li><li><a href="#method.sighash">sighash</a></li><li><a href="#method.unspendable">unspendable</a></li><li><a href="#method.version">version</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Clone</a></li><li><a href="#impl-Debug-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">!Send</a></li><li><a href="#impl-Sync-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">!Sync</a></li><li><a href="#impl-Unpin-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Into<U></a></li><li><a href="#impl-Pointable-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">Pointable</a></li><li><a href="#impl-ToOwned-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::tx_builder</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="struct" href="#">TxBuilder</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#118-123">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct TxBuilder<'a, D, Cs, Ctx> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A transaction builder</p>
<p>A <code>TxBuilder</code> is created by calling <a href="../struct.Wallet.html#method.build_tx"><code>build_tx</code></a> or <a href="../struct.Wallet.html#method.build_fee_bump"><code>build_fee_bump</code></a> on a wallet. After
assigning it, you set options on it until finally calling <a href="struct.TxBuilder.html#method.finish"><code>finish</code></a> to consume the builder and
generate the transaction.</p>
<p>Each option setting method on <code>TxBuilder</code> takes and returns <code>&mut self</code> so you can chain calls
as in the following example:</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// chaining</span>
-<span class="kw">let</span> (<span class="ident">psbt1</span>, <span class="ident">details</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">ordering</span>(<span class="ident">TxOrdering::Untouched</span>)
- .<span class="ident">add_recipient</span>(<span class="ident">addr1</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>)
- .<span class="ident">add_recipient</span>(<span class="ident">addr2</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// chaining
+</span><span class="kw">let </span>(psbt1, details) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .ordering(TxOrdering::Untouched)
+ .add_recipient(addr1.script_pubkey(), <span class="number">50_000</span>)
+ .add_recipient(addr2.script_pubkey(), <span class="number">50_000</span>);
+ builder.finish()<span class="question-mark">?
+</span>};
-<span class="comment">// non-chaining</span>
-<span class="kw">let</span> (<span class="ident">psbt2</span>, <span class="ident">details</span>) <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">ordering</span>(<span class="ident">TxOrdering::Untouched</span>);
- <span class="kw">for</span> <span class="ident">addr</span> <span class="kw">in</span> <span class="kw-2">&</span>[<span class="ident">addr1</span>, <span class="ident">addr2</span>] {
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>);
+<span class="comment">// non-chaining
+</span><span class="kw">let </span>(psbt2, details) = {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.ordering(TxOrdering::Untouched);
+ <span class="kw">for </span>addr <span class="kw">in </span><span class="kw-2">&</span>[addr1, addr2] {
+ builder.add_recipient(addr.script_pubkey(), <span class="number">50_000</span>);
}
- <span class="ident">builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>
-};
+ builder.finish()<span class="question-mark">?
+</span>};
-<span class="macro">assert_eq!</span>(<span class="ident">psbt1</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[..<span class="number">2</span>], <span class="ident">psbt2</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[..<span class="number">2</span>]);</code></pre></div>
+<span class="macro">assert_eq!</span>(psbt1.unsigned_tx.output[..<span class="number">2</span>], psbt2.unsigned_tx.output[..<span class="number">2</span>]);</code></pre></div>
<p>At the moment <a href="struct.TxBuilder.html#method.coin_selection"><code>coin_selection</code></a> is an exception to the rule as it consumes <code>self</code>.
This means it is usually best to call <a href="struct.TxBuilder.html#method.coin_selection"><code>coin_selection</code></a> on the return value of <code>build_tx</code> before assigning it.</p>
<p>For further examples see <a href="index.html">this module</a>’s documentation;</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#182-570" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<'a, D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, Cs: <a class="trait" href="../coin_selection/trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D>, Ctx: <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a>> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fee_rate" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#186-189" title="goto source code">source</a></div><a href="#method.fee_rate" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.fee_rate" class="fnname">fee_rate</a>(&mut self, fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Set a custom fee rate</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fee_absolute" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#192-195" title="goto source code">source</a></div><a href="#method.fee_absolute" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.fee_absolute" class="fnname">fee_absolute</a>(&mut self, fee_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Set an absolute fee</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.policy_path" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#256-268" title="goto source code">source</a></div><a href="#method.policy_path" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.policy_path" class="fnname">policy_path</a>(<br> &mut self, <br> policy_path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>>, <br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Set the policy path to use while creating the transaction for a given keychain.</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#182-570">source</a><a href="#impl-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, Cs: <a class="trait" href="../coin_selection/trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D>, Ctx: <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a>> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fee_rate" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#186-189">source</a><h4 class="code-header">pub fn <a href="#method.fee_rate" class="fn">fee_rate</a>(&mut self, fee_rate: <a class="struct" href="../../struct.FeeRate.html" title="struct bdk::FeeRate">FeeRate</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Set a custom fee rate</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fee_absolute" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#192-195">source</a><h4 class="code-header">pub fn <a href="#method.fee_absolute" class="fn">fee_absolute</a>(&mut self, fee_amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Set an absolute fee</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.policy_path" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#256-268">source</a><h4 class="code-header">pub fn <a href="#method.policy_path" class="fn">policy_path</a>(<br> &mut self,<br> policy_path: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>>>,<br> keychain: <a class="enum" href="../../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Set the policy path to use while creating the transaction for a given keychain.</p>
<p>This method accepts a map where the key is the policy node id (see
<a href="../../descriptor/policy/struct.Policy.html#structfield.id"><code>Policy::id</code></a>) and the value is the list of the indexes of
the items that are intended to be satisfied from the policy node (see
<a href="../../descriptor/policy/enum.SatisfiableItem.html#variant.Thresh.field.items"><code>SatisfiableItem::Thresh::items</code></a>).</p>
-<h6 id="example" class="section-header"><a href="#example">Example</a></h6>
+<h6 id="example"><a href="#example">Example</a></h6>
<p>An example of when the policy path is needed is the following descriptor:
<code>wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000))))</code>,
derived from the miniscript policy <code>thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000)))</code>.
<p>If a particularly complex descriptor has multiple ambiguous thresholds in its structure,
multiple entries can be added to the map, one for each node that requires an explicit path.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">BTreeMap::new</span>();
-<span class="ident">path</span>.<span class="ident">insert</span>(<span class="string">"aabbccdd"</span>.<span class="ident">to_string</span>(), <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>]);
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>path = BTreeMap::new();
+path.insert(<span class="string">"aabbccdd"</span>.to_string(), <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>]);
-<span class="kw">let</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">build_tx</span>()
- .<span class="ident">add_recipient</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>(), <span class="number">50_000</span>)
- .<span class="ident">policy_path</span>(<span class="ident">path</span>, <span class="ident">KeychainKind::External</span>);
+<span class="kw">let </span>builder = wallet
+ .build_tx()
+ .add_recipient(to_address.script_pubkey(), <span class="number">50_000</span>)
+ .policy_path(path, KeychainKind::External);
</code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_utxos" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#276-292" title="goto source code">source</a></div><a href="#method.add_utxos" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_utxos" class="fnname">add_utxos</a>(&mut self, outpoints: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a>OutPoint<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Add the list of outpoints to the internal list of UTXOs that <strong>must</strong> be spent.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_utxos" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#276-292">source</a><h4 class="code-header">pub fn <a href="#method.add_utxos" class="fn">add_utxos</a>(&mut self, outpoints: &[OutPoint]) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Add the list of outpoints to the internal list of UTXOs that <strong>must</strong> be spent.</p>
<p>If an error occurs while adding any of the UTXOs then none of them are added and the error is returned.</p>
<p>These have priority over the “unspendable” utxos, meaning that if a utxo is present both in
the “utxos” and the “unspendable” list, it will be spent.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#298-300" title="goto source code">source</a></div><a href="#method.add_utxo" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_utxo" class="fnname">add_utxo</a>(&mut self, outpoint: OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Add a utxo to the internal list of utxos that <strong>must</strong> be spent</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_utxo" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#298-300">source</a><h4 class="code-header">pub fn <a href="#method.add_utxo" class="fn">add_utxo</a>(&mut self, outpoint: OutPoint) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Add a utxo to the internal list of utxos that <strong>must</strong> be spent</p>
<p>These have priority over the “unspendable” utxos, meaning that if a utxo is present both in
the “utxos” and the “unspendable” list, it will be spent.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_foreign_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#344-379" title="goto source code">source</a></div><a href="#method.add_foreign_utxo" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_foreign_utxo" class="fnname">add_foreign_utxo</a>(<br> &mut self, <br> outpoint: OutPoint, <br> psbt_input: Input, <br> satisfaction_weight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Add a foreign UTXO i.e. a UTXO not owned by this wallet.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_foreign_utxo" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#344-379">source</a><h4 class="code-header">pub fn <a href="#method.add_foreign_utxo" class="fn">add_foreign_utxo</a>(<br> &mut self,<br> outpoint: OutPoint,<br> psbt_input: Input,<br> satisfaction_weight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Add a foreign UTXO i.e. a UTXO not owned by this wallet.</p>
<p>At a minimum to add a foreign UTXO we need:</p>
<ol>
<li><code>outpoint</code>: To add it to the raw transaction.</li>
<code>psbt_input</code> provide a miniscript descriptor for the input so you can check it against the
<code>script_pubkey</code> and then ask it for the <a href="../../descriptor/enum.Descriptor.html#method.max_satisfaction_weight"><code>max_satisfaction_weight</code></a>.</p>
<p>This is an <strong>EXPERIMENTAL</strong> feature, API and other major changes are expected.</p>
-<h5 id="errors" class="section-header"><a href="#errors">Errors</a></h5>
+<h5 id="errors"><a href="#errors">Errors</a></h5>
<p>This method returns errors in the following circumstances:</p>
<ol>
<li>The <code>psbt_input</code> does not contain a <code>witness_utxo</code> or <code>non_witness_utxo</code>.</li>
<p>Note unless you set <a href="struct.TxBuilder.html#method.only_witness_utxo"><code>only_witness_utxo</code></a> any non-taproot <code>psbt_input</code> you pass to this
method must have <code>non_witness_utxo</code> set otherwise you will get an error when <a href="struct.TxBuilder.html#method.finish"><code>finish</code></a>
is called.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.manually_selected_only" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#387-390" title="goto source code">source</a></div><a href="#method.manually_selected_only" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.manually_selected_only" class="fnname">manually_selected_only</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Only spend utxos added by <a href="struct.TxBuilder.html#method.add_utxo"><code>add_utxo</code></a>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.manually_selected_only" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#387-390">source</a><h4 class="code-header">pub fn <a href="#method.manually_selected_only" class="fn">manually_selected_only</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Only spend utxos added by <a href="struct.TxBuilder.html#method.add_utxo"><code>add_utxo</code></a>.</p>
<p>The wallet will <strong>not</strong> add additional utxos to the transaction even if they are needed to
make the transaction valid.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.unspendable" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#396-399" title="goto source code">source</a></div><a href="#method.unspendable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.unspendable" class="fnname">unspendable</a>(&mut self, unspendable: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><OutPoint>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Replace the internal list of unspendable utxos with a new list</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.unspendable" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#396-399">source</a><h4 class="code-header">pub fn <a href="#method.unspendable" class="fn">unspendable</a>(&mut self, unspendable: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><OutPoint>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Replace the internal list of unspendable utxos with a new list</p>
<p>It’s important to note that the “must-be-spent” utxos added with <a href="struct.TxBuilder.html#method.add_utxo" title="TxBuilder::add_utxo"><code>TxBuilder::add_utxo</code></a>
have priority over these. See the docs of the two linked methods for more details.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_unspendable" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#405-408" title="goto source code">source</a></div><a href="#method.add_unspendable" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_unspendable" class="fnname">add_unspendable</a>(&mut self, unspendable: OutPoint) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Add a utxo to the internal list of unspendable utxos</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_unspendable" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#405-408">source</a><h4 class="code-header">pub fn <a href="#method.add_unspendable" class="fn">add_unspendable</a>(&mut self, unspendable: OutPoint) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Add a utxo to the internal list of unspendable utxos</p>
<p>It’s important to note that the “must-be-spent” utxos added with <a href="struct.TxBuilder.html#method.add_utxo" title="TxBuilder::add_utxo"><code>TxBuilder::add_utxo</code></a>
have priority over this. See the docs of the two linked methods for more details.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sighash" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#413-416" title="goto source code">source</a></div><a href="#method.sighash" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sighash" class="fnname">sighash</a>(&mut self, sighash: PsbtSighashType) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Sign with a specific sig hash</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sighash" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#413-416">source</a><h4 class="code-header">pub fn <a href="#method.sighash" class="fn">sighash</a>(&mut self, sighash: PsbtSighashType) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Sign with a specific sig hash</p>
<p><strong>Use this option very carefully</strong></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.ordering" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#419-422" title="goto source code">source</a></div><a href="#method.ordering" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.ordering" class="fnname">ordering</a>(&mut self, ordering: <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Choose the ordering for inputs and outputs of the transaction</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.nlocktime" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#427-430" title="goto source code">source</a></div><a href="#method.nlocktime" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.nlocktime" class="fnname">nlocktime</a>(&mut self, locktime: LockTime) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Use a specific nLockTime while creating the transaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ordering" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#419-422">source</a><h4 class="code-header">pub fn <a href="#method.ordering" class="fn">ordering</a>(&mut self, ordering: <a class="enum" href="enum.TxOrdering.html" title="enum bdk::wallet::tx_builder::TxOrdering">TxOrdering</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Choose the ordering for inputs and outputs of the transaction</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.nlocktime" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#427-430">source</a><h4 class="code-header">pub fn <a href="#method.nlocktime" class="fn">nlocktime</a>(&mut self, locktime: LockTime) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Use a specific nLockTime while creating the transaction</p>
<p>This can cause conflicts if the wallet’s descriptors contain an “after” (OP_CLTV) operator.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.version" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#436-439" title="goto source code">source</a></div><a href="#method.version" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.version" class="fnname">version</a>(&mut self, version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Build a transaction with a specific version</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.version" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#436-439">source</a><h4 class="code-header">pub fn <a href="#method.version" class="fn">version</a>(&mut self, version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Build a transaction with a specific version</p>
<p>The <code>version</code> should always be greater than <code>0</code> and greater than <code>1</code> if the wallet’s
descriptors contain an “older” (OP_CSV) operator.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.do_not_spend_change" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#445-448" title="goto source code">source</a></div><a href="#method.do_not_spend_change" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.do_not_spend_change" class="fnname">do_not_spend_change</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Do not spend change outputs</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.do_not_spend_change" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#445-448">source</a><h4 class="code-header">pub fn <a href="#method.do_not_spend_change" class="fn">do_not_spend_change</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Do not spend change outputs</p>
<p>This effectively adds all the change outputs to the “unspendable” list. See
<a href="struct.TxBuilder.html#method.unspendable" title="TxBuilder::unspendable"><code>TxBuilder::unspendable</code></a>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.only_spend_change" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#454-457" title="goto source code">source</a></div><a href="#method.only_spend_change" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.only_spend_change" class="fnname">only_spend_change</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Only spend change outputs</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.only_spend_change" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#454-457">source</a><h4 class="code-header">pub fn <a href="#method.only_spend_change" class="fn">only_spend_change</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Only spend change outputs</p>
<p>This effectively adds all the non-change outputs to the “unspendable” list. See
<a href="struct.TxBuilder.html#method.unspendable" title="TxBuilder::unspendable"><code>TxBuilder::unspendable</code></a>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.change_policy" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#461-464" title="goto source code">source</a></div><a href="#method.change_policy" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.change_policy" class="fnname">change_policy</a>(&mut self, change_policy: <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Set a specific <a href="enum.ChangeSpendPolicy.html" title="ChangeSpendPolicy"><code>ChangeSpendPolicy</code></a>. See <a href="struct.TxBuilder.html#method.do_not_spend_change" title="TxBuilder::do_not_spend_change"><code>TxBuilder::do_not_spend_change</code></a> and
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.change_policy" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#461-464">source</a><h4 class="code-header">pub fn <a href="#method.change_policy" class="fn">change_policy</a>(&mut self, change_policy: <a class="enum" href="enum.ChangeSpendPolicy.html" title="enum bdk::wallet::tx_builder::ChangeSpendPolicy">ChangeSpendPolicy</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Set a specific <a href="enum.ChangeSpendPolicy.html" title="ChangeSpendPolicy"><code>ChangeSpendPolicy</code></a>. See <a href="struct.TxBuilder.html#method.do_not_spend_change" title="TxBuilder::do_not_spend_change"><code>TxBuilder::do_not_spend_change</code></a> and
<a href="struct.TxBuilder.html#method.only_spend_change" title="TxBuilder::only_spend_change"><code>TxBuilder::only_spend_change</code></a> for some shortcuts.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.only_witness_utxo" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#471-474" title="goto source code">source</a></div><a href="#method.only_witness_utxo" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.only_witness_utxo" class="fnname">only_witness_utxo</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Only Fill-in the <a href="bitcoin::util::psbt::Input::witness_utxo"><code>psbt::Input::witness_utxo</code></a> field when spending from
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.only_witness_utxo" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#471-474">source</a><h4 class="code-header">pub fn <a href="#method.only_witness_utxo" class="fn">only_witness_utxo</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Only Fill-in the <a href="bitcoin::util::psbt::Input::witness_utxo"><code>psbt::Input::witness_utxo</code></a> field when spending from
SegWit descriptors.</p>
<p>This reduces the size of the PSBT, but some signers might reject them due to the lack of
the <code>non_witness_utxo</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.include_output_redeem_witness_script" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#480-483" title="goto source code">source</a></div><a href="#method.include_output_redeem_witness_script" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.include_output_redeem_witness_script" class="fnname">include_output_redeem_witness_script</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Fill-in the <a href="bitcoin::util::psbt::Output::redeem_script"><code>psbt::Output::redeem_script</code></a> and
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.include_output_redeem_witness_script" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#480-483">source</a><h4 class="code-header">pub fn <a href="#method.include_output_redeem_witness_script" class="fn">include_output_redeem_witness_script</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Fill-in the <a href="bitcoin::util::psbt::Output::redeem_script"><code>psbt::Output::redeem_script</code></a> and
<a href="bitcoin::util::psbt::Output::witness_script"><code>psbt::Output::witness_script</code></a> fields.</p>
<p>This is useful for signers which always require it, like ColdCard hardware wallets.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_global_xpubs" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#490-493" title="goto source code">source</a></div><a href="#method.add_global_xpubs" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_global_xpubs" class="fnname">add_global_xpubs</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Fill-in the <code>PSBT_GLOBAL_XPUB</code> field with the extended keys contained in both the external
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_global_xpubs" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#490-493">source</a><h4 class="code-header">pub fn <a href="#method.add_global_xpubs" class="fn">add_global_xpubs</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Fill-in the <code>PSBT_GLOBAL_XPUB</code> field with the extended keys contained in both the external
and internal descriptors</p>
<p>This is useful for offline signers that take part to a multisig. Some hardware wallets like
BitBox and ColdCard are known to require this.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drain_wallet" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#496-499" title="goto source code">source</a></div><a href="#method.drain_wallet" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.drain_wallet" class="fnname">drain_wallet</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Spend all the available inputs. This respects filters like <a href="struct.TxBuilder.html#method.unspendable" title="TxBuilder::unspendable"><code>TxBuilder::unspendable</code></a> and the change policy.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.coin_selection" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#506-516" title="goto source code">source</a></div><a href="#method.coin_selection" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.coin_selection" class="fnname">coin_selection</a><P: <a class="trait" href="../coin_selection/trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D>>(<br> self, <br> coin_selection: P<br>) -> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, P, Ctx></h4></div></summary><div class="docblock"><p>Choose the coin selection algorithm</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drain_wallet" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#496-499">source</a><h4 class="code-header">pub fn <a href="#method.drain_wallet" class="fn">drain_wallet</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Spend all the available inputs. This respects filters like <a href="struct.TxBuilder.html#method.unspendable" title="TxBuilder::unspendable"><code>TxBuilder::unspendable</code></a> and the change policy.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.coin_selection" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#506-516">source</a><h4 class="code-header">pub fn <a href="#method.coin_selection" class="fn">coin_selection</a><P: <a class="trait" href="../coin_selection/trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D>>(<br> self,<br> coin_selection: P<br>) -> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, P, Ctx></h4></section></summary><div class="docblock"><p>Choose the coin selection algorithm</p>
<p>Overrides the <a href="../coin_selection/type.DefaultCoinSelectionAlgorithm.html"><code>DefaultCoinSelectionAlgorithm</code></a>.</p>
<p>Note that this function consumes the builder and returns it so it is usually best to put this as the first call on the builder.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.finish" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#523-525" title="goto source code">source</a></div><a href="#method.finish" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.finish" class="fnname">finish</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Psbt, <a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Finish building the transaction.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.finish" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#523-525">source</a><h4 class="code-header">pub fn <a href="#method.finish" class="fn">finish</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><(Psbt, <a class="struct" href="../../struct.TransactionDetails.html" title="struct bdk::TransactionDetails">TransactionDetails</a>), <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Finish building the transaction.</p>
<p>Returns the <a href="https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki"><code>BIP174</code></a> “PSBT” and summary details about the transaction.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.enable_rbf" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#530-533" title="goto source code">source</a></div><a href="#method.enable_rbf" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.enable_rbf" class="fnname">enable_rbf</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Enable signaling RBF</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.enable_rbf" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#530-533">source</a><h4 class="code-header">pub fn <a href="#method.enable_rbf" class="fn">enable_rbf</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Enable signaling RBF</p>
<p>This will use the default nSequence value of <code>0xFFFFFFFD</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.enable_rbf_with_sequence" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#542-545" title="goto source code">source</a></div><a href="#method.enable_rbf_with_sequence" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.enable_rbf_with_sequence" class="fnname">enable_rbf_with_sequence</a>(&mut self, nsequence: Sequence) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Enable signaling RBF with a specific nSequence value</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.enable_rbf_with_sequence" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#542-545">source</a><h4 class="code-header">pub fn <a href="#method.enable_rbf_with_sequence" class="fn">enable_rbf_with_sequence</a>(&mut self, nsequence: Sequence) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Enable signaling RBF with a specific nSequence value</p>
<p>This can cause conflicts if the wallet’s descriptors contain an “older” (OP_CSV) operator
and the given <code>nsequence</code> is lower than the CSV value.</p>
<p>If the <code>nsequence</code> is higher than <code>0xFFFFFFFD</code> an error will be thrown, since it would not
be a valid nSequence to signal RBF.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.current_height" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#558-561" title="goto source code">source</a></div><a href="#method.current_height" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.current_height" class="fnname">current_height</a>(&mut self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Set the current blockchain height.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.current_height" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#558-561">source</a><h4 class="code-header">pub fn <a href="#method.current_height" class="fn">current_height</a>(&mut self, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Set the current blockchain height.</p>
<p>This will be used to:</p>
<ol>
<li>Set the nLockTime for preventing fee sniping.
add them using <a href="struct.TxBuilder.html#method.add_utxos" title="TxBuilder::add_utxos"><code>TxBuilder::add_utxos</code></a>.</li>
</ol>
<p>In both cases, if you don’t provide a current height, we use the last sync height.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.allow_dust" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#566-569" title="goto source code">source</a></div><a href="#method.allow_dust" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.allow_dust" class="fnname">allow_dust</a>(&mut self, allow_dust: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Set whether or not the dust limit is checked.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.allow_dust" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#566-569">source</a><h4 class="code-header">pub fn <a href="#method.allow_dust" class="fn">allow_dust</a>(&mut self, allow_dust: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Set whether or not the dust limit is checked.</p>
<p><strong>Note</strong>: by avoiding a dust limit check you may end up with a transaction that is non-standard.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#572-640" title="goto source code">source</a></div><a href="#impl-1" class="anchor"></a><h3 class="code-header in-band">impl<'a, D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, Cs: <a class="trait" href="../coin_selection/trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D>> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a>></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.set_recipients" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#574-577" title="goto source code">source</a></div><a href="#method.set_recipients" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.set_recipients" class="fnname">set_recipients</a>(&mut self, recipients: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Script, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Replace the recipients already added with a new list</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_recipient" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#580-583" title="goto source code">source</a></div><a href="#method.add_recipient" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_recipient" class="fnname">add_recipient</a>(&mut self, script_pubkey: Script, amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Add a recipient to the internal list</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.add_data" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#586-590" title="goto source code">source</a></div><a href="#method.add_data" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.add_data" class="fnname">add_data</a>(&mut self, data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Add data as an output, using OP_RETURN</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drain_to" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#636-639" title="goto source code">source</a></div><a href="#method.drain_to" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.drain_to" class="fnname">drain_to</a>(&mut self, script_pubkey: Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></div></summary><div class="docblock"><p>Sets the address to <em>drain</em> excess coins to.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20CreateTx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#572-640">source</a><a href="#impl-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20CreateTx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, Cs: <a class="trait" href="../coin_selection/trait.CoinSelectionAlgorithm.html" title="trait bdk::wallet::coin_selection::CoinSelectionAlgorithm">CoinSelectionAlgorithm</a><D>> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a>></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_recipients" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#574-577">source</a><h4 class="code-header">pub fn <a href="#method.set_recipients" class="fn">set_recipients</a>(&mut self, recipients: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><(Script, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Replace the recipients already added with a new list</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_recipient" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#580-583">source</a><h4 class="code-header">pub fn <a href="#method.add_recipient" class="fn">add_recipient</a>(&mut self, script_pubkey: Script, amount: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Add a recipient to the internal list</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_data" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#586-590">source</a><h4 class="code-header">pub fn <a href="#method.add_data" class="fn">add_data</a>(&mut self, data: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Add data as an output, using OP_RETURN</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drain_to" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#636-639">source</a><h4 class="code-header">pub fn <a href="#method.drain_to" class="fn">drain_to</a>(&mut self, script_pubkey: Script) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self</h4></section></summary><div class="docblock"><p>Sets the address to <em>drain</em> excess coins to.</p>
<p>Usually, when there are excess coins they are sent to a change address generated by the
wallet. This option replaces the usual change address with an arbitrary <code>script_pubkey</code> of
your choosing. Just as with a change output, if the drain output is not needed (the excess
transaction should spend via <a href="struct.TxBuilder.html#method.add_utxos"><code>add_utxos</code></a>, or set <a href="struct.TxBuilder.html#method.drain_wallet"><code>drain_wallet</code></a> to spend all of them.</p>
<p>When bumping the fees of a transaction made with this option, you probably want to
use <a href="struct.TxBuilder.html#method.allow_shrinking"><code>allow_shrinking</code></a> to allow this output to be reduced to pay for the extra fees.</p>
-<h5 id="example-1" class="section-header"><a href="#example-1">Example</a></h5>
+<h5 id="example-1"><a href="#example-1">Example</a></h5>
<p><code>drain_to</code> is very useful for draining all the coins in a wallet with <a href="struct.TxBuilder.html#method.drain_wallet"><code>drain_wallet</code></a> to a
single address.</p>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>tx_builder = wallet.build_tx();
-<span class="ident">tx_builder</span>
- <span class="comment">// Spend all outputs in this wallet.</span>
- .<span class="ident">drain_wallet</span>()
- <span class="comment">// Send the excess (which is all the coins minus the fee) to this address.</span>
- .<span class="ident">drain_to</span>(<span class="ident">to_address</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>))
- .<span class="ident">enable_rbf</span>();
-<span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">tx_details</span>) <span class="op">=</span> <span class="ident">tx_builder</span>.<span class="ident">finish</span>()<span class="question-mark">?</span>;</code></pre></div>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-2" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#643-672" title="goto source code">source</a></div><a href="#impl-2" class="anchor"></a><h3 class="code-header in-band">impl<'a, D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, <a class="type" href="../coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a>></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.allow_shrinking" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#654-671" title="goto source code">source</a></div><a href="#method.allow_shrinking" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.allow_shrinking" class="fnname">allow_shrinking</a>(<br> &mut self, <br> script_pubkey: Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this
+tx_builder
+ <span class="comment">// Spend all outputs in this wallet.
+ </span>.drain_wallet()
+ <span class="comment">// Send the excess (which is all the coins minus the fee) to this address.
+ </span>.drain_to(to_address.script_pubkey())
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>))
+ .enable_rbf();
+<span class="kw">let </span>(psbt, tx_details) = tx_builder.finish()<span class="question-mark">?</span>;</code></pre></div>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TxBuilder%3C%27a%2C%20D%2C%20DefaultCoinSelectionAlgorithm%2C%20BumpFee%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#643-672">source</a><a href="#impl-TxBuilder%3C%27a%2C%20D%2C%20DefaultCoinSelectionAlgorithm%2C%20BumpFee%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D: <a class="trait" href="../../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>> <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, <a class="type" href="../coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a>></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.allow_shrinking" class="method has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#654-671">source</a><h4 class="code-header">pub fn <a href="#method.allow_shrinking" class="fn">allow_shrinking</a>(<br> &mut self,<br> script_pubkey: Script<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self, <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>></h4></section></summary><div class="docblock"><p>Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this
<code>script_pubkey</code> in order to bump the transaction fee. Without specifying this the wallet
will attempt to find a change output to shrink instead.</p>
<p><strong>Note</strong> that the output may shrink to below the dust limit and therefore be removed. If it is
originally.</p>
<p>Returns an <code>Err</code> if <code>script_pubkey</code> can’t be found among the recipients of the
transaction we are bumping.</p>
-</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Clone" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#170-179" title="goto source code">source</a></div><a href="#impl-Clone" class="anchor"></a><h3 class="code-header in-band">impl<'a, Cs: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, Ctx, D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#171-178" title="goto source code">source</a></div><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> Self</h4></div></summary><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130" title="goto source code">source</a></div><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></div></summary><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#117" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<'a, D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>, Cs: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>, Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#117" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<'a, D, Cs, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx> <span class="where fmt-newline">where<br> Cs: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToOwned" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-96" title="goto source code">source</a></div><a href="#impl-ToOwned" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Owned" class="type trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></div></summary><div class='docblock'><p>The resulting type after obtaining ownership.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_owned" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89" title="goto source code">source</a></div><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</h4></div></summary><div class='docblock'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.clone_into" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93" title="goto source code">source</a></div><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</div></div><div class='docblock'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#170-179">source</a><a href="#impl-Clone-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, Cs: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, Ctx, D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#171-178">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&self) -> Self</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#117">source</a><a href="#impl-Debug-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>, Cs: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>, Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#117">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section><section id="impl-Send-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Send-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section><section id="impl-Sync-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Sync-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section><section id="impl-Unpin-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Unpin-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D, Cs, Ctx> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx><span class="where fmt-newline">where<br> Cs: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,<br> Ctx: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<'a, D, Cs, Ctx> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'a, D, Cs, Ctx></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-Pointable-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&self) -> T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-TxBuilder%3C%27a%2C%20D%2C%20Cs%2C%20Ctx%3E" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Context in which the [`TxBuilder`] is valid"><meta name="keywords" content="rust, rustlang, rust-lang, TxBuilderContext"><title>TxBuilderContext in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">TxBuilderContext</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a></h2><div id="sidebar-vars" data-name="TxBuilderContext" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="trait" href="#">TxBuilderContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#54" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait TxBuilderContext: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> { }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Context in which the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is valid</p>
-</div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><div id="impl-TxBuilderContext" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#65" title="goto source code">source</a></div><a href="#impl-TxBuilderContext" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></div><div id="impl-TxBuilderContext-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#60" title="goto source code">source</a></div><a href="#impl-TxBuilderContext-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></div></div><script type="text/javascript" src="../../../implementors/bdk/wallet/tx_builder/trait.TxBuilderContext.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Context in which the [`TxBuilder`] is valid"><meta name="keywords" content="rust, rustlang, rust-lang, TxBuilderContext"><title>TxBuilderContext in bdk::wallet::tx_builder - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">TxBuilderContext</a></h2><div class="sidebar-elems"><section><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In bdk::wallet::tx_builder</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">tx_builder</a>::<wbr><a class="trait" href="#">TxBuilderContext</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/tx_builder.rs.html#54">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait TxBuilderContext: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> { }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Context in which the <a href="struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a> is valid</p>
+</div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-TxBuilderContext-for-BumpFee" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#65">source</a><a href="#impl-TxBuilderContext-for-BumpFee" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a></h3></section><section id="impl-TxBuilderContext-for-CreateTx" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/tx_builder.rs.html#60">source</a><a href="#impl-TxBuilderContext-for-CreateTx" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TxBuilderContext.html" title="trait bdk::wallet::tx_builder::TxBuilderContext">TxBuilderContext</a> for <a class="struct" href="struct.CreateTx.html" title="struct bdk::wallet::tx_builder::CreateTx">CreateTx</a></h3></section></div><script src="../../../implementors/bdk/wallet/tx_builder/trait.TxBuilderContext.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Error during validation of a tx agains the consensus rules"><meta name="keywords" content="rust, rustlang, rust-lang, VerifyError"><title>VerifyError in bdk::wallet::verify - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">VerifyError</a></h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#variants">Variants</a></h3><div class="sidebar-links"><a href="#variant.Consensus">Consensus</a><a href="#variant.Global">Global</a><a href="#variant.InvalidInput">InvalidInput</a><a href="#variant.MissingInputTx">MissingInputTx</a></div><h3 class="sidebar-title"><a href="#implementations">Associated Constants</a></h3><div class="sidebar-links"><a href="#associatedconstant.ALIGN">ALIGN</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Display">Display</a><a href="#impl-Error">Error</a><a href="#impl-From%3CError%3E">From<Error></a><a href="#impl-From%3CVerifyError%3E">From<VerifyError></a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-Pointable">Pointable</a><a href="#impl-ToString">ToString</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a><a href="#impl-VZip%3CV%3E">VZip<V></a></div></div><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">verify</a></h2><div id="sidebar-vars" data-name="VerifyError" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">verify</a>::<wbr><a class="enum" href="#">VerifyError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#77-90" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust enum"><code>pub enum VerifyError {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Error during validation of a tx agains the consensus rules"><meta name="keywords" content="rust, rustlang, rust-lang, VerifyError"><title>VerifyError in bdk::wallet::verify - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">VerifyError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block"><li><a href="#variant.Consensus">Consensus</a></li><li><a href="#variant.Global">Global</a></li><li><a href="#variant.InvalidInput">InvalidInput</a></li><li><a href="#variant.MissingInputTx">MissingInputTx</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-VerifyError">Debug</a></li><li><a href="#impl-Display-for-VerifyError">Display</a></li><li><a href="#impl-Error-for-VerifyError">Error</a></li><li><a href="#impl-From%3CError%3E-for-VerifyError">From<Error></a></li><li><a href="#impl-From%3CError%3E-for-VerifyError-1">From<Error></a></li><li><a href="#impl-From%3CVerifyError%3E-for-Error">From<VerifyError></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-VerifyError">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-VerifyError">Send</a></li><li><a href="#impl-Sync-for-VerifyError">Sync</a></li><li><a href="#impl-Unpin-for-VerifyError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-VerifyError">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-VerifyError">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-VerifyError">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-VerifyError">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-VerifyError">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-VerifyError">Into<U></a></li><li><a href="#impl-Pointable-for-VerifyError">Pointable</a></li><li><a href="#impl-Provider-for-VerifyError">Provider</a></li><li><a href="#impl-ToString-for-VerifyError">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-VerifyError">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-VerifyError">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-VerifyError">VZip<V></a></li></ul></section><h2><a href="index.html">In bdk::wallet::verify</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Enum <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">verify</a>::<wbr><a class="enum" href="#">VerifyError</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#77-90">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust enum"><code>pub enum VerifyError {
MissingInputTx(Txid),
InvalidInput(OutPoint),
Consensus(Error),
Global(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>),
-}</code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>verify</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Error during validation of a tx agains the consensus rules</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor"></a></h2><h3 id="variant.MissingInputTx" class="variant small-section-header"><a href="#variant.MissingInputTx" class="anchor field"></a><code>MissingInputTx(Txid)</code></h3><div class="docblock"><p>The transaction being spent is not available in the database or the blockchain client</p>
-</div><h3 id="variant.InvalidInput" class="variant small-section-header"><a href="#variant.InvalidInput" class="anchor field"></a><code>InvalidInput(OutPoint)</code></h3><div class="docblock"><p>The transaction being spent doesn’t have the requested output</p>
-</div><h3 id="variant.Consensus" class="variant small-section-header"><a href="#variant.Consensus" class="anchor field"></a><code>Consensus(Error)</code></h3><div class="docblock"><p>Consensus error</p>
-</div><h3 id="variant.Global" class="variant small-section-header"><a href="#variant.Global" class="anchor field"></a><code>Global(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>)</code></h3><div class="docblock"><p>Generic error</p>
+}</code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>verify</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Error during validation of a tx agains the consensus rules</p>
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.MissingInputTx" class="variant"><a href="#variant.MissingInputTx" class="anchor">§</a><h3 class="code-header">MissingInputTx(Txid)</h3></section><div class="docblock"><p>The transaction being spent is not available in the database or the blockchain client</p>
+</div><section id="variant.InvalidInput" class="variant"><a href="#variant.InvalidInput" class="anchor">§</a><h3 class="code-header">InvalidInput(OutPoint)</h3></section><div class="docblock"><p>The transaction being spent doesn’t have the requested output</p>
+</div><section id="variant.Consensus" class="variant"><a href="#variant.Consensus" class="anchor">§</a><h3 class="code-header">Consensus(Error)</h3></section><div class="docblock"><p>Consensus error</p>
+</div><section id="variant.Global" class="variant"><a href="#variant.Global" class="anchor">§</a><h3 class="code-header">Global(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>>)</h3></section><div class="docblock"><p>Generic error</p>
<p>It has to be wrapped in a <code>Box</code> since <code>Error</code> has a variant that contains this enum</p>
-</div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#76" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#76" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Display" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#92-96" title="goto source code">source</a></div><a href="#impl-Display" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#93-95" title="goto source code">source</a></div><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Error" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#98" title="goto source code">source</a></div><a href="#impl-Error" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.source" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#107" title="goto source code">source</a></div><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source" class="fnname">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static)></h4></div></summary><div class='docblock'><p>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.source">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.backtrace" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#135" title="goto source code">source</a></div><a href="#method.backtrace" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace" class="fnname">backtrace</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="struct" href="https://doc.rust-lang.org/nightly/std/backtrace/struct.Backtrace.html" title="struct std::backtrace::Backtrace">Backtrace</a>></h4></div></summary><div class="item-info"><div class="stab unstable"><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>backtrace</code>)</div></div><div class='docblock'><p>Returns a stack backtrace, if available, of where this error occurred. <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.backtrace">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.description" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#147" title="goto source code">source</a></div><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description" class="fnname">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.42.0: <p>use the Display impl or to_string()</p>
-</div></div><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.cause" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/error.rs.html#157" title="goto source code">source</a></div><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.cause" class="fnname">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a>></h4></div></summary><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 1.33.0: <p>replaced by Error::source, which can support downcasting</p>
-</div></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#100-104" title="goto source code">source</a></div><a href="#impl-From%3CError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-1" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#101-103" title="goto source code">source</a></div><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CError%3E-1" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#105" title="goto source code">source</a></div><a href="#impl-From%3CError%3E-1" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-2" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#105" title="goto source code">source</a></div><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(err: Error) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CVerifyError%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#236-243" title="goto source code">source</a></div><a href="#impl-From%3CVerifyError%3E" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../../src/bdk/error.rs.html#237-242" title="goto source code">source</a></div><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(other: <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>) -> Self</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#209-214" title="goto source code">source</a></div><a href="#impl-Borrow%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211" title="goto source code">source</a></div><a href="#method.borrow" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218-222" title="goto source code">source</a></div><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#219" title="goto source code">source</a></div><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-From%3CT%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#549-553" title="goto source code">source</a></div><a href="#impl-From%3CT%3E" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.from-3" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#550" title="goto source code">source</a></div><a href="#method.from-3" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Into%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#537-544" title="goto source code">source</a></div><a href="#impl-Into%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#541" title="goto source code">source</a></div><a href="#method.into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Pointable" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Pointable" class="anchor"></a><h3 class="code-header in-band">impl<T> Pointable for T</h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><div class="rightside"></div><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">pub const <a href="#associatedconstant.ALIGN" class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>The alignment of pointer.</p>
-</div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Init" class="type trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Init" class="associatedtype">Init</a> = T</h4></div></summary><div class='docblock'><p>The type for initializers.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.init" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.init" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></div></summary><div class='docblock'><p>Initializes a with the given initializer. <a href="#tymethod.init">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></div></summary><div class='docblock'><p>Dereferences the given pointer. <a href="#tymethod.deref">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.deref_mut" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></div></summary><div class='docblock'><p>Mutably dereferences the given pointer. <a href="#tymethod.deref_mut">Read more</a></p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.drop" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.drop" class="anchor"></a><h4 class="code-header">pub unsafe fn <a class="fnname">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></div></summary><div class='docblock'><p>Drops the object pointed to by the given pointer. <a href="#tymethod.drop">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-ToString" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2388-2402" title="goto source code">source</a></div><a href="#impl-ToString" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.to_string" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2394" title="goto source code">source</a></div><a href="#method.to_string" class="anchor"></a><h4 class="code-header">pub default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class='docblock'><p>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryFrom%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#589-598" title="goto source code">source</a></div><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error-1" class="type trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_from" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#595" title="goto source code">source</a></div><a href="#method.try_from" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-TryInto%3CU%3E" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574-583" title="goto source code">source</a></div><a href="#impl-TryInto%3CU%3E" class="anchor"></a><h3 class="code-header in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Error" class="type trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></div></summary><div class='docblock'><p>The type returned in the event of a conversion error.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.try_into" class="method trait-impl has-srclink"><div class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#580" title="goto source code">source</a></div><a href="#method.try_into" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></div></summary><div class='docblock'><p>Performs the conversion.</p>
-</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-VZip%3CV%3E" class="impl has-srclink"><div class="rightside"></div><a href="#impl-VZip%3CV%3E" class="anchor"></a><h3 class="code-header in-band">impl<V, T> VZip<V> for T <span class="where fmt-newline">where<br> V: MultiLane<T>, </span></h3></div></summary><div class="impl-items"><div id="method.vzip" class="method trait-impl has-srclink"><div class="rightside"></div><a href="#method.vzip" class="anchor"></a><h4 class="code-header">pub fn <a class="fnname">vzip</a>(self) -> V</h4></div></div></details></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#76">source</a><a href="#impl-Debug-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#76">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#92-96">source</a><a href="#impl-Display-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#93-95">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#98">source</a><a href="#impl-Error-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#83">source</a></span><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)></h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#109">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#119">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#100-104">source</a><a href="#impl-From%3CError%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#101-103">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-VerifyError-1" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#105">source</a><a href="#impl-From%3CError%3E-for-VerifyError-1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><Error> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/wallet/verify.rs.html#105">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: Error) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CVerifyError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#236-243">source</a><a href="#impl-From%3CVerifyError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>> for <a class="enum" href="../../enum.Error.html" title="enum bdk::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../../src/bdk/error.rs.html#237-242">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(other: <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-VerifyError" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section><section id="impl-Send-for-VerifyError" class="impl has-srclink"><a href="#impl-Send-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section><section id="impl-Sync-for-VerifyError" class="impl has-srclink"><a href="#impl-Sync-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section><section id="impl-Unpin-for-VerifyError" class="impl has-srclink"><a href="#impl-Unpin-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section><section id="impl-UnwindSafe-for-VerifyError" class="impl has-srclink"><a href="#impl-UnwindSafe-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a><T> for U</code> chooses to do.</p>
+</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-VerifyError" class="impl has-srclink"><a href="#impl-Pointable-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">const <a class="constant">ALIGN</a>: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a href="#method.init" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">init</a>(init: <T as Pointable>::Init) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a </a>T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">deref_mut</a><'a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a href="#method.drop" class="anchor">§</a><h4 class="code-header">unsafe fn <a class="fn">drop</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br> E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a><'a>(&'a self, demand: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a><'a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
+provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-VerifyError" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-VerifyError" class="impl has-srclink"><a href="#impl-VZip%3CV%3E-for-VerifyError" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<span class="where fmt-newline">where<br> V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Verify a transaction against the consensus rules"><meta name="keywords" content="rust, rustlang, rust-lang, verify_tx"><title>verify_tx in bdk::wallet::verify - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><div class="sidebar-elems"><h2 class="location">In <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">verify</a></h2><div id="sidebar-vars" data-name="verify_tx" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">verify</a>::<wbr><a class="fn" href="#">verify_tx</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#34-73" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn verify_tx<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>, B: <a class="trait" href="../../blockchain/trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a>>(<br> tx: &Transaction, <br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D, <br> blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>></code></pre></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>verify</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Verify a transaction against the consensus rules</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Verify a transaction against the consensus rules"><meta name="keywords" content="rust, rustlang, rust-lang, verify_tx"><title>verify_tx in bdk::wallet::verify - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In bdk::wallet::verify</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Function <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a href="index.html">verify</a>::<wbr><a class="fn" href="#">verify_tx</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#34-73">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><div class="item-decl"><pre class="rust fn"><code>pub fn verify_tx<D: <a class="trait" href="../../database/trait.Database.html" title="trait bdk::database::Database">Database</a>, B: <a class="trait" href="../../blockchain/trait.GetTx.html" title="trait bdk::blockchain::GetTx">GetTx</a>>(<br> tx: &Transaction,<br> database: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>D,<br> blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.VerifyError.html" title="enum bdk::wallet::verify::VerifyError">VerifyError</a>></code></pre></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>verify</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Verify a transaction against the consensus rules</p>
<p>This function uses [<code>bitcoinconsensus</code>] to verify transactions by fetching the required data
either from the <a href="../../database/trait.Database.html" title="Database"><code>Database</code></a> or using the <a href="../../blockchain/trait.Blockchain.html"><code>Blockchain</code></a>.</p>
<p>Depending on the <a href="../../blockchain/trait.Blockchain.html#tymethod.get_capabilities">capabilities</a> of the
<a href="../../blockchain/trait.Blockchain.html"><code>Blockchain</code></a> backend, the method could fail when called with old “historical” transactions or
with unconfirmed transactions that have been evicted from the backend’s memory.</p>
-</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Verify transactions against the consensus rules"><meta name="keywords" content="rust, rustlang, rust-lang, verify"><title>bdk::wallet::verify - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"><a href="#">Module verify</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#enums">Enums</a></li><li><a href="#functions">Functions</a></li></ul></div><div id="sidebar-vars" data-name="verify" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
- <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">verify</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#12-162" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-info"><div class="stab portability">This is supported on <strong>crate feature <code>verify</code></strong> only.</div></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Verify transactions against the consensus rules</p>
-</div></details><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.VerifyError.html" title="bdk::wallet::verify::VerifyError enum">VerifyError</a></div><div class="item-right docblock-short"><p>Error during validation of a tx agains the consensus rules</p>
-</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
-<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.verify_tx.html" title="bdk::wallet::verify::verify_tx fn">verify_tx</a></div><div class="item-right docblock-short"><p>Verify a transaction against the consensus rules</p>
-</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Verify transactions against the consensus rules"><meta name="keywords" content="rust, rustlang, rust-lang, verify"><title>bdk::wallet::verify - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location"><a href="#">Module verify</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#enums">Enums</a></li><li><a href="#functions">Functions</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">wallet</a>::<wbr><a class="mod" href="#">verify</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/wallet/verify.rs.html#12-162">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>verify</code></strong> only.</div></span><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Verify transactions against the consensus rules</p>
+</div></details><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.VerifyError.html" title="bdk::wallet::verify::VerifyError enum">VerifyError</a></div><div class="item-right docblock-short">Error during validation of a tx agains the consensus rules</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.verify_tx.html" title="bdk::wallet::verify::verify_tx fn">verify_tx</a></div><div class="item-right docblock-short">Verify a transaction against the consensus rules</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-initSidebarItems({"enum":[["VerifyError","Error during validation of a tx agains the consensus rules"]],"fn":[["verify_tx","Verify a transaction against the consensus rules"]]});
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":[["VerifyError","Error during validation of a tx agains the consensus rules"]],"fn":[["verify_tx","Verify a transaction against the consensus rules"]]};
\ No newline at end of file
+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" width="1792" height="1792" viewBox="0 0 1792 1792"><path d="M1615 0q70 0 122.5 46.5t52.5 116.5q0 63-45 151-332 629-465 752-97 91-218 91-126 0-216.5-92.5t-90.5-219.5q0-128 92-212l638-579q59-54 130-54zm-909 1034q39 76 106.5 130t150.5 76l1 71q4 213-129.5 347t-348.5 134q-123 0-218-46.5t-152.5-127.5-86.5-183-29-220q7 5 41 30t62 44.5 59 36.5 46 17q41 0 55-37 25-66 57.5-112.5t69.5-76 88-47.5 103-25.5 125-10.5z"/></svg>
\ No newline at end of file
+++ /dev/null
-<svg width="24" height="25" viewBox="0 0 24 25" xmlns="http://www.w3.org/2000/svg" aria-label="Copy to clipboard"><path d="M18 20h2v3c0 1-1 2-2 2H2c-.998 0-2-1-2-2V5c0-.911.755-1.667 1.667-1.667h5A3.323 3.323 0 0110 0a3.323 3.323 0 013.333 3.333h5C19.245 3.333 20 4.09 20 5v8.333h-2V9H2v14h16v-3zM3 7h14c0-.911-.793-1.667-1.75-1.667H13.5c-.957 0-1.75-.755-1.75-1.666C11.75 2.755 10.957 2 10 2s-1.75.755-1.75 1.667c0 .911-.793 1.666-1.75 1.666H4.75C3.793 5.333 3 6.09 3 7z"/><path d="M4 19h6v2H4zM12 11H4v2h8zM4 17h4v-2H4zM15 15v-3l-4.5 4.5L15 21v-3l8.027-.032L23 15z"/></svg>
+++ /dev/null
-body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#505050;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) #5a5a5a;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#565656;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#884719;}a.result-enum:focus{background-color:#194e9f;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#194e9f;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#194e9f;}a.result-associatedtype:focus{background-color:#884719;}a.result-foreigntype:focus{background-color:#194e9f;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#884719;}a.result-primitive:focus{background-color:#194e9f;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#2dbfb8;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#2dbfb8;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#D2991D;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#2dbfb8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#2dbfb8;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#D2991D;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2dbfb8;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#D2991D;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b78cf2;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#D2991D;}.sidebar a{color:#fdbf35;}.sidebar a.current.enum{color:#12ece2;}.sidebar a.current.struct{color:#12ece2;}.sidebar a.current.type{color:#12ece2;}.sidebar a.current.associatedtype{color:#fdbf35;}.sidebar a.current.foreigntype{color:#12ece2;}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{color:#0be900;}.sidebar a.current.union{color:#12ece2;}.sidebar a.current.constant .sidebar a.current.static{color:#fdbf35;}.sidebar a.current.primitive{color:#12ece2;}.sidebar a.current.externcrate .sidebar a.current.mod{color:#fdbf35;}.sidebar a.current.trait{color:#cca7ff;}.sidebar a.current.traitalias{color:#cca7ff;}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{color:#32d479;}.sidebar a.current.keyword{color:#fdbf35;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#D2991D;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.in-band a{color:#ddd;}.search-results a{color:#ddd;}a.test-arrow{color:#dedede;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search,.search-input{color:#111;background-color:#f0f0f0;border-color:#000;}.search-input{border-color:#e0e0e0;}.search-input:focus{border-color:#008dfd;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background-color:#494a3d;border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:##898989;}
\ No newline at end of file
+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" width="128" height="128" enable-background="new 0 0 128 128" version="1.1" viewBox="-30 -20 176 176" xml:space="preserve"><g><line x1="111" x2="64" y1="40.5" y2="87.499" fill="none" stroke="#2F3435" stroke-linecap="square" stroke-miterlimit="10" stroke-width="12"/><line x1="64" x2="17" y1="87.499" y2="40.5" fill="none" stroke="#2F3435" stroke-linecap="square" stroke-miterlimit="10" stroke-width="12"/></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;">
-<defs>
- <style type="text/css"><![CDATA[
- #logo {
- fill-rule: nonzero;
- }
- #logo-teeth {
- stroke: #000000;
- stroke-width: 0.92px;
- }
- @media (prefers-color-scheme: dark) {
- #logo {
- fill: #FFFFFF;
- fill-rule: nonzero;
- }
- #logo-teeth {
- fill: #FFFFFF;
- stroke: #FFFFFF;
- stroke-width: 0.92px;
- }
- }
- ]]></style>
-</defs>
-<path id="logo" d="M15.993,1.54c-7.972,0 -14.461,6.492 -14.461,14.462c0,7.969 6.492,14.461 14.461,14.461c7.97,0 14.462,-6.492 14.462,-14.461c0,-7.97 -6.492,-14.462 -14.462,-14.462Zm-0.021,1.285c0.511,0.013 0.924,0.439 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.01,0 0.019,0.001 0.028,0.001Zm2.178,1.566c3.379,0.633 6.313,2.723 8.016,5.709l-1.123,2.533c-0.193,0.438 0.006,0.952 0.44,1.147l2.16,0.958c0.067,0.675 0.076,1.355 0.025,2.031l-1.202,0c-0.12,0 -0.169,0.08 -0.169,0.196l0,0.551c0,1.297 -0.731,1.582 -1.373,1.652c-0.612,0.07 -1.288,-0.257 -1.374,-0.63c-0.361,-2.029 -0.961,-2.46 -1.909,-3.21c1.178,-0.746 2.401,-1.85 2.401,-3.325c0,-1.594 -1.092,-2.597 -1.835,-3.09c-1.046,-0.688 -2.203,-0.826 -2.515,-0.826l-12.421,0c1.717,-1.918 4.02,-3.218 6.55,-3.696l1.466,1.536c0.33,0.346 0.878,0.361 1.223,0.028l1.64,-1.564Zm-13.522,7.043c0.511,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.951 0.951,-0.951c0.009,0 0.019,0 0.028,0Zm22.685,0.043c0.511,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.01,0 0.019,0 0.028,0.001Zm-20.892,0.153l1.658,0l0,7.477l-3.347,0c-0.414,-1.452 -0.542,-2.97 -0.38,-4.47l2.05,-0.912c0.438,-0.195 0.637,-0.706 0.441,-1.144l-0.422,-0.951Zm6.92,0.079l3.949,0c0.205,0 1.441,0.236 1.441,1.163c0,0.768 -0.948,1.043 -1.728,1.043l-3.665,0l0.003,-2.206Zm0,5.373l3.026,0c0.275,0 1.477,0.079 1.86,1.615c0.119,0.471 0.385,2.007 0.566,2.499c0.18,0.551 0.911,1.652 1.691,1.652l4.938,0c-0.331,0.444 -0.693,0.863 -1.083,1.255l-2.01,-0.432c-0.468,-0.101 -0.93,0.199 -1.031,0.667l-0.477,2.228c-3.104,1.406 -6.672,1.389 -9.762,-0.046l-0.478,-2.228c-0.101,-0.468 -0.56,-0.767 -1.028,-0.667l-1.967,0.423c-0.365,-0.377 -0.704,-0.778 -1.016,-1.2l9.567,0c0.107,0 0.181,-0.018 0.181,-0.119l0,-3.384c0,-0.097 -0.074,-0.119 -0.181,-0.119l-2.799,0l0.003,-2.144Zm-4.415,7.749c0.512,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.429,0.952 -0.951,0.952c-0.522,0 -0.952,-0.43 -0.952,-0.952c0,0 0,0 0,0c0,-0.522 0.43,-0.952 0.952,-0.952c0.009,0 0.018,0.001 0.027,0.001Zm14.089,0.043c0.511,0.015 0.924,0.439 0.923,0.951c0,0.522 -0.429,0.952 -0.951,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.009,0 0.018,0 0.028,0.001Z"/><path id="logo-teeth" d="M29.647,16.002c0,7.49 -6.163,13.653 -13.654,13.653c-7.49,0 -13.654,-6.163 -13.654,-13.653c0,-7.491 6.164,-13.654 13.654,-13.654c7.491,0 13.654,6.163 13.654,13.654Zm-0.257,-1.319l2.13,1.319l-2.13,1.318l1.83,1.71l-2.344,0.878l1.463,2.035l-2.475,0.404l1.04,2.282l-2.506,-0.089l0.575,2.442l-2.441,-0.576l0.089,2.506l-2.283,-1.04l-0.403,2.475l-2.035,-1.462l-0.878,2.343l-1.71,-1.829l-1.319,2.129l-1.318,-2.129l-1.71,1.829l-0.878,-2.343l-2.035,1.462l-0.404,-2.475l-2.282,1.04l0.089,-2.506l-2.442,0.576l0.575,-2.442l-2.505,0.089l1.04,-2.282l-2.475,-0.404l1.462,-2.035l-2.343,-0.878l1.829,-1.71l-2.129,-1.318l2.129,-1.319l-1.829,-1.71l2.343,-0.878l-1.462,-2.035l2.475,-0.404l-1.04,-2.282l2.505,0.089l-0.575,-2.441l2.442,0.575l-0.089,-2.506l2.282,1.04l0.404,-2.475l2.035,1.463l0.878,-2.344l1.71,1.83l1.318,-2.13l1.319,2.13l1.71,-1.83l0.878,2.344l2.035,-1.463l0.403,2.475l2.283,-1.04l-0.089,2.506l2.441,-0.575l-0.575,2.441l2.506,-0.089l-1.04,2.282l2.475,0.404l-1.463,2.035l2.344,0.878l-1.83,1.71Z"/></svg>
--- /dev/null
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Documentation for Rustdoc"><meta name="keywords" content="rust, rustlang, rust-lang"><title>Rustdoc help</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="./static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="./static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="./static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="./static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="./static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="./static.files/storage-d43fa987303ecbbb.js"></script><script defer src="./static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="./static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="./static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="./static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="./static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="./bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="./bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location">Help</h2><div class="sidebar-elems"></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="./help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="./settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="./static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Rustdoc help</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section><p>You need to enable Javascript to use keyboard commands or search.</p><p>For more information, browse the <a href="https://doc.rust-lang.org/rustdoc/">rustdoc handbook</a>.</p></section></noscript></section></div></main><div id="rustdoc-vars" data-root-path="./" data-static-root-path="./static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html\" title=\"trait alloc::string::ToString\">ToString</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html\" title=\"trait alloc::string::ToString\">ToString</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+++ /dev/null
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+++ /dev/null
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
--- /dev/null
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+++ /dev/null
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
--- /dev/null
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>, Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx>","synthetic":false,"types":["bdk::keys::GeneratedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, Cs: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>, Ctx, D> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>","synthetic":false,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl<K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>, Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl<S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>"],["impl<'a, Cs: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>, Ctx, D> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[</a><a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a><a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">]</a>> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a><[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html\" title=\"struct serde_json::error::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PsbtParseError> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/blockchain/esplora/enum.EsploraError.html\" title=\"enum bdk::blockchain::esplora::EsploraError\">Error</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Client> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>> for RpcAuth","synthetic":false,"types":["bitcoincore_rpc::client::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><BlockTime> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html\" title=\"struct std::io::error::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html\" title=\"struct std::time::SystemTimeError\">SystemTimeError</a>> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Tree> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<<a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a> as <a class=\"trait\" href=\"bdk/database/trait.BatchDatabase.html\" title=\"trait bdk::database::BatchDatabase\">BatchDatabase</a>>::<a class=\"associatedtype\" href=\"bdk/database/trait.BatchDatabase.html#associatedtype.Batch\" title=\"type bdk::database::BatchDatabase::Batch\">Batch</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<Tree as <a class=\"trait\" href=\"bdk/database/trait.BatchDatabase.html\" title=\"trait bdk::database::BatchDatabase\">BatchDatabase</a>>::<a class=\"associatedtype\" href=\"bdk/database/trait.BatchDatabase.html#associatedtype.Batch\" title=\"type bdk::database::BatchDatabase::Batch\">Batch</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<<a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a> as <a class=\"trait\" href=\"bdk/database/trait.BatchDatabase.html\" title=\"trait bdk::database::BatchDatabase\">BatchDatabase</a>>::<a class=\"associatedtype\" href=\"bdk/database/trait.BatchDatabase.html#associatedtype.Batch\" title=\"type bdk::database::BatchDatabase::Batch\">Batch</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl<Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><ExtendedPubKey> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><ExtendedPrivKey> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Hash> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Fingerprint> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"https://docs.rs/serde_json/1.0.89/serde_json/error/struct.Error.html\" title=\"struct serde_json::error::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PsbtParseError> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/blockchain/esplora/enum.EsploraError.html\" title=\"enum bdk::blockchain::esplora::EsploraError\">Error</a>> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Client> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>> for RpcAuth"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><BlockTime> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html\" title=\"struct std::io::error::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html\" title=\"struct std::time::SystemTimeError\">SystemTimeError</a>> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Tree> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<<a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a> as <a class=\"trait\" href=\"bdk/database/trait.BatchDatabase.html\" title=\"trait bdk::database::BatchDatabase\">BatchDatabase</a>>::<a class=\"associatedtype\" href=\"bdk/database/trait.BatchDatabase.html#associatedtype.Batch\" title=\"type bdk::database::BatchDatabase::Batch\">Batch</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<Tree as <a class=\"trait\" href=\"bdk/database/trait.BatchDatabase.html\" title=\"trait bdk::database::BatchDatabase\">BatchDatabase</a>>::<a class=\"associatedtype\" href=\"bdk/database/trait.BatchDatabase.html#associatedtype.Batch\" title=\"type bdk::database::BatchDatabase::Batch\">Batch</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<<a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a> as <a class=\"trait\" href=\"bdk/database/trait.BatchDatabase.html\" title=\"trait bdk::database::BatchDatabase\">BatchDatabase</a>>::<a class=\"associatedtype\" href=\"bdk/database/trait.BatchDatabase.html#associatedtype.Batch\" title=\"type bdk::database::BatchDatabase::Batch\">Batch</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl<Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><ExtendedPubKey> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx>"],["impl<Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><ExtendedPrivKey> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Hash> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Fingerprint> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":false,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":false,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
--- /dev/null
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":false,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":false,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":false,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":false,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":false,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx>","synthetic":false,"types":["bdk::keys::DescriptorKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":false,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":false,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>, Cs: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>, Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>","synthetic":false,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":false,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>","synthetic":false,"types":["bdk::wallet::Wallet"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":false,"types":["bdk::wallet::AddressIndex"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":false,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>"],["impl<Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl<S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>"],["impl<'a, D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>, Cs: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>, Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>"],["impl<D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a><<a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a><<a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !Freeze for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !Freeze for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Freeze for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Freeze for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Freeze for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx> <span class=\"where fmt-newline\">where<br> K: Freeze, </span>","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S> <span class=\"where fmt-newline\">where<br> S: Freeze, </span>","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> Freeze for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx> <span class=\"where fmt-newline\">where<br> Cs: Freeze, </span>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !Freeze for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Freeze for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Freeze for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":true,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl Freeze for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>",1,["bdk::error::Error"]],["impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>",1,["bdk::blockchain::any::AnyBlockchain"]],["impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>",1,["bdk::blockchain::any::AnyBlockchainConfig"]],["impl !Freeze for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>",1,["bdk::blockchain::electrum::ElectrumBlockchain"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>",1,["bdk::blockchain::electrum::ElectrumBlockchainConfig"]],["impl !Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>",1,["bdk::blockchain::rpc::RpcBlockchain"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>",1,["bdk::blockchain::rpc::RpcConfig"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>",1,["bdk::blockchain::rpc::RpcSyncParams"]],["impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>",1,["bdk::blockchain::rpc::Auth"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>",1,["bdk::blockchain::rpc::RpcBlockchainFactory"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>",1,["bdk::blockchain::esplora::blocking::EsploraBlockchain"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>",1,["bdk::blockchain::esplora::EsploraBlockchainConfig"]],["impl !Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>",1,["bdk::blockchain::compact_filters::peer::Mempool"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>",1,["bdk::blockchain::compact_filters::peer::Peer"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>",1,["bdk::blockchain::compact_filters::BitcoinPeerConfig"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]],["impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>",1,["bdk::blockchain::compact_filters::CompactFiltersError"]],["impl Freeze for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>",1,["bdk::blockchain::Capability"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>",1,["bdk::blockchain::NoopProgress"]],["impl Freeze for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>",1,["bdk::blockchain::LogProgress"]],["impl !Freeze for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>",1,["bdk::database::any::AnyDatabase"]],["impl !Freeze for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>",1,["bdk::database::any::AnyBatch"]],["impl Freeze for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>",1,["bdk::database::any::SledDbConfiguration"]],["impl Freeze for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>",1,["bdk::database::any::SqliteDbConfiguration"]],["impl Freeze for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>",1,["bdk::database::any::AnyDatabaseConfig"]],["impl !Freeze for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>",1,["bdk::database::sqlite::SqliteDatabase"]],["impl Freeze for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>",1,["bdk::database::memory::MemoryDatabase"]],["impl Freeze for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>",1,["bdk::database::SyncTime"]],["impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>",1,["bdk::descriptor::error::Error"]],["impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>",1,["bdk::descriptor::policy::PkOrF"]],["impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>",1,["bdk::descriptor::policy::Satisfaction"]],["impl Freeze for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>",1,["bdk::descriptor::policy::Policy"]],["impl Freeze for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>",1,["bdk::descriptor::policy::Condition"]],["impl Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> Freeze for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::Bip44"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::Bip49"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::Bip84"]],["impl<K> Freeze for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::descriptor::template::Bip84Public"]],["impl Freeze for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>",1,["bdk::keys::bip39::WordCount"]],["impl<Ctx> Freeze for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx>",1,["bdk::keys::DescriptorKey"]],["impl Freeze for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> Freeze for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> Freeze for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx><span class=\"where fmt-newline\">where<br> K: Freeze,</span>",1,["bdk::keys::GeneratedKey"]],["impl Freeze for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl Freeze for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>",1,["bdk::keys::KeyError"]],["impl Freeze for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>",1,["bdk::types::KeychainKind"]],["impl Freeze for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>",1,["bdk::types::FeeRate"]],["impl Freeze for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>",1,["bdk::types::LocalUtxo"]],["impl Freeze for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>",1,["bdk::types::WeightedUtxo"]],["impl Freeze for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>",1,["bdk::types::Utxo"]],["impl Freeze for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>",1,["bdk::types::TransactionDetails"]],["impl Freeze for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>",1,["bdk::types::BlockTime"]],["impl Freeze for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>",1,["bdk::types::Balance"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>",1,["bdk::wallet::coin_selection::Excess"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>",1,["bdk::wallet::export::FullyNodedExport"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>",1,["bdk::wallet::signer::SignerId"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>",1,["bdk::wallet::signer::SignerError"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>",1,["bdk::wallet::signer::SignerContext"]],["impl<S> Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S><span class=\"where fmt-newline\">where<br> S: Freeze,</span>",1,["bdk::wallet::signer::SignerWrapper"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>",1,["bdk::wallet::signer::SignerOrdering"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>",1,["bdk::wallet::signer::SignersContainer"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>",1,["bdk::wallet::signer::SignOptions"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>",1,["bdk::wallet::tx_builder::CreateTx"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, D, Cs, Ctx> Freeze for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx><span class=\"where fmt-newline\">where<br> Cs: Freeze,</span>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>",1,["bdk::wallet::verify::VerifyError"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>",1,["bdk::wallet::hardwaresigner::HWISigner"]],["impl<D> !Freeze for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>",1,["bdk::wallet::Wallet"]],["impl Freeze for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>",1,["bdk::wallet::AddressIndex"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>",1,["bdk::wallet::AddressInfo"]],["impl Freeze for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>",1,["bdk::wallet::SyncOptions"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S> <span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D> <span class=\"where fmt-newline\">where<br> D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>, </span>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":true,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>",1,["bdk::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>",1,["bdk::blockchain::any::AnyBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>",1,["bdk::blockchain::any::AnyBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>",1,["bdk::blockchain::electrum::ElectrumBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>",1,["bdk::blockchain::electrum::ElectrumBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>",1,["bdk::blockchain::rpc::RpcBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>",1,["bdk::blockchain::rpc::RpcConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>",1,["bdk::blockchain::rpc::RpcSyncParams"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>",1,["bdk::blockchain::rpc::Auth"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>",1,["bdk::blockchain::rpc::RpcBlockchainFactory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>",1,["bdk::blockchain::esplora::blocking::EsploraBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>",1,["bdk::blockchain::esplora::EsploraBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>",1,["bdk::blockchain::compact_filters::peer::Mempool"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>",1,["bdk::blockchain::compact_filters::peer::Peer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>",1,["bdk::blockchain::compact_filters::BitcoinPeerConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>",1,["bdk::blockchain::compact_filters::CompactFiltersError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>",1,["bdk::blockchain::Capability"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>",1,["bdk::blockchain::NoopProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>",1,["bdk::blockchain::LogProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>",1,["bdk::database::any::AnyDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>",1,["bdk::database::any::AnyBatch"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>",1,["bdk::database::any::SledDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>",1,["bdk::database::any::SqliteDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>",1,["bdk::database::any::AnyDatabaseConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>",1,["bdk::database::sqlite::SqliteDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>",1,["bdk::database::memory::MemoryDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>",1,["bdk::database::SyncTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>",1,["bdk::descriptor::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>",1,["bdk::descriptor::policy::PkOrF"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>",1,["bdk::descriptor::policy::Satisfaction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>",1,["bdk::descriptor::policy::Policy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>",1,["bdk::descriptor::policy::Condition"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::Bip44"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::Bip49"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::Bip84"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::descriptor::template::Bip84Public"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>",1,["bdk::keys::bip39::WordCount"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::keys::DescriptorKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::keys::GeneratedKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>",1,["bdk::keys::KeyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>",1,["bdk::types::KeychainKind"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>",1,["bdk::types::FeeRate"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>",1,["bdk::types::LocalUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>",1,["bdk::types::WeightedUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>",1,["bdk::types::Utxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>",1,["bdk::types::TransactionDetails"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>",1,["bdk::types::BlockTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>",1,["bdk::types::Balance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>",1,["bdk::wallet::coin_selection::Excess"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>",1,["bdk::wallet::export::FullyNodedExport"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>",1,["bdk::wallet::signer::SignerId"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>",1,["bdk::wallet::signer::SignerError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>",1,["bdk::wallet::signer::SignerContext"]],["impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S><span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::wallet::signer::SignerWrapper"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>",1,["bdk::wallet::signer::SignerOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>",1,["bdk::wallet::signer::SignersContainer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>",1,["bdk::wallet::signer::SignOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>",1,["bdk::wallet::tx_builder::CreateTx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>",1,["bdk::wallet::verify::VerifyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>",1,["bdk::wallet::hardwaresigner::HWISigner"]],["impl<D> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D><span class=\"where fmt-newline\">where<br> D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a>,</span>",1,["bdk::wallet::Wallet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>",1,["bdk::wallet::AddressIndex"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>",1,["bdk::wallet::AddressInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>",1,["bdk::wallet::SyncOptions"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S> <span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>, </span>","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":true,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>",1,["bdk::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>",1,["bdk::blockchain::any::AnyBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>",1,["bdk::blockchain::any::AnyBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>",1,["bdk::blockchain::electrum::ElectrumBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>",1,["bdk::blockchain::electrum::ElectrumBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>",1,["bdk::blockchain::rpc::RpcBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>",1,["bdk::blockchain::rpc::RpcConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>",1,["bdk::blockchain::rpc::RpcSyncParams"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>",1,["bdk::blockchain::rpc::Auth"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>",1,["bdk::blockchain::rpc::RpcBlockchainFactory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>",1,["bdk::blockchain::esplora::blocking::EsploraBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>",1,["bdk::blockchain::esplora::EsploraBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>",1,["bdk::blockchain::compact_filters::peer::Mempool"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>",1,["bdk::blockchain::compact_filters::peer::Peer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>",1,["bdk::blockchain::compact_filters::BitcoinPeerConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>",1,["bdk::blockchain::compact_filters::CompactFiltersError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>",1,["bdk::blockchain::Capability"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>",1,["bdk::blockchain::NoopProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>",1,["bdk::blockchain::LogProgress"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>",1,["bdk::database::any::AnyDatabase"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>",1,["bdk::database::any::AnyBatch"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>",1,["bdk::database::any::SledDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>",1,["bdk::database::any::SqliteDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>",1,["bdk::database::any::AnyDatabaseConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>",1,["bdk::database::sqlite::SqliteDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>",1,["bdk::database::memory::MemoryDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>",1,["bdk::database::SyncTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>",1,["bdk::descriptor::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>",1,["bdk::descriptor::policy::PkOrF"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>",1,["bdk::descriptor::policy::Satisfaction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>",1,["bdk::descriptor::policy::Policy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>",1,["bdk::descriptor::policy::Condition"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::Bip44"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::Bip49"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::Bip84"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::descriptor::template::Bip84Public"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>",1,["bdk::keys::bip39::WordCount"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::keys::DescriptorKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::keys::GeneratedKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>",1,["bdk::keys::KeyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>",1,["bdk::types::KeychainKind"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>",1,["bdk::types::FeeRate"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>",1,["bdk::types::LocalUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>",1,["bdk::types::WeightedUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>",1,["bdk::types::Utxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>",1,["bdk::types::TransactionDetails"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>",1,["bdk::types::BlockTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>",1,["bdk::types::Balance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>",1,["bdk::wallet::coin_selection::Excess"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>",1,["bdk::wallet::export::FullyNodedExport"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>",1,["bdk::wallet::signer::SignerId"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>",1,["bdk::wallet::signer::SignerError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>",1,["bdk::wallet::signer::SignerContext"]],["impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S><span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a>,</span>",1,["bdk::wallet::signer::SignerWrapper"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>",1,["bdk::wallet::signer::SignerOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>",1,["bdk::wallet::signer::SignersContainer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>",1,["bdk::wallet::signer::SignOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>",1,["bdk::wallet::tx_builder::CreateTx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>",1,["bdk::wallet::verify::VerifyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>",1,["bdk::wallet::hardwaresigner::HWISigner"]],["impl<D> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>",1,["bdk::wallet::Wallet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>",1,["bdk::wallet::AddressIndex"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>",1,["bdk::wallet::AddressInfo"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>",1,["bdk::wallet::SyncOptions"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S> <span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx> <span class=\"where fmt-newline\">where<br> Cs: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D> <span class=\"where fmt-newline\">where<br> D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>, </span>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":true,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>",1,["bdk::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>",1,["bdk::blockchain::any::AnyBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>",1,["bdk::blockchain::any::AnyBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>",1,["bdk::blockchain::electrum::ElectrumBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>",1,["bdk::blockchain::electrum::ElectrumBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>",1,["bdk::blockchain::rpc::RpcBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>",1,["bdk::blockchain::rpc::RpcConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>",1,["bdk::blockchain::rpc::RpcSyncParams"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>",1,["bdk::blockchain::rpc::Auth"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>",1,["bdk::blockchain::rpc::RpcBlockchainFactory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>",1,["bdk::blockchain::esplora::blocking::EsploraBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>",1,["bdk::blockchain::esplora::EsploraBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>",1,["bdk::blockchain::compact_filters::peer::Mempool"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>",1,["bdk::blockchain::compact_filters::peer::Peer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>",1,["bdk::blockchain::compact_filters::BitcoinPeerConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>",1,["bdk::blockchain::compact_filters::CompactFiltersError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>",1,["bdk::blockchain::Capability"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>",1,["bdk::blockchain::NoopProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>",1,["bdk::blockchain::LogProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>",1,["bdk::database::any::AnyDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>",1,["bdk::database::any::AnyBatch"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>",1,["bdk::database::any::SledDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>",1,["bdk::database::any::SqliteDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>",1,["bdk::database::any::AnyDatabaseConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>",1,["bdk::database::sqlite::SqliteDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>",1,["bdk::database::memory::MemoryDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>",1,["bdk::database::SyncTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>",1,["bdk::descriptor::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>",1,["bdk::descriptor::policy::PkOrF"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>",1,["bdk::descriptor::policy::Satisfaction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>",1,["bdk::descriptor::policy::Policy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>",1,["bdk::descriptor::policy::Condition"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::Bip44"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::Bip49"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::Bip84"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::descriptor::template::Bip84Public"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>",1,["bdk::keys::bip39::WordCount"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::keys::DescriptorKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::keys::GeneratedKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>",1,["bdk::keys::KeyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>",1,["bdk::types::KeychainKind"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>",1,["bdk::types::FeeRate"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>",1,["bdk::types::LocalUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>",1,["bdk::types::WeightedUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>",1,["bdk::types::Utxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>",1,["bdk::types::TransactionDetails"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>",1,["bdk::types::BlockTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>",1,["bdk::types::Balance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>",1,["bdk::wallet::coin_selection::Excess"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>",1,["bdk::wallet::export::FullyNodedExport"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>",1,["bdk::wallet::signer::SignerId"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>",1,["bdk::wallet::signer::SignerError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>",1,["bdk::wallet::signer::SignerContext"]],["impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S><span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::wallet::signer::SignerWrapper"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>",1,["bdk::wallet::signer::SignerOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>",1,["bdk::wallet::signer::SignersContainer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>",1,["bdk::wallet::signer::SignOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>",1,["bdk::wallet::tx_builder::CreateTx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, D, Cs, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx><span class=\"where fmt-newline\">where<br> Cs: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>",1,["bdk::wallet::verify::VerifyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>",1,["bdk::wallet::hardwaresigner::HWISigner"]],["impl<D> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D><span class=\"where fmt-newline\">where<br> D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["bdk::wallet::Wallet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>",1,["bdk::wallet::AddressIndex"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>",1,["bdk::wallet::AddressInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>",1,["bdk::wallet::SyncOptions"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html\" title=\"trait core::ops::arith::Add\">Add</a><<a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html\" title=\"trait core::ops::arith::Add\">Add</a><<a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html\" title=\"trait core::ops::arith::Sub\">Sub</a><<a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":false,"types":["bdk::types::FeeRate"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Sub.html\" title=\"trait core::ops::arith::Sub\">Sub</a><<a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":false,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl<K, Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx>","synthetic":false,"types":["bdk::keys::GeneratedKey"]},{"text":"impl<S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":false,"types":["bdk::wallet::AddressInfo"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>"],["impl<K, Ctx: <a class=\"trait\" href=\"bdk/keys/trait.ScriptContext.html\" title=\"trait bdk::keys::ScriptContext\">ScriptContext</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx>"],["impl<S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S> <span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>, </span>","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":true,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>",1,["bdk::error::Error"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>",1,["bdk::blockchain::any::AnyBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>",1,["bdk::blockchain::any::AnyBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>",1,["bdk::blockchain::electrum::ElectrumBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>",1,["bdk::blockchain::electrum::ElectrumBlockchainConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>",1,["bdk::blockchain::rpc::RpcBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>",1,["bdk::blockchain::rpc::RpcConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>",1,["bdk::blockchain::rpc::RpcSyncParams"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>",1,["bdk::blockchain::rpc::Auth"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>",1,["bdk::blockchain::rpc::RpcBlockchainFactory"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>",1,["bdk::blockchain::esplora::blocking::EsploraBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>",1,["bdk::blockchain::esplora::EsploraBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>",1,["bdk::blockchain::compact_filters::peer::Mempool"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>",1,["bdk::blockchain::compact_filters::peer::Peer"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>",1,["bdk::blockchain::compact_filters::BitcoinPeerConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>",1,["bdk::blockchain::compact_filters::CompactFiltersError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>",1,["bdk::blockchain::Capability"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>",1,["bdk::blockchain::NoopProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>",1,["bdk::blockchain::LogProgress"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>",1,["bdk::database::any::AnyDatabase"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>",1,["bdk::database::any::AnyBatch"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>",1,["bdk::database::any::SledDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>",1,["bdk::database::any::SqliteDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>",1,["bdk::database::any::AnyDatabaseConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>",1,["bdk::database::sqlite::SqliteDatabase"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>",1,["bdk::database::memory::MemoryDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>",1,["bdk::database::SyncTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>",1,["bdk::descriptor::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>",1,["bdk::descriptor::policy::PkOrF"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>",1,["bdk::descriptor::policy::Satisfaction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>",1,["bdk::descriptor::policy::Policy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>",1,["bdk::descriptor::policy::Condition"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip44"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip49"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip84"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip84Public"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>",1,["bdk::keys::bip39::WordCount"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::keys::DescriptorKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::keys::GeneratedKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>",1,["bdk::keys::KeyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>",1,["bdk::types::KeychainKind"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>",1,["bdk::types::FeeRate"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>",1,["bdk::types::LocalUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>",1,["bdk::types::WeightedUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>",1,["bdk::types::Utxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>",1,["bdk::types::TransactionDetails"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>",1,["bdk::types::BlockTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>",1,["bdk::types::Balance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>",1,["bdk::wallet::coin_selection::Excess"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>",1,["bdk::wallet::export::FullyNodedExport"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>",1,["bdk::wallet::signer::SignerId"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>",1,["bdk::wallet::signer::SignerError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>",1,["bdk::wallet::signer::SignerContext"]],["impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S><span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</span>",1,["bdk::wallet::signer::SignerWrapper"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>",1,["bdk::wallet::signer::SignerOrdering"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>",1,["bdk::wallet::signer::SignersContainer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>",1,["bdk::wallet::signer::SignOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>",1,["bdk::wallet::tx_builder::CreateTx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>",1,["bdk::wallet::verify::VerifyError"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>",1,["bdk::wallet::hardwaresigner::HWISigner"]],["impl<D> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>",1,["bdk::wallet::Wallet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>",1,["bdk::wallet::AddressIndex"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>",1,["bdk::wallet::AddressInfo"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>",1,["bdk::wallet::SyncOptions"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K> <span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx> <span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S> <span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>, </span>","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>","synthetic":true,"types":["bdk::wallet::SyncOptions"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>",1,["bdk::error::Error"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchain.html\" title=\"enum bdk::blockchain::any::AnyBlockchain\">AnyBlockchain</a>",1,["bdk::blockchain::any::AnyBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>",1,["bdk::blockchain::any::AnyBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchain.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchain\">ElectrumBlockchain</a>",1,["bdk::blockchain::electrum::ElectrumBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>",1,["bdk::blockchain::electrum::ElectrumBlockchainConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchain.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchain\">RpcBlockchain</a>",1,["bdk::blockchain::rpc::RpcBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>",1,["bdk::blockchain::rpc::RpcConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>",1,["bdk::blockchain::rpc::RpcSyncParams"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>",1,["bdk::blockchain::rpc::Auth"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcBlockchainFactory.html\" title=\"struct bdk::blockchain::rpc::RpcBlockchainFactory\">RpcBlockchainFactory</a>",1,["bdk::blockchain::rpc::RpcBlockchainFactory"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchain.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchain\">EsploraBlockchain</a>",1,["bdk::blockchain::esplora::blocking::EsploraBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>",1,["bdk::blockchain::esplora::EsploraBlockchainConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Mempool.html\" title=\"struct bdk::blockchain::compact_filters::Mempool\">Mempool</a>",1,["bdk::blockchain::compact_filters::peer::Mempool"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.Peer.html\" title=\"struct bdk::blockchain::compact_filters::Peer\">Peer</a>",1,["bdk::blockchain::compact_filters::peer::Peer"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchain.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchain\">CompactFiltersBlockchain</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>",1,["bdk::blockchain::compact_filters::BitcoinPeerConfig"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>",1,["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>",1,["bdk::blockchain::compact_filters::CompactFiltersError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/blockchain/enum.Capability.html\" title=\"enum bdk::blockchain::Capability\">Capability</a>",1,["bdk::blockchain::Capability"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.NoopProgress.html\" title=\"struct bdk::blockchain::NoopProgress\">NoopProgress</a>",1,["bdk::blockchain::NoopProgress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/blockchain/struct.LogProgress.html\" title=\"struct bdk::blockchain::LogProgress\">LogProgress</a>",1,["bdk::blockchain::LogProgress"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabase.html\" title=\"enum bdk::database::any::AnyDatabase\">AnyDatabase</a>",1,["bdk::database::any::AnyDatabase"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyBatch.html\" title=\"enum bdk::database::any::AnyBatch\">AnyBatch</a>",1,["bdk::database::any::AnyBatch"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>",1,["bdk::database::any::SledDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>",1,["bdk::database::any::SqliteDbConfiguration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>",1,["bdk::database::any::AnyDatabaseConfig"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SqliteDatabase.html\" title=\"struct bdk::database::SqliteDatabase\">SqliteDatabase</a>",1,["bdk::database::sqlite::SqliteDatabase"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/memory/struct.MemoryDatabase.html\" title=\"struct bdk::database::memory::MemoryDatabase\">MemoryDatabase</a>",1,["bdk::database::memory::MemoryDatabase"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>",1,["bdk::database::SyncTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>",1,["bdk::descriptor::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>",1,["bdk::descriptor::policy::PkOrF"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>",1,["bdk::descriptor::policy::Satisfaction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>",1,["bdk::descriptor::policy::Policy"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>",1,["bdk::descriptor::policy::Condition"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.BuildSatisfaction.html\" title=\"enum bdk::descriptor::policy::BuildSatisfaction\">BuildSatisfaction</a><'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Pkh.html\" title=\"struct bdk::descriptor::template::P2Pkh\">P2Pkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh_P2Sh.html\" title=\"struct bdk::descriptor::template::P2Wpkh_P2Sh\">P2Wpkh_P2Sh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.P2Wpkh.html\" title=\"struct bdk::descriptor::template::P2Wpkh\">P2Wpkh</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44.html\" title=\"struct bdk::descriptor::template::Bip44\">Bip44</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip44"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip44Public.html\" title=\"struct bdk::descriptor::template::Bip44Public\">Bip44Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49.html\" title=\"struct bdk::descriptor::template::Bip49\">Bip49</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip49"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip49Public.html\" title=\"struct bdk::descriptor::template::Bip49Public\">Bip49Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84.html\" title=\"struct bdk::descriptor::template::Bip84\">Bip84</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip84"]],["impl<K> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/descriptor/template/struct.Bip84Public.html\" title=\"struct bdk::descriptor::template::Bip84Public\">Bip84Public</a><K><span class=\"where fmt-newline\">where<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::descriptor::template::Bip84Public"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/bip39/enum.WordCount.html\" title=\"enum bdk::keys::bip39::WordCount\">WordCount</a>",1,["bdk::keys::bip39::WordCount"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.DescriptorKey.html\" title=\"enum bdk::keys::DescriptorKey\">DescriptorKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::keys::DescriptorKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ScriptContextEnum.html\" title=\"enum bdk::keys::ScriptContextEnum\">ScriptContextEnum</a>",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.ExtendedKey.html\" title=\"enum bdk::keys::ExtendedKey\">ExtendedKey</a><Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.GeneratedKey.html\" title=\"struct bdk::keys::GeneratedKey\">GeneratedKey</a><K, Ctx><span class=\"where fmt-newline\">where<br> Ctx: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,<br> K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::keys::GeneratedKey"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/keys/struct.PrivateKeyGenerateOptions.html\" title=\"struct bdk::keys::PrivateKeyGenerateOptions\">PrivateKeyGenerateOptions</a>",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>",1,["bdk::keys::KeyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>",1,["bdk::types::KeychainKind"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.FeeRate.html\" title=\"struct bdk::FeeRate\">FeeRate</a>",1,["bdk::types::FeeRate"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>",1,["bdk::types::LocalUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.WeightedUtxo.html\" title=\"struct bdk::WeightedUtxo\">WeightedUtxo</a>",1,["bdk::types::WeightedUtxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/enum.Utxo.html\" title=\"enum bdk::Utxo\">Utxo</a>",1,["bdk::types::Utxo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>",1,["bdk::types::TransactionDetails"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>",1,["bdk::types::BlockTime"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>",1,["bdk::types::Balance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/coin_selection/enum.Excess.html\" title=\"enum bdk::wallet::coin_selection::Excess\">Excess</a>",1,["bdk::wallet::coin_selection::Excess"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.CoinSelectionResult.html\" title=\"struct bdk::wallet::coin_selection::CoinSelectionResult\">CoinSelectionResult</a>",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.LargestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::LargestFirstCoinSelection\">LargestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.OldestFirstCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::OldestFirstCoinSelection\">OldestFirstCoinSelection</a>",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html\" title=\"struct bdk::wallet::coin_selection::BranchAndBoundCoinSelection\">BranchAndBoundCoinSelection</a>",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>",1,["bdk::wallet::export::FullyNodedExport"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerId.html\" title=\"enum bdk::wallet::signer::SignerId\">SignerId</a>",1,["bdk::wallet::signer::SignerId"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>",1,["bdk::wallet::signer::SignerError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerContext.html\" title=\"enum bdk::wallet::signer::SignerContext\">SignerContext</a>",1,["bdk::wallet::signer::SignerContext"]],["impl<S> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerWrapper.html\" title=\"struct bdk::wallet::signer::SignerWrapper\">SignerWrapper</a><S><span class=\"where fmt-newline\">where<br> S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</span>",1,["bdk::wallet::signer::SignerWrapper"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignerOrdering.html\" title=\"struct bdk::wallet::signer::SignerOrdering\">SignerOrdering</a>",1,["bdk::wallet::signer::SignerOrdering"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignersContainer.html\" title=\"struct bdk::wallet::signer::SignersContainer\">SignersContainer</a>",1,["bdk::wallet::signer::SignersContainer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/signer/struct.SignOptions.html\" title=\"struct bdk::wallet::signer::SignOptions\">SignOptions</a>",1,["bdk::wallet::signer::SignOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.TapLeavesOptions.html\" title=\"enum bdk::wallet::signer::TapLeavesOptions\">TapLeavesOptions</a>",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.CreateTx.html\" title=\"struct bdk::wallet::tx_builder::CreateTx\">CreateTx</a>",1,["bdk::wallet::tx_builder::CreateTx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.BumpFee.html\" title=\"struct bdk::wallet::tx_builder::BumpFee\">BumpFee</a>",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, D, Cs, Ctx> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/tx_builder/struct.TxBuilder.html\" title=\"struct bdk::wallet::tx_builder::TxBuilder\">TxBuilder</a><'a, D, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.TxOrdering.html\" title=\"enum bdk::wallet::tx_builder::TxOrdering\">TxOrdering</a>",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html\" title=\"enum bdk::wallet::tx_builder::ChangeSpendPolicy\">ChangeSpendPolicy</a>",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>",1,["bdk::wallet::verify::VerifyError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/hardwaresigner/struct.HWISigner.html\" title=\"struct bdk::wallet::hardwaresigner::HWISigner\">HWISigner</a>",1,["bdk::wallet::hardwaresigner::HWISigner"]],["impl<D> !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.Wallet.html\" title=\"struct bdk::wallet::Wallet\">Wallet</a><D>",1,["bdk::wallet::Wallet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"bdk/wallet/enum.AddressIndex.html\" title=\"enum bdk::wallet::AddressIndex\">AddressIndex</a>",1,["bdk::wallet::AddressIndex"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.AddressInfo.html\" title=\"struct bdk::wallet::AddressInfo\">AddressInfo</a>",1,["bdk::wallet::AddressInfo"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"bdk/wallet/struct.SyncOptions.html\" title=\"struct bdk::wallet::SyncOptions\">SyncOptions</a>",1,["bdk::wallet::SyncOptions"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
--- /dev/null
+(function() {var implementors = {
+"bdk":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":false,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":false,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>","synthetic":false,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>","synthetic":false,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.149/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+(function() {var implementors = {
+"bdk":[["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/blockchain/any/enum.AnyBlockchainConfig.html\" title=\"enum bdk::blockchain::any::AnyBlockchainConfig\">AnyBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html\" title=\"struct bdk::blockchain::electrum::ElectrumBlockchainConfig\">ElectrumBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcConfig.html\" title=\"struct bdk::blockchain::rpc::RpcConfig\">RpcConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/rpc/struct.RpcSyncParams.html\" title=\"struct bdk::blockchain::rpc::RpcSyncParams\">RpcSyncParams</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/blockchain/rpc/enum.Auth.html\" title=\"enum bdk::blockchain::rpc::Auth\">Auth</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html\" title=\"struct bdk::blockchain::esplora::EsploraBlockchainConfig\">EsploraBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html\" title=\"struct bdk::blockchain::compact_filters::BitcoinPeerConfig\">BitcoinPeerConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html\" title=\"struct bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig\">CompactFiltersBlockchainConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SledDbConfiguration.html\" title=\"struct bdk::database::any::SledDbConfiguration\">SledDbConfiguration</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/database/any/struct.SqliteDbConfiguration.html\" title=\"struct bdk::database::any::SqliteDbConfiguration\">SqliteDbConfiguration</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/database/any/enum.AnyDatabaseConfig.html\" title=\"enum bdk::database::any::AnyDatabaseConfig\">AnyDatabaseConfig</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/database/struct.SyncTime.html\" title=\"struct bdk::database::SyncTime\">SyncTime</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PkOrF.html\" title=\"enum bdk::descriptor::policy::PkOrF\">PkOrF</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.SatisfiableItem.html\" title=\"enum bdk::descriptor::policy::SatisfiableItem\">SatisfiableItem</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.Satisfaction.html\" title=\"enum bdk::descriptor::policy::Satisfaction\">Satisfaction</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Policy.html\" title=\"struct bdk::descriptor::policy::Policy\">Policy</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/descriptor/policy/struct.Condition.html\" title=\"struct bdk::descriptor::policy::Condition\">Condition</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"bdk/enum.KeychainKind.html\" title=\"enum bdk::KeychainKind\">KeychainKind</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.LocalUtxo.html\" title=\"struct bdk::LocalUtxo\">LocalUtxo</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.TransactionDetails.html\" title=\"struct bdk::TransactionDetails\">TransactionDetails</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.BlockTime.html\" title=\"struct bdk::BlockTime\">BlockTime</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/struct.Balance.html\" title=\"struct bdk::Balance\">Balance</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.150/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"bdk/wallet/export/struct.FullyNodedExport.html\" title=\"struct bdk::wallet::export::FullyNodedExport\">FullyNodedExport</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+++ /dev/null
-(function() {var implementors = {};
-implementors["bdk"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/enum.Error.html\" title=\"enum bdk::Error\">Error</a>","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/blockchain/compact_filters/enum.CompactFiltersError.html\" title=\"enum bdk::blockchain::compact_filters::CompactFiltersError\">CompactFiltersError</a>","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/descriptor/error/enum.Error.html\" title=\"enum bdk::descriptor::error::Error\">Error</a>","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/descriptor/policy/enum.PolicyError.html\" title=\"enum bdk::descriptor::policy::PolicyError\">PolicyError</a>","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/keys/enum.KeyError.html\" title=\"enum bdk::keys::KeyError\">KeyError</a>","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/wallet/signer/enum.SignerError.html\" title=\"enum bdk::wallet::signer::SignerError\">SignerError</a>","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/error/trait.Error.html\" title=\"trait std::error::Error\">Error</a> for <a class=\"enum\" href=\"bdk/wallet/verify/enum.VerifyError.html\" title=\"enum bdk::wallet::verify::VerifyError\">VerifyError</a>","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
+++ /dev/null
- body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#DDDDDD;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#F5F5F5;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.rust-logo{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#f1f1f1;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#FDFFD3 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#e7b1a0;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#e7b1a0;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#e7b1a0;}a.result-associatedtype:focus{background-color:#afc6e4;}a.result-foreigntype:focus{background-color:#e7b1a0;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#afc6e4;}a.result-primitive:focus{background-color:#e7b1a0;}a.result-keyword:focus{background-color:#afc6e4;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#AD378A;}.content span.struct,.content a.struct,.block a.current.struct{color:#AD378A;}.content span.type,.content a.type,.block a.current.type{color:#AD378A;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#3873AD;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#3873AD;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#AD378A;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#3873AD;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#AD378A;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#3873AD;}.content span.trait,.content a.trait,.block a.current.trait{color:#6E4FC9;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#5137AD;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#AD7C37;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#3873AD;}.sidebar a{color:#356da4;}.sidebar a.current.enum{color:#a63283;}.sidebar a.current.struct{color:#a63283;}.sidebar a.current.type{color:#a63283;}.sidebar a.current.associatedtype{color:#356da4;}.sidebar a.current.foreigntype{color:#356da4;}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{color:#067901;}.sidebar a.current.union{color:#a63283;}.sidebar a.current.constant .sidebar a.current.static{color:#356da4;}.sidebar a.current.primitive{color:#a63283;}.sidebar a.current.externcrate .sidebar a.current.mod{color:#356da4;}.sidebar a.current.trait{color:#6849c3;}.sidebar a.current.traitalias{color:#4b349e;}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{color:#32d479;}.sidebar a.current.keyword{color:#356da4;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#3873AD;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.in-band a{color:#000;}.search-results a{color:initial;}a.test-arrow{color:#f5f5f5;}body.source .example-wrap pre.rust a{background:#eee;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search,.search-input{color:#555;background-color:white;border-color:#e0e0e0;}.search-input:focus{border-color:#66afe9;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgb(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background:#FDFFD3;border-right:3px solid #AD7C37;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#3873AD;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F5F5F5;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F5F5F5;border-right-color:#000;}#sidebar-filler{background-color:#F5F5F5;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F5F5F5;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F5F5F5;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;}
\ No newline at end of file
+++ /dev/null
-if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}function getVar(name){var el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}(function(){window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");window.searchJS=resourcePath("search",".js");window.searchIndexJS=resourcePath("search-index",".js");var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,};var mobileLocationTitle=document.querySelector(".mobile-topbar h2.location");var locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerText=locationTitle.innerText}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";var MAIN_ID="main-content";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){if(!document.location.href.startsWith("file:///")){return}var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=getVar("themes").split(",");removeClass(themeChoices.parentElement,"hidden");function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},putBackSearch:function(search_input){var search=searchState.outputElement();if(search_input.value!==""&&hasClass(search,"hidden")){searchState.showResults(search);if(searchState.browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchState.title}},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){searchState.putBackSearch(this);search_input.origPlaceholder=searchState.input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=searchState.input.origPlaceholder});if(search_input.value!=''){loadSearch()}var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="<h3 class=\"search-loading\">"+searchState.loadingText+"</h3>";searchState.showResults(search);loadSearch()}},};function getPageId(){if(window.location.hash){var tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById(MAIN_ID);var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown");handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i<len;++i){match=url.match(/\/[^/]*$/);if(i<len-1){stripped=match[0]+stripped}url=url.substring(0,url.length-match[0].length)}var selectedVersion=document.getElementsByClassName("version-selector")[0].value;url+="/"+selectedVersion+stripped;document.location.href=url}}}());window.initSidebarItems=function(items){var sidebar=document.getElementsByClassName("sidebar-elems")[0];var others;var current=window.sidebarCurrent;function addSidebarCrates(crates){if(!hasClass(document.body,"crate")){return}var div=document.createElement("div");div.className="block crate";div.innerHTML="<h3>Crates</h3>";var ul=document.createElement("ul");div.appendChild(ul);for(var i=0;i<crates.length;++i){var klass="crate";if(window.rootPath!=="./"&&crates[i]===window.currentCrate){klass+=" current"}var link=document.createElement("a");link.href=window.rootPath+crates[i]+"/index.html";link.className=klass;link.textContent=crates[i];var li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}others.appendChild(div)}function block(shortty,longty){var filtered=items[shortty];if(!filtered){return}var div=document.createElement("div");div.className="block "+shortty;var h3=document.createElement("h3");h3.textContent=longty;div.appendChild(h3);var ul=document.createElement("ul");for(var i=0,len=filtered.length;i<len;++i){var item=filtered[i];var name=item[0];var desc=item[1];var klass=shortty;if(name===current.name&&shortty===current.ty){klass+=" current"}var path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}var link=document.createElement("a");link.href=current.relpath+path;link.title=desc;link.className=klass;link.textContent=name;var li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}div.appendChild(ul);others.appendChild(div)}if(sidebar){others=document.createElement("div");others.className="others";sidebar.appendChild(others);var isModule=hasClass(document.body,"mod");if(!isModule){block("primitive","Primitive Types");block("mod","Modules");block("macro","Macros");block("struct","Structs");block("enum","Enums");block("union","Unions");block("constant","Constants");block("static","Statics");block("trait","Traits");block("fn","Functions");block("type","Type Definitions");block("foreigntype","Foreign Types");block("keyword","Keywords");block("traitalias","Trait Aliases")}addSidebarCrates(window.ALL_CRATES)}};window.register_implementors=function(imp){var implementors=document.getElementById("implementors-list");var synthetic_implementors=document.getElementById("synthetic-implementors-list");if(synthetic_implementors){var inlined_types=new Set();onEachLazy(synthetic_implementors.getElementsByClassName("impl"),function(el){var aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(function(alias){inlined_types.add(alias)})})}var currentNbImpls=implementors.getElementsByClassName("impl").length;var traitName=document.querySelector("h1.fqn > .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i<llength;++i){if(libs[i]===window.currentCrate){continue}var structs=imp[libs[i]];struct_loop:for(var j=0,slength=structs.length;j<slength;++j){var struct=structs[j];var list=struct.synthetic?synthetic_implementors:implementors;if(struct.synthetic){for(var k=0,stlength=struct.types.length;k<stlength;k++){if(inlined_types.has(struct.types[k])){continue struct_loop}inlined_types.add(struct.types[k])}}var code=document.createElement("h3");code.innerHTML=struct.text;addClass(code,"code-header");addClass(code,"in-band");onEachLazy(code.getElementsByTagName("a"),function(elem){var href=elem.getAttribute("href");if(href&&href.indexOf("http")!==0){elem.setAttribute("href",window.rootPath+href)}});var currentId=baseIdName+currentNbImpls;var anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");var display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function labelForToggleButton(sectionIsCollapsed){if(sectionIsCollapsed){return"+"}return"\u2212"}function toggleAllDocs(){var innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}var sectionIsCollapsed=false;if(hasClass(innerToggle,"will-expand")){removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),function(e){if(!hasClass(e,"type-contents-toggle")){e.open=true}});innerToggle.title="collapse all docs"}else{addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),function(e){if(e.parentNode.id!==MAIN_ID||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});sectionIsCollapsed=true;innerToggle.title="expand all docs"}innerToggle.children[0].innerText=labelForToggleButton(sectionIsCollapsed)}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}(function(){var toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}var hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";var hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";var hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){var list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),function(e){e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("rustdoc-toggle"),function(e){if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}});var pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());(function(){var lineNumbersFunc=function(){};if(getSettingValue("line-numbers")==="true"){lineNumbersFunc=function(x){var count=x.textContent.split("\n").length;var elems=[];for(var i=0;i<count;++i){elems.push(i+1)}var node=document.createElement("pre");addClass(node,"line-number");node.innerHTML=elems.join("\n");x.parentNode.insertBefore(node,x)}}onEachLazy(document.getElementsByClassName("rust-example-rendered"),function(e){if(hasClass(e,"compile_fail")){e.addEventListener("mouseover",function(){this.parentElement.previousElementSibling.childNodes[0].style.color="#f00"});e.addEventListener("mouseout",function(){this.parentElement.previousElementSibling.childNodes[0].style.color=""})}else if(hasClass(e,"ignore")){e.addEventListener("mouseover",function(){this.parentElement.previousElementSibling.childNodes[0].style.color="#ff9200"});e.addEventListener("mouseout",function(){this.parentElement.previousElementSibling.childNodes[0].style.color=""})}lineNumbersFunc(e)})}());function hideSidebar(){var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}function handleClick(id,f){var elem=document.getElementById(id);if(elem){elem.addEventListener("click",f)}}handleClick("help-button",function(ev){displayHelp(true,ev)});handleClick(MAIN_ID,function(){hideSidebar()});onEachLazy(document.getElementsByTagName("a"),function(el){if(el.hash){el.addEventListener("click",function(){expandSection(el.hash.slice(1));hideSidebar()})}});onEachLazy(document.querySelectorAll(".rustdoc-toggle > summary:not(.hideme)"),function(el){el.addEventListener("click",function(e){if(e.target.tagName!="SUMMARY"&&e.target.tagName!="A"){e.preventDefault()}})});onEachLazy(document.getElementsByClassName("notable-traits"),function(e){e.onclick=function(){this.getElementsByClassName('notable-traits-tooltiptext')[0].classList.toggle("force-tooltip")}});var sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",function(){var sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){addClass(sidebar,"shown")}else{removeClass(sidebar,"shown")}})}var buildHelperPopup=function(){var popup=document.createElement("aside");addClass(popup,"hidden");popup.id="help";popup.addEventListener("click",function(ev){if(ev.target===popup){displayHelp(false,ev)}});var book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \
- <a href=\"https://doc.rust-lang.org/rustdoc/\">the rustdoc book</a>.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"<dt>"+x[0].split(" ").map(function(y,index){return(index&1)===0?"<kbd>"+y+"</kbd>":" "+y+" "}).join("")+"</dt><dd>"+x[1]+"</dd>"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="<h2>Keyboard Shortcuts</h2><dl>"+shortcuts+"</dl></div>";var infos=["Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to \
- restrict the search to a given item kind.","Accepted kinds are: <code>fn</code>, <code>mod</code>, <code>struct</code>, \
- <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, \
- and <code>const</code>.","Search functions by type signature (e.g., <code>vec -> usize</code> or \
- <code>* -> vec</code>)","Search multiple things at once by splitting your query with comma (e.g., \
- <code>str,u8</code> or <code>String,struct:Vec,test</code>)","You can look for items with an exact name by putting double quotes around \
- your request: <code>\"string\"</code>","Look for items inside another one by searching for a path: <code>vec::Vec</code>",].map(function(x){return"<p>"+x+"</p>"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="<h2>Search Tricks</h2>"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);var rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";var rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);container.appendChild(rustdoc_version);popup.appendChild(container);insertAfter(popup,document.querySelector("main"));buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}())
\ No newline at end of file
+++ /dev/null
- /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
\ No newline at end of file
+++ /dev/null
- #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}.sub{display:none;}#theme-picker{display:none;}
\ No newline at end of file
+++ /dev/null
- @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic.ttf.woff2") format("woff2"),url("NanumBarunGothic.ttf.woff") format("woff");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.4 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5rem;}h2{font-size:1.4rem;}h3{font-size:1.3rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:20px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}h1.fqn{margin:0;padding:0;}.main-heading{display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:6px;margin-bottom:15px;}.main-heading a:hover{text-decoration:underline;}#toggle-all-docs{text-decoration:none;}h2,.top-doc h3,.top-doc h4{border-bottom:1px solid;}h3.code-header{font-size:1.1rem;}h4.code-header{font-size:1rem;}h3.code-header,h4.code-header{font-weight:600;border-bottom-style:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,.out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main-content>ul.docblock>li>a{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}.content ul.crate a.crate{font-size:1rem/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{padding:1px 6px;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.docblock.item-decl{margin-left:0;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{max-width:none;overflow:visible;margin-left:0px;}nav.sub{position:relative;font-size:1rem;text-transform:uppercase;}.sub-container{display:flex;flex-direction:row;flex-wrap:nowrap;}.sub-logo-container{display:none;margin-right:20px;}.source .sub-logo-container{display:block;}.source .sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.sidebar{font-size:0.9rem;width:250px;min-width:200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.sidebar-elems,.sidebar>.location{padding-left:24px;}.sidebar .location{overflow-wrap:anywhere;}.rustdoc.source .sidebar{width:50px;min-width:0px;max-width:300px;flex-grow:0;flex-shrink:0;flex-basis:auto;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar>*:not(:first-child){transition:opacity 0.5s;opacity:0;visibility:hidden;}.source .sidebar.expanded{overflow-y:auto;}.source .sidebar.expanded>*{opacity:1;visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.hidden{display:none !important;}.sidebar .logo-container{display:flex;margin-top:10px;margin-bottom:10px;justify-content:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;}.block ul,.block li{padding:0;list-style:none;}.block a{display:block;padding:0.3em;margin-left:-0.3em;text-overflow:ellipsis;overflow:hidden;}.sidebar h2{border-bottom:none;font-weight:500;padding:0;margin:0;margin-top:1rem;margin-bottom:1rem;}.sidebar h3{font-size:1.1rem;font-weight:500;padding:0;margin:0;margin-top:0.5rem;margin-bottom:0.25rem;}.sidebar-links,.block{margin-bottom:2em;}.mobile-topbar{display:none;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre.line-numbers{width:auto;overflow-x:visible;}.rustdoc .example-wrap>pre{margin:0;}#search{position:relative;}.search-loading{text-align:center;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.3rem;}.top-doc .docblock h3{font-size:1.15rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.1rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.95rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.information){max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;font-size:1.15rem;font-weight:normal;float:right;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;overflow-wrap:break-word;overflow-wrap:anywhere;}.in-band>code,.in-band>.code-header{display:inline-block;}#main-content{position:relative;}#main-content>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1rem;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1rem;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8rem;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:0.81rem;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:1.5625rem;position:absolute;top:-6px;left:-19px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main-content>.item-info{margin-top:0;}nav.sub{flex-grow:1;margin-bottom:25px;}.source nav.sub{margin-left:32px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:1.0625rem;font-weight:normal;}.block a.current.crate{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.2rem;}.search-container{position:relative;display:flex;height:34px;}.search-container>*{height:100%;}.search-results-title{display:inline;}#search-settings{font-size:1.5rem;font-weight:500;margin-bottom:20px;}#crate-search{min-width:115px;margin-top:5px;margin-left:0.2em;padding-left:0.3em;padding-right:23px;border:0;border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;background-image:url("down-arrow.svg");}.search-container{margin-top:4px;}.search-input{-webkit-appearance:none;-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:1px solid;border-radius:2px;padding:5px 8px;font-size:1.0625rem;transition:border-color 300ms ease;width:100%;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{padding:3px;margin-bottom:5px;font-size:0.9rem;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.2rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:0.8rem;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-weight:normal;font-size:1rem;}.impl .srclink{font-size:1.0625rem;}.rightside{float:right;}.has-srclink{font-size:1rem;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.3rem;top:5px;right:5px;z-index:1;}.example-wrap:hover .test-arrow{visibility:visible;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.code-attribute{font-weight:300;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:1.25rem;}h3.variant{font-weight:600;font-size:1.1rem;margin-bottom:10px;border-bottom:none;}.sub-variant h4{font-size:1rem;font-weight:400;border-bottom:none;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.top-doc .docblock>.section-header:first-child{margin-left:15px;}.top-doc .docblock>.section-header:first-child:hover>a:before{left:-10px;}.docblock>.section-header:first-child{margin-top:0;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:1.25rem;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:1rem;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:1.1875rem;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:1.25rem;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:1.125rem;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:1rem;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#sidebar-toggle{position:sticky;top:0;left:0;cursor:pointer;font-weight:bold;font-size:1.2rem;border-bottom:1px solid;display:flex;height:40px;justify-content:center;align-items:center;z-index:10;}#source-sidebar{width:100%;z-index:1;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:-38px;top:4px;}.theme-picker button{outline:none;}#settings-menu,#help-button{margin-left:4px;outline:none;}#theme-picker,#copy-path{height:34px;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:5px;width:33px;border:1px solid;border-radius:2px;cursor:pointer;}#help-button{font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:20px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);overflow-wrap:normal;}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:1rem;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:1.1875rem;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:1.0625rem;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main-content>ul{padding-left:10px;}#main-content>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7rem;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:1rem;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url("toggle-minus.svg");}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url("toggle-plus.svg");}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}.sidebar.expanded+main .width-limiter .sub-logo-container.rust-logo{display:none;}.rustdoc.source .sidebar{transition:width .5s;}.source .sidebar.expanded{width:300px;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{padding-top:0px;display:block;}main{padding-left:15px;padding-top:0px;}.rustdoc,.main-heading{flex-direction:column;}.content .out-of-band{text-align:left;margin-left:initial;padding:initial;}.content .out-of-band .since::before{content:"Since ";}#copy-path{display:none;}.sidebar .sidebar-logo,.sidebar .location{display:none;}.sidebar-elems{margin-top:1em;}.sidebar{position:fixed;top:45px;left:-1000px;margin-left:0;background-color:rgba(0,0,0,0);margin:0;padding:0;padding-left:15px;z-index:11;}.source main,.source .sidebar{top:0;padding:0;}.sidebar.shown,.sidebar.expanded,.sidebar:focus-within{left:0;}.rustdoc.source>.sidebar{position:fixed;margin:0;z-index:11;width:0;}.mobile-topbar .location{border:none;margin:0;margin-left:auto;padding:0.3em;padding-right:0.6em;text-overflow:ellipsis;overflow-x:hidden;}.mobile-topbar .logo-container{max-height:45px;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin-left:20px;margin-top:5px;margin-bottom:5px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.source .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;}.source nav:not(.sidebar).sub{margin-left:32px;}#theme-picker{display:none;width:0;}.content{margin-left:0px;}.source .content{margin-top:10px;}#search{margin-left:0;padding:0;}.anchor{display:none !important;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}.sidebar.expanded #sidebar-toggle{font-size:1.5rem;}.sidebar:not(.expanded) #sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;border:1px solid;border-left:0;}#source-sidebar{z-index:11;}#main-content>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}.source .sidebar.expanded{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main-content>table:not(.table-display) td{word-break:break-word;width:50%;}#crate-search{border-radius:4px;border:0;}.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}.sub-container{flex-direction:column;}.sub-logo-container{align-self:center;}.source .sub-logo-container>img{height:35px;width:35px;}.sidebar:not(.expanded) #sidebar-toggle{top:10px;}}.scraped-example-title{font-family:'Fira Sans';}.scraped-example:not(.expanded) .code-wrapper pre.line-numbers{overflow:hidden;max-height:240px;}.scraped-example:not(.expanded) .code-wrapper .example-wrap pre.rust{overflow-y:hidden;max-height:240px;padding-bottom:0;}.scraped-example .code-wrapper .prev{position:absolute;top:0.25em;right:2.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .next{position:absolute;top:0.25em;right:1.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .expand{position:absolute;top:0.25em;right:0.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper:before{content:" ";width:100%;height:5px;position:absolute;z-index:100;top:0;background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:100;bottom:0;background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper{overflow:hidden;max-height:240px;}.scraped-example .code-wrapper .line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{flex:1;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.more-examples-toggle{margin-top:10px;}.more-examples-toggle summary{color:#999;font-family:'Fira Sans';}.more-scraped-examples{margin-left:25px;display:flex;flex-direction:row;width:calc(100% - 25px);}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line:hover .toggle-line-inner{background:#aaa;}.toggle-line-inner{min-width:2px;background:#ddd;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;font-family:'Fira Sans';}.example-links ul{margin-bottom:0;}
\ No newline at end of file
var searchIndex = JSON.parse('{\
-"bdk":{"doc":"A modern, lightweight, descriptor-based wallet library …","t":[3,13,3,13,13,13,13,6,13,13,13,4,13,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,4,8,13,3,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,11,12,11,0,12,12,12,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,11,11,11,12,12,10,5,11,11,11,11,11,11,11,11,11,0,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,8,8,4,16,8,3,13,13,8,8,8,16,3,3,8,6,8,8,0,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,0,10,11,11,11,11,11,11,10,10,10,11,10,10,11,11,11,11,11,11,11,5,5,5,0,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,4,4,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,3,13,3,3,4,13,13,13,13,13,13,13,13,3,13,13,13,3,13,13,13,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,13,3,3,4,13,13,13,13,13,13,13,13,13,13,12,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,4,13,13,3,3,3,3,13,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,12,11,12,12,12,16,8,8,16,8,8,3,3,0,10,11,12,11,11,11,11,10,11,11,11,10,11,12,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,0,11,12,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,4,4,4,13,13,13,13,13,13,3,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,6,4,4,3,6,8,13,6,8,16,6,4,3,13,13,8,4,13,13,6,13,13,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,12,12,12,12,12,12,5,5,5,5,13,13,4,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,4,13,3,6,13,13,6,13,13,13,13,13,13,13,13,13,13,13,4,3,4,13,13,13,13,13,4,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,8,6,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,16,13,3,13,8,4,13,13,13,3,3,4,3,13,6,13,13,13,5,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,11,11,11,12,12,11,11,11,11,11,11,10,12,11,11,11,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,4,13,4,3,6,13,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,8,10,10,10,4,3,8,13,13,13,13,3,3,11,12,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,0,12,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,11,12,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,11,11,11,11,5,12,12,3,13,8,3,6,4,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,4,3,3,3,13,4,8,13,11,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,10,11,12,11,12,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,5,13,3,13,13,4,3,13,13,3,8,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,12,12,12,12],"n":["Balance","Bip32","BlockTime","BnBNoExactMatch","BnBTotalTriesExceeded","ChecksumMismatch","CompactFilters","ConfirmationTime","Descriptor","Electrum","Encode","Error","Esplora","External","FeeRate","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","Foreign","Generic","Hex","InsufficientFunds","Internal","InvalidNetwork","InvalidOutpoint","InvalidPolicyPathError","InvalidProgressValue","InvalidU32Bytes","IrreplaceableTransaction","Json","Key","KeychainKind","Local","LocalUtxo","Miniscript","MiniscriptPsbt","MissingCachedScripts","MissingKeyOrigin","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","ProgressUpdateError","Psbt","PsbtParse","Rpc","Rusqlite","ScriptDoesntHaveAddressForm","Secp256k1","Signer","Sled","SpendingPolicyRequired","TransactionConfirmed","TransactionDetails","TransactionNotFound","UnknownUtxo","Utxo","Vbytes","Verification","WeightedUtxo","add","as_byte","as_ref","as_sat_per_vb","base32_len","blockchain","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_base32","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","confirmation_time","confirmed","database","default","default","default","default_min_relay_fee","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor","descriptor","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","eq","fee","fee_vb","fee_wu","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fragment","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_btc_per_kvb","from_sat_per_kvb","from_sat_per_kwu","from_sat_per_vb","from_vb","from_wu","get_hash","get_hash","get_spendable","get_total","hash","hash","height","immature","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_extended_key","into_wallet_descriptor","into_wallet_descriptor","is_spent","keychain","keys","ne","ne","ne","ne","ne","ne","ne","new","outpoint","outpoint","partial_cmp","psbt","received","satisfaction_weight","sent","serialize","serialize","serialize","serialize","serialize","sub","sum","timestamp","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","transaction","trusted_pending","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","txid","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","untrusted_pending","utxo","vbytes","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet","write_base32","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","available","found","needed","requested","required","required","0","outpoint","psbt_input","AccurateFees","Blockchain","BlockchainFactory","Capability","Config","ConfigurableBlockchain","EsploraBlockchain","FullHistory","GetAnyTx","GetBlockHash","GetHeight","GetTx","Inner","LogProgress","NoopProgress","Progress","ProgressData","StatelessBlockchain","WalletSync","any","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","build","build_for_wallet","clone","clone","clone","clone_into","clone_into","clone_into","compact_filters","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","electrum","eq","esplora","estimate_fee","fmt","fmt","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","into","into","into","log_progress","noop_progress","progress","rpc","sync_wallet","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","wallet_setup","wallet_sync","AnyBlockchain","AnyBlockchainConfig","CompactFilters","CompactFilters","Electrum","Electrum","Esplora","Esplora","Rpc","Rpc","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","ne","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","wallet_setup","wallet_sync","0","0","0","0","0","0","0","0","Bip158","BitcoinPeerConfig","BlockHashNotFound","CompactFiltersBlockchain","CompactFiltersBlockchainConfig","CompactFiltersError","DataCorruption","Db","Global","InvalidFilter","InvalidFilterHeader","InvalidHeaders","InvalidResponse","Io","Mempool","MissingBlock","NoPeers","NotConnected","Peer","PeerBloomDisabled","Time","Timeout","add_tx","address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone","clone_into","clone_into","connect","connect_proxy","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_mempool","get_network","get_tx","get_tx","get_version","has_tx","init","init","init","init","init","init","into","into","into","into","into","into","is_connected","iter_txs","ne","ne","network","new","new","peers","recv","send","serialize","serialize","skip_blocks","socks5","socks5_credentials","storage_dir","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","wallet_setup","0","0","0","0","0","ElectrumBlockchain","ElectrumBlockchainConfig","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","ne","retry","serialize","socks5","stop_gap","timeout","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","url","vzip","vzip","wallet_setup","BitcoinEncoding","EsploraBlockchain","EsploraBlockchainConfig","EsploraError","HeaderHashNotFound","HeaderHeightNotFound","Hex","HttpResponse","Io","NoHeader","Parsing","TransactionNotFound","Ureq","UreqTransport","base_url","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone_into","concurrency","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","eq","estimate_fee","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_client","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","init","into","into","into","ne","new","new","proxy","serialize","stop_gap","timeout","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","wallet_setup","with_concurrency","0","0","0","0","0","0","0","0","0","0","Auth","Cookie","None","RpcBlockchain","RpcBlockchainFactory","RpcConfig","RpcSyncParams","UserPass","auth","auth","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","build","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","default","default_skip_blocks","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","eq","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","force_start_time","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","init","init","into","into","into","into","into","ne","ne","ne","network","network","partial_cmp","poll_rate_sec","serialize","serialize","serialize","start_script_count","start_time","sync_params","sync_params","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","url","url","vzip","vzip","vzip","vzip","vzip","wallet_name","wallet_name_prefix","wallet_setup","file","password","username","Batch","BatchDatabase","BatchOperations","Config","ConfigurableDatabase","Database","SqliteDatabase","SyncTime","any","begin_batch","begin_batch","block_time","borrow","borrow","borrow_mut","borrow_mut","check_descriptor_checksum","check_descriptor_checksum","clone","clone_into","commit_batch","commit_batch","connection","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","fmt","fmt","from","from","from_config","from_config","get_last_index","get_last_index","get_path_from_script_pubkey","get_path_from_script_pubkey","get_raw_tx","get_raw_tx","get_script_pubkey_from_path","get_script_pubkey_from_path","get_sync_time","get_sync_time","get_tx","get_tx","get_utxo","get_utxo","increment_last_index","increment_last_index","init","init","into","into","iter_raw_txs","iter_raw_txs","iter_script_pubkeys","iter_script_pubkeys","iter_txs","iter_txs","iter_utxos","iter_utxos","memory","new","path","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AnyBatch","AnyDatabase","AnyDatabaseConfig","Memory","Memory","Memory","Sled","Sled","Sled","SledDbConfiguration","Sqlite","Sqlite","Sqlite","SqliteDbConfiguration","begin_batch","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_descriptor_checksum","commit_batch","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","init","init","init","init","into","into","into","into","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","path","path","serialize","serialize","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","tree_name","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","MemoryDatabase","begin_batch","borrow","borrow_mut","check_descriptor_checksum","commit_batch","default","del_last_index","del_path_from_script_pubkey","del_raw_tx","del_script_pubkey_from_path","del_sync_time","del_tx","del_utxo","deref","deref_mut","drop","fmt","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","new","set_last_index","set_raw_tx","set_script_pubkey","set_sync_time","set_tx","set_utxo","try_from","try_into","type_id","vzip","Bare","DerivedDescriptor","Descriptor","DescriptorPublicKey","DescriptorXKey","ExtendedDescriptor","ExtractPolicy","Hardened","HdKeyPaths","IntoWalletDescriptor","Key","KeyMap","Legacy","Miniscript","None","Pkh","ScriptContext","Segwitv0","Sh","Single","TapKeyOrigins","Tr","Unhardened","Wildcard","Wpkh","Wsh","XPub","address","as_enum","as_enum","as_inner","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","contains_raw_pkh","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derivation_path","derive","derived_descriptor","derived_descriptor","desc_type","deserialize","deserialize","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from_ast","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","hash","hash","init","init","init","init","init","init","into","into","into","into","into","into","into_inner","into_wallet_descriptor","is_deriveable","is_non_malleable","iter","iter_pk","lift","lift","lift_check","matches","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","name_str","name_str","name_str","ne","ne","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","origin","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","vzip","vzip","wildcard","within_resource_limits","xkey","0","0","0","0","0","0","0","0","calc_checksum","calc_checksum_bytes","get_checksum","get_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","Pk","Policy","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","from","from","from","from","from","init","into","to_string","try_from","try_into","type_id","vzip","0","0","0","0","0","0","0","0","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contribution","csv","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","get_hash","get_hash","hash","hash","id","id","init","init","init","init","init","init","init","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","ne","ne","ne","ne","ne","ne","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","current_height","input_max_height","psbt","0","0","0","0","0","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","0","0","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","0","0","0","0","0","0","0","0","0","1","1","1","1","1","1","2","2","2","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","from","from","from","from","from","from","from","from","from","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","bip39","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derive","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","generate","generate_default","generate_with_entropy","generate_with_entropy_default","get_hash","get_hash","get_hash","get_hash","has_secret","has_wildcard","hash","hash","hash","hash","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","ne","ne","ne","ne","new","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","0","0","AmbiguousLanguages","BadEntropyBitCount","BadWordCount","English","Error","InvalidChecksum","Language","Mnemonic","MnemonicWithPassphrase","UnknownWord","WordCount","Words12","Words15","Words18","Words21","Words24","all","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_entropy","from_entropy_in","from_str","generate_in_with","generate_with_entropy","get_hash","get_hash","hash","hash","init","init","init","init","into","into","into","into","into_descriptor_key","into_extended_key","language","language_of","ne","ne","parse","parse_in","parse_in_normalized","parse_normalized","partial_cmp","partial_cmp","serialize","to_entropy","to_entropy_array","to_owned","to_owned","to_owned","to_seed","to_seed_normalized","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","word_count","word_iter","words_by_prefix","0","0","0","0","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressIndex","AddressInfo","IsDust","LastUnused","New","Peek","Reset","SyncOptions","Wallet","add_signer","address","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","coin_selection","database","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_checksum","drop","drop","drop","drop","ensure_addresses_cached","eq","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_address","get_balance","get_descriptor_for_keychain","get_funded_wallet","get_internal_address","get_psbt_input","get_signers","get_tx","get_utxo","hardwaresigner","index","init","init","init","init","into","into","into","into","is_dust","is_mine","keychain","list_transactions","list_unspent","ne","network","new","new_offline","policies","progress","public_descriptor","secp_ctx","sign","signer","sync","time","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_builder","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","0","0","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Excess","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","amount","change_fee","dust_threshold","fee","remaining_amount","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","deref","deref_mut","descriptor","deserialize","drop","export_wallet","fmt","from","from_str","init","into","label","serialize","to_string","try_from","try_into","type_id","vzip","HWISigner","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","from_device","id","init","into","sign_transaction","try_from","try_into","type_id","vzip","0","All","Dummy","Exclude","Fingerprint","HWIError","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","get_hash","hash","id","id","id","ids","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","ne","ne","ne","ne","ne","new","new","partial_cmp","partial_cmp","remove","remove_partial_sigs","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","0","0","0","0","0","0","0","get_timestamp","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","Untouched","add_data","add_foreign_utxo","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","current_height","default","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","do_not_spend_change","drain_to","drain_wallet","drop","drop","drop","drop","drop","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_hash","get_hash","hash","hash","include_output_redeem_witness_script","init","init","init","init","init","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","Consensus","Global","InvalidInput","MissingInputTx","VerifyError","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","init","into","to_string","try_from","try_into","type_id","verify_tx","vzip","0","0","0","0"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::blockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any::AnyBlockchain","","","","bdk::blockchain::any::AnyBlockchainConfig","","","","bdk::blockchain::compact_filters","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::compact_filters::CompactFiltersError","","","","","bdk::blockchain::electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora::EsploraError","","","","","","","","","","bdk::blockchain::rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::rpc::Auth","","","bdk::database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any::AnyBatch","","","bdk::database::any::AnyDatabase","","","bdk::database::any::AnyDatabaseConfig","","","bdk::database::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::Descriptor","","","","","","bdk::descriptor::DescriptorPublicKey","","bdk::descriptor::checksum","","","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error::Error","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","","bdk::descriptor::policy::PkOrF","","","bdk::descriptor::policy::PolicyError","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::DescriptorPublicKey","","bdk::keys::DescriptorSecretKey","","bdk::keys::ExtendedKey","","bdk::keys::KeyError","","","bdk::keys::SinglePubKey","","bdk::keys::bip39","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::bip39::Error","","","","bdk::psbt","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::AddressIndex","","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection::Excess","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::hardwaresigner","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerContext","bdk::wallet::signer::SignerError","","bdk::wallet::signer::SignerId","","","bdk::wallet::signer::TapLeavesOptions","","bdk::wallet::time","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify::VerifyError","","",""],"d":["Balance differentiated in various categories","BIP32 error","Block height and timestamp of a block","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Descriptor checksum mismatch","Compact filters client error)","<strong>DEPRECATED</strong>: Confirmation time of a transaction","Error related to the parsing and usage of descriptors","Electrum client error","Encoding error","Errors that can be thrown by the <code>Wallet</code>","Esplora client error","External","Fee rate","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","A UTXO owned by another wallet.","Generic error","Hex decoding error","Wallet’s UTXO set is not enough to cover recipient’s …","Internal, usually used for change outputs","Invalid network","Requested outpoint doesn’t exist in the tx (vout greater …","Error while extracting and manipulating policies","Progress value must be between <code>0.0</code> (included) and <code>100.0</code> …","Wrong number of bytes found when trying to convert to u32","Trying to replace a tx that has a sequence >= <code>0xFFFFFFFE</code>","Error serializing or deserializing JSON data","Error while working with <code>keys</code>","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a <code>Wallet</code>.","Miniscript error","Miniscript PSBT error","<code>crate::blockchain::WalletSync</code> sync attempt failed due to …","In order to use the <code>TxBuilder::add_global_xpubs</code> option …","Cannot build a tx without recipients","<code>manually_selected_only</code> option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Progress update error (maybe the channel has been closed)","Partially signed bitcoin transaction error","Partially signed bitcoin transaction parse error","Rpc client error","Rusqlite client error","This error is thrown when trying to convert Bare and …","An ECDSA error","Signing error","Sled database error","Spending policy is not compatible with this <code>KeychainKind</code>","Happens when trying to bump a transaction that is already …","A wallet transaction","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","An unspent transaction output (UTXO).","Trait implemented by types that can be used to measure …","Transaction verification error","A <code>Utxo</code> with its <code>satisfaction_weight</code>.","","Return <code>KeychainKind</code> as a byte","","Return the value as satoshi/vbyte","","Blockchain backends","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the transaction is confirmed, contains height and …","Confirmed and immediately spendable balance","Database types","","","","Create a new <code>FeeRate</code> with the default min relay fee value","","","","","","","","","","","","","","","","","","","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","","","","","","","","","","","","","Fee value (sats) if confirmed. The availability of the fee …","Calculate absolute fee in Satoshis using size in virtual …","Calculate absolute fee in Satoshis using size in weight …","","","","","","","","","","","","Macro to write descriptor fragments with code","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Calculate fee rate from <code>fee</code> and <code>vbytes</code>.","Calculate fee rate from <code>fee</code> and weight units (<code>wu</code>).","","","Get sum of trusted_pending and confirmed coins","Get the whole balance visible to the wallet","","","confirmation block height","All coinbase outputs not yet matured","","","","","","","","","","","","","","","","","","","","","","","Whether this UTXO is spent or not","Type of keychain","Key formats","","","","","","","","Returns <code>Some</code> <code>BlockTime</code> if both <code>height</code> and <code>timestamp</code> are …","Get the location of the UTXO","Reference to a transaction output","","Additional functions on the <code>rust-bitcoin</code> …","Received value (sats) Sum of owned outputs of this …","The weight of the witness data and <code>scriptSig</code> expressed in …","Sent value (sats) Sum of owned inputs of this transaction.","","","","","","","","confirmation block timestamp","","","","","","","","","","","Optional transaction","Unconfirmed UTXOs generated by a wallet tx","","","","","","","","","","","","","","","","","","","Transaction id","Get the <code>TxOut</code> of the UTXO","Transaction output","","","","","","","","","","Unconfirmed UTXOs received from an external wallet","The UTXO","Convert weight units to virtual bytes.","Get the version of BDK at runtime","","","","","","","","","","Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","found network, for example the network of the bitcoin node","Sats needed for some transaction","requested network, for example what is given as bdk-cli …","Required fee rate (satoshi/vbyte)","Required fee absolute value (satoshi)","","The location of the output.","The information about the input we require to add it to a …","Can compute accurate fees for the transactions found …","Trait that defines the actions that must be supported by a …","Trait for a factory of blockchains that share the …","Capabilities that can be supported by a <code>Blockchain</code> backend","Type that contains the configuration","Trait for <code>Blockchain</code> types that can be created given a …","Structure that implements the logic to sync with Esplora","Can recover the full history of a wallet and not only the …","Can fetch any historical transaction given its txid","Trait for getting block hash by block height","Trait for getting the current height of the blockchain.","Trait for getting a transaction by txid","The type returned when building a blockchain from this …","Type that implements <code>Progress</code> and logs at level <code>INFO</code> every …","Type that implements <code>Progress</code> and drops every update …","Trait for types that can receive and process progress …","Data sent with a progress update over a <code>channel</code>","Trait for blockchains that don’t contain any state","Trait for blockchains that can sync by updating the …","Runtime-checked blockchain types","","","","","","","Broadcast a transaction","Build a new blockchain for the given descriptor wallet_name","Build a new blockchain for a given wallet","","","","","","","Compact Filters","","","","","","","","","","","","Electrum","","Esplora","Estimate the fee rate required to confirm a transaction in …","","","","","","","Create a new instance given a configuration","fetch block hash given its height","Return the set of <code>Capability</code> supported by this backend","","Return the current height","Fetch a transaction given its txid","","","","","","","","Create a new instance of <code>LogProgress</code>","Create a new instance of <code>NoopProgress</code>","Shortcut to create a <code>channel</code> (pair of <code>Sender</code> and <code>Receiver</code>) …","Rpc Blockchain","Use <code>BlockchainFactory::build_for_wallet</code> to get a …","","","","","","","","","","","","","Send a new progress update","","","","","","Setup the backend and populate the internal database for …","If not overridden, it defaults to calling …","Type that can contain any of the <code>Blockchain</code> types defined …","Type that can contain any of the blockchain configurations …","Compact filters client","Compact filters client","Electrum client","Electrum client","Esplora client","Esplora client","RPC client","RPC client configuration","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Invalid BIP158 filter","Data to connect to a Bitcoin P2P peer","Block hash at specified height not found","Structure implementing the required blockchain traits","Configuration for a <code>CompactFiltersBlockchain</code>","An error that can occur during sync with a …","The data stored in the block filters storage are corrupted","Internal database error","Wrapper for <code>crate::error::Error</code>","The compact filter returned is invalid","The compact filter headers returned are invalid","The headers returned are invalid","A peer sent an invalid or unexpected response","Internal I/O error","Container for unconfirmed, but valid Bitcoin transactions","The peer is missing a block in the valid chain","No peers have been specified","A peer is not connected","A Bitcoin peer","The peer doesn’t advertise the <code>BLOOM</code> service flag","Internal system time error","A peer took too long to reply to one of our messages","Add a transaction to the mempool","Peer address such as 127.0.0.1:18333","","","","","","","","","","","","","","","","","","Connect to a peer over a plaintext TCP connection","Connect to a peer through a SOCKS5 proxy, optionally by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the mempool used by this peer","Return the Bitcoin <code>Network</code> in use","Look-up a transaction in the mempool given an <code>Inventory</code> …","","Return the <code>VersionMessage</code> sent by the peer","Return whether or not the mempool contains a transaction …","","","","","","","","","","","","","Return whether or not the peer is still connected","Return the list of transactions contained in the mempool","","","Network used","Create a new empty mempool","Construct a new instance given a list of peers, a path to …","List of peers to try to connect to for asking headers and …","Waits for a specific incoming Bitcoin message, optionally …","Send a raw Bitcoin message to the peer","","","Optionally skip initial <code>skip_blocks</code> blocks (default: 0)","Optional socks5 proxy","Optional socks5 proxy credentials","Storage dir to save partially downloaded headers and full …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper over an Electrum Client that implements the …","Configuration for an <code>ElectrumBlockchain</code>","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Request retry count","","URL of the socks5 proxy server or a Tor service","Stop searching addresses for transactions after finding an …","Request timeout (seconds)","","","","","","","","URL of the Electrum server (such as ElectrumX, Esplora, …","","","","Invalid Bitcoin data returned","Structure that implements the logic to sync with Esplora","Configuration for an <code>EsploraBlockchain</code>","Errors that can happen during a sync with <code>Esplora</code>","Header hash not found","Header height not found","Invalid Hex data returned","HTTP response error","IO error during ureq response read","No header found in ureq response","Invalid number returned","Transaction not found","Error during ureq HTTP request","Transport error during the ureq HTTP call","Base URL of the esplora service","","","","","","","","","","Number of parallel requests sent to the esplora service …","","","","","","","","","","","","","","","","","","","","","","","","","","","Build a new instance given a client","","","","","","","","","","","","","Create a new instance of the client from a base URL and …","create a config with default values given the base url and …","Optional URL of the proxy to use to make requests to the …","","Stop searching addresses for transactions after finding an …","Socket timeout.","","","","","","","","","","","","","","","","Set the number of parallel requests the client can make.","","","","","","","","","","","This struct is equivalent to bitcoincore_rpc::Auth but it …","Authentication with a cookie file","None authentication","The main struct for RPC backend implementing the …","Factory of <code>RpcBlockchain</code> instances, implements …","RpcBlockchain configuration options","Sync parameters for Bitcoin Core RPC.","Authentication with username and password, usually …","The bitcoin node authentication mechanism","The bitcoin node authentication mechanism","","","","","","","","","","","","","","","","","","","","","","","Default number of blocks to skip which will be inherited …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Forces every sync to use <code>start_time</code> as import timestamp.","","","","","","Returns RpcBlockchain backend creating an RPC client to a …","","","","","","","","","","","","","","","","","","","","The network we are using (it will be checked the bitcoin …","The network we are using (it will be checked the bitcoin …","","RPC poll rate (in seconds) to get state updates.","","","","The minimum number of scripts to scan for on initial sync.","Time in unix seconds in which initial sync will start …","Sync parameters","Sync parameters","","","","","","","","","","","","","","","","","","","","The bitcoin node url","The bitcoin node url","","","","","","The wallet name in the bitcoin node, consider using …","The optional prefix used to build the full wallet name for …","","Cookie file","Password","Username","Container for the operations","Trait for a database that supports batch operations","Trait for operations that can be batched","Type that contains the configuration","Trait for <code>Database</code> types that can be created given a …","Trait for reading data from a database","Sqlite database stored on filesystem","Blockchain state at the time of syncing","Runtime-checked database types","Create a new batch container","","Block timestamp and height at the time of sync","","","","","Read and checks the descriptor checksum for a given …","","","","Consume and apply a batch of operations","","A rusqlite connection object to the sqlite database","Delete the last derivation index for a keychain.","","Delete the data related to a specific script_pubkey, …","","Delete a raw transaction given its <code>Txid</code>","","Delete a script_pubkey given the keychain and its child …","","Reset the sync time to <code>None</code>","","Delete the metadata of a transaction and optionally the …","","Delete a <code>LocalUtxo</code> given its <code>OutPoint</code>","","","","","","","","","","","","","Create a new instance given a configuration","","Return the last derivation index for a keychain.","","Fetch the keychain and child number of a given …","","Fetch a raw transaction given its <code>Txid</code>","","Fetch a script_pubkey given the child number of a keychain.","","Return the sync time, if present","","Fetch the transaction metadata and optionally also the raw …","","Fetch a <code>LocalUtxo</code> given its <code>OutPoint</code>","","Increment the last derivation index for a keychain and …","","","","","","Return the list of raw transactions","","Return the list of script_pubkeys","","Return the list of transactions metadata","","Return the list of <code>LocalUtxo</code>s","","In-memory ephemeral database","Instantiate a new SqliteDatabase instance by creating a …","Path on the local filesystem to store the sqlite file","","Store the last derivation index for a given keychain.","","Store a raw transaction","","Store a script_pubkey along with its keychain and child …","","Store the sync time","","Store the metadata of a transaction","","Store a <code>LocalUtxo</code>","","","","","","","","","","","Type that contains any of the <code>BatchDatabase::Batch</code> types …","Type that can contain any of the <code>Database</code> types defined by …","Type that can contain any of the database configurations …","In-memory ephemeral database","In-memory ephemeral database","Memory database has no config","Simple key-value embedded database based on <code>sled</code>","Simple key-value embedded database based on <code>sled</code>","Simple key-value embedded database based on <code>sled</code>","Configuration type for a <code>sled::Tree</code> database","Sqlite embedded database using <code>rusqlite</code>","Sqlite embedded database using <code>rusqlite</code>","Sqlite embedded database using <code>rusqlite</code>","Configuration type for a <code>sqlite::SqliteDatabase</code> database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Main directory of the db","Main directory of the db","","","","","","","","","","","","","","","","Name of the database tree, a separated namespace for the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","In-memory ephemeral database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new empty database","","","","","","","","","","","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a <code>Descriptor</code> that contains extended <strong>derived</strong> keys","Script descriptor","The descriptor pubkey, either a single pubkey or an xpub.","An extended key with origin, derivation path, and wildcard.","Alias for a <code>Descriptor</code> that can contain extended keys …","Trait implemented on <code>Descriptor</code>s to add a method to …","Unhardened wildcard, e.g. *h","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","The consensus key associated with the type. Must be a …","Alias type for a map of public key to secret key","Legacy ScriptContext To be used as P2SH scripts For …","Top-level script AST type","No wildcard","Pay-to-PubKey-Hash","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single public key.","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Unhardened wildcard, e.g. *","Whether a descriptor has a wildcard in it","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Extended public key (xpub).","Computes the Bitcoin address of the descriptor, if one …","","","Get a reference to the inner <code>AstElem</code> representing the root …","Replaces all wildcards (i.e. <code>/*</code>) in the descriptor with a …","","","","","","","","","","","","","Enumerates all child nodes of the current AST node (<code>self</code>) …","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","","","","","","","Whether the given miniscript contains a raw pkh fragment","","","","","","","","","","","","","The derivation path","Deprecated name for [<code>at_derivation_index</code>].","Convert all the public keys in the descriptor to …","Convert all the public keys in the descriptor to …","Get the DescriptorType of Descriptor","","","","","","","","","Encode as a Bitcoin script","","","","","","","Descriptor errors","Computes the the underlying script before any hashing is …","Additional information helpful for extra analysis.","Check whether the miniscript follows the given Extra …","Extract the spending <code>policy</code>","","","Utility method for deriving the descriptor at each index …","","","","","","","","","","","","","","","","","","","","","","","Add type information(Type and Extdata) to Miniscript based …","","Parse a Miniscript from string and perform sanity checks …","Attempt to parse an Miniscripts that don’t follow the …","Attempt to parse an insane(scripts don’t clear sanity …","Parse an expression tree into a descriptor.","Parse an expression tree into a Miniscript. As a general …","","","","","","","Returns child node with given index, if any","Returns <code>Option::Some</code> with cloned n’th public key from …","Returns satisfying non-malleable witness and scriptSig to …","Returns a possilbly mallable satisfying non-malleable …","Whether the miniscript contains a combination of timelocks","Whether the miniscript has repeated Pk or Pkh","Whether or not the descriptor has any wildcards i.e. <code>/*</code>.","","","","","","","","","","","","","","","","","","","Extracts the <code>AstElem</code> representing the root of the …","Convert to wallet descriptor","Whether or not the descriptor has any wildcards","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","","","Lifting corresponds conversion of miniscript into Policy […","Compares this key with a <code>keysource</code> and returns the …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","Local helper function to display error messages with …","","","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold <code>k</code> …","Create a new sh wrapper for the given wpkh descriptor","Create a new sh wrapper for the given wsh descriptor","Create a new sh wrapped wpkh from <code>Pk</code>. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create new tr descriptor Errors when miniscript exceeds …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the Abstract Syntax Tree(","Origin information","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation.","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","Attempt to parse an miniscript with extra features that …","","","","","","","Get the len of public key when serialized based on context …","","","Descriptor policy","Whether all spend paths of miniscript require a signature","Checks whether the descriptor is safe.","Check whether the underlying Miniscript is safe under the …","Attempts to produce a non-malleable satisfying witness and …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Computes the <code>scriptCode</code> of a transaction output.","Computes the scriptpubkey of the descriptor.","Size, in bytes of the script-pubkey. If this Miniscript is …","","","The type of signature required for satisfaction","","","Descriptor templates","","","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Converts a descriptor using abstract keys to one using …","Translates a struct from one generic to another where the …","","","","","","","","","","","","","The correctness and malleability type information for the …","","","","","","","Computes the scriptSig that will be in place for an …","","","","","","","Whether the descriptor is wildcard","Whether the miniscript can exceed the resource …","The extended key","","","","","","","","","Compute the checksum of a descriptor, excludes any …","Compute the checksum bytes of a descriptor, excludes any …","Compute the checksum of a descriptor","Compute the checksum bytes of a descriptor","Error during base58 decoding","BIP32 error","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid byte found in the descriptor checksum","The provided descriptor doesn’t match its checksum","Invalid HD Key path, such as having a wildcard but a …","Error thrown while working with <code>keys</code>","Miniscript error","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Absolute timeclock timestamp","Can not add to an item that is <code>Satisfaction::None</code> or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of <code>Condition</code> items keyed by each set…","ECDSA Signature for a raw public key","An extended key fingerprint","Type for a map of folded sets of <code>Condition</code> items keyed by …","SHA256 then RIPEMD160 preimage hash","Double SHA256 preimage hash","Incompatible conditions (not currently used)","Index out of range for an item to satisfy a …","Can not merge CSV or timelock values unless both are less …","Multi-signature public keys with threshold count","Cannot satisfy or contribute to the policy item","Don’t generate <code>satisfaction</code> field","Not enough items are selected to satisfy a …","Only a partial satisfaction of some kind of threshold …","Can reach the threshold of some kind of threshold policy","A unique identifier for a key","Descriptor spending policy","Errors that can happen while extracting and manipulating …","Analyze the given PSBT to check for existing signatures","Like <code>Psbt</code> variant and also check for expired timelocks","A legacy public key","Relative timelock locktime","RIPEMD160 preimage hash","Represent if and how much a policy item is satisfied by …","An item that needs to be satisfied","Schnorr Signature for a raw public key","SHA256 preimage hash","Threshold items with threshold count","A x-only public key","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the conditions that are set by the spending policy …","","","","","Returns a unique id for the <code>SatisfiableItem</code>","Identifier for this policy node","","","","","","","","","","","","","","","Returns whether the <code>SatisfiableItem</code> is a leaf item","Returns whether the <code>Satisfaction</code> is a leaf item","Returns <code>true</code> if there are no extra conditions to verify","Type of this policy node","","","","","","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","","","","","","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","","","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The timelock value","The timelock value","","","","","","","","","","","","","","","","","","","BIP44 template. Expands to <code>pkh(key/44'/{0,1}'/0'/{0,1}/*)</code>","BIP44 public template. Expands to <code>pkh(key/{0,1}/*)</code>","BIP49 template. Expands to …","BIP49 public template. Expands to <code>sh(wpkh(key/{0,1}/*))</code>","BIP84 template. Expands to <code>wpkh(key/84'/{0,1}'/0'/{0,1}/*)</code>","BIP84 public template. Expands to <code>wpkh(key/{0,1}/*)</code>","Trait for descriptor templates that can be built into a …","Type alias for the return type of <code>DescriptorTemplate</code>, …","P2PKH template. Expands to a descriptor <code>pkh(key)</code>","P2WPKH template. Expands to a descriptor <code>wpkh(key)</code>","P2WPKH-P2SH template. Expands to a descriptor <code>sh(wpkh(key))</code>","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The descriptor pubkey, either a single pubkey or an xpub.","The descriptor secret key, either a single private key or …","Type specifying the amount of entropy required e.g. <code>[u8;32]</code>","Returned error in case of failure","Trait that adds extra useful methods to <code>ScriptContext</code>s","Enum for extended keys that can be either <code>xprv</code> or <code>xpub</code>","A bitcoin public key (compressed or uncompressed).","Trait that allows generating a key with the default options","Trait for keys that can be generated","Output of a <code>GeneratableKey</code> key generation","Trait for objects that can be turned into a public or …","The key has an invalid checksum","The key is not valid for the given network","The key cannot exist in the given script context","The consensus key associated with the type. Must be a …","Errors thrown while working with <code>keys</code>","Alias type for a map of public key to secret key","Legacy scripts","Custom error message","Miniscript error","Extra options required by the <code>generate_with_entropy</code>","A private extended key, aka an <code>xprv</code>","Options for generating a <code>PrivateKey</code>","A public extended key, aka an <code>xpub</code>","The ScriptContext for Miniscript. Additional type …","Enum representation of the known valid <code>ScriptContext</code>s","Segwitv0 scripts","Single public key.","Single private key.","A descriptor <code>bitcoin::PrivateKey</code> with optional origin …","A descriptor <code>SinglePubKey</code> with optional origin information.","Single public key without any origin or range information.","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","An xonly public key.","Extended private key (xpriv).","Extended public key (xpub).","Create a set containing mainnet, testnet and regtest","Returns the <code>ScriptContext</code> as a <code>ScriptContextEnum</code>","Replaces any wildcard (i.e. <code>/*</code>) in the key with a …","BIP-0039","","","","","","","","","","","","","","","","","","","","","","","","","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","","","","","","","","","","","","","","","","","","","","","","","","","Deprecated name of [<code>at_derivation_index</code>].","","","","","","","","","","","","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","","","","","Return whether or not the key contains the private data","Whether or not the key has a wildcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Turn the key into a <code>DescriptorKey</code> within the requested …","Consume <code>self</code> and turn it into a <code>DescriptorKey</code> by adding …","","","","","","Consume <code>self</code> and turn it into an <code>ExtendedKey</code>","","","Consumes <code>self</code> and returns the key","Transform the <code>ExtendedKey</code> into an <code>ExtendedPrivKey</code> for the …","Transform the <code>ExtendedKey</code> into an <code>ExtendedPubKey</code> for the …","Whether or not the key has a wildcard","Returns whether the script context is <code>Legacy</code>","Returns whether the script context is …","Returns whether the script context is <code>Segwitv0</code>","Returns whether the script context is …","Returns whether the script context is <code>Tap</code>, aka Taproot or …","Returns whether the script context is …","","","signatures required","The public key.","The private key.","","Create a set only containing mainnet","The fingerprint of the master key associated with this …","Depending on script context, the size of a satifaction …","Maximum size, in bytes, of a satisfying witness. In …","Maximum number of witness elements used to satisfy the …","Compute the intersection of two sets","Local helper function to display error messages with …","","","","","Create a new instance of <code>SortedMultiVec</code> given a list of …","Origin information (fingerprint and derivation path).","Origin information (fingerprint and derivation path).","Other top level checks that are context specific","Override the computed set of valid networks","","","","","Get the len of public key when serialized based on context …","public keys inside sorted Multi","utility function to sanity a sorted multi vec","Attempt to produce a satisfying witness for the witness …","Size, in bytes of the script-pubkey. If this Miniscript is …","The type of signature required for satisfaction","Create Terminal::Multi containing sorted pubkeys","Create a set containing testnet and regtest","","","","","","","","Returns the public version of this key.","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if fpk returns an uncompressed key when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The mnemonic can be interpreted as multiple languages. Use …","Entropy was not a multiple of 32 bits or between 128-256n …","Mnemonic has a word count that is not a multiple of 6.","The English language.","A BIP39 error.","The mnemonic has an invalid checksum.","Language to be used for the mnemonic phrase.","A mnemonic code.","Type for a BIP39 mnemonic with an optional passphrase","Mnemonic contains an unknown word. Error contains the …","Type describing entropy length (aka word count) in the …","12 words mnemonic (128 bits entropy)","15 words mnemonic (160 bits entropy)","18 words mnemonic (192 bits entropy)","21 words mnemonic (224 bits entropy)","24 words mnemonic (256 bits entropy)","The list of supported languages. Language support is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new English Mnemonic from the given entropy. …","Create a new Mnemonic in the specified language from the …","","Generate a new Mnemonic in the given language with the …","","","","","","","","","","","","","","","","Get the language of the Mnemonic.","Determine the language of the mnemonic.","","","Parse a mnemonic and detect the language from the enabled …","Parse a mnemonic in the given language.","Parse a mnemonic in normalized UTF8 in the given language.","Parse a mnemonic in normalized UTF8.","","","","Convert the mnemonic back to the entropy used to generate …","Convert the mnemonic back to the entropy used to generate …","","","","Convert to seed bytes.","Convert to seed bytes with a passphrase in normalized UTF8.","","","","","","","","","","","","","","","","","","","","Get the number of words in the mnemonic.","Get an iterator over the words.","Get words from the word list that start with the given …","","","","","Trait to add functions to extract utxos and calculate fees.","The total transaction fee amount, sum of input amounts …","The transaction’s fee rate. This value will only be …","Get the <code>TxOut</code> for the specified input index, if it doesn’…","The address index selection strategy to use to derived an …","A derived address and the index it was found at For …","Trait to check if a value is below the dust limit. We are …","Return the address for the current descriptor index if it …","Return a new address after incrementing the current …","Return the address for a specific descriptor index. Does …","Return the address for a specific descriptor index and …","Options to a <code>sync</code>.","A Bitcoin wallet","Add an external signer","Address","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Coin selection","Return an immutable reference to the internal database","","","","","","","","","","","Return the checksum of the public descriptor associated to …","","","","","Ensures that there are at least <code>max_addresses</code> addresses …","","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","","","","","Return a derived address using the external descriptor, …","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","Return a fake wallet that appears to be funded for testing.","Return a derived address using the internal (change) …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Return a single transactions made and received by the …","Returns the <code>UTXO</code> owned by this wallet corresponding to …","HWI Signer","Child index of this address","","","","","","","","","Check whether or not a value is below dust limit","Return whether or not a <code>script</code> is part of this wallet …","Type of keychain","Return an unsorted list of transactions made and received …","Return the list of unspent outputs of this wallet","","Get the Bitcoin network the wallet is using.","Create a wallet.","Create a new “offline” wallet","Return the spending policies for the wallet’s descriptor","The progress tracker which may be informed when progress …","Return the “public” version of the wallet’s …","Return the secp256k1 context used for all signing …","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Sync the internal database with the blockchain","Cross-platform time","","","","","","","","","","Transaction builder","","","","","Verify transactions against the consensus rules","","","","","Deterministically generate a unique name given the …","","","Branch and bound coin selection","It’s possible to create spendable output from excess …","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by <code>TxBuilder</code> if not …","Remaining amount after performing coin selection","Simple and dumb coin selection","It’s not possible to create spendable output from excess …","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","","","Perform the coin selection","","","","Decide if change can be created","","","","","","","","","","","","","","","","","","","Remaining amount after deducing fees and outgoing outputs","Total fee amount for the selected utxos in satoshis","","","","","","","","","","","","","","","","","","","","","The total value of the inputs selected from the local …","Create new instance with target size for change output","List of outputs selected for use as inputs","The total value of the inputs selected.","","","","","","","","","","","","","","","","","","","","","","","Effective amount available to create change after …","The calculated fee for the drain TxOut with the selected …","Threshold to consider amount as dust for this particular …","The deducted change output fee","Exceeding amount of current selection over outgoing value …","Structure that contains the export of a wallet","Alias for <code>FullyNodedExport</code>","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","","","Return the external descriptor","","","Export a wallet","","","","","","Arbitrary label for the wallet","","","","","","","Custom signer for Hardware Wallets","","","","","","","","Create a instance from the specified device and chain","","","","","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","The fingerprint of a BIP32 extended key","Error while signing using hardware wallets","The signer won’t sign leaves other than the ones …","Input index is out of range","PSBT Input signer","The private key in use has the right fingerprint but …","The <code>non_witness_utxo</code> specified is invalid","Invalid SIGHASH for the signing context in use","Legacy context","The fingerprint and derivation path are missing from the …","The private key is missing for the required public key","The <code>non_witness_utxo</code> field of the transaction is required …","The <code>witness_script</code> field of the transaction is required to …","The <code>witness_utxo</code> field of the transaction is required to …","The psbt contains a non-<code>SIGHASH_ALL</code> sighash in one of its …","The signer won’t sign any leaf.","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Segwit v0 context (BIP 143)","Error while computing the hash to sign","Options for a software signer","Common signer methods","Signing context","Signing error","Identifier of a signer in the <code>SignersContainers</code>. Used as a …","Defines the order in which signers are called","Wrapper structure to pair a signer with its context","Container for multiple signers","Taproot context (BIP 340)","Customize which taproot script-path leaves the signer …","PSBT signer","The user canceled the operation","Adds an external signer to the container for the specified …","Whether the signer should use the <code>sighash_type</code> set in the …","Whether we should grind ECDSA signature to ensure signing …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","Build a new signer container from a <code>KeyMap</code>","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","","","","","","","","","","","","","","","Return the <code>SignerId</code> for this signer","","","Returns the list of identifiers of all the signers in the …","","","","","","","","","","","","","","","","","","","","","","Create a wrapped signer from a signer and a context","Default constructor","","","Removes a signer from the container and returns it","Whether to remove partial signatures from the PSBT inputs …","Sign a single psbt input","","","Sign all the inputs of the psbt","","Whether we should try to sign a taproot transaction with …","Returns the list of signers in the container, sorted by …","Specifies which Taproot script-spend leaves we should sign …","","","","","","","","","","Whether the signer should trust the <code>witness_utxo</code>, if the …","Whether to try finalizing the PSBT after the inputs are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the signer can sign for the internal key or not","","","","","","","","Return the current timestamp in seconds","BIP69 / Lexicographic","Marker type to indicate the <code>TxBuilder</code> is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the <code>TxBuilder</code> is being used to …","Only use change outputs (see <code>TxBuilder::only_spend_change</code>)","Randomized (default)","A transaction builder","Context in which the <code>TxBuilder</code> is valid","Ordering of the transaction’s inputs and outputs","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Fill-in the <code>PSBT_GLOBAL_XPUB</code> field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that <strong>must</strong> be spent","Add the list of outpoints to the internal list of UTXOs …","Set whether or not the dust limit is checked.","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","Set a specific <code>ChangeSpendPolicy</code>. See …","","","","","","","","","","","","","Choose the coin selection algorithm","Set the current blockchain height.","","","","","","","","","","","","","","","Do not spend change outputs","Sets the address to <em>drain</em> excess coins to.","Spend all the available inputs. This respects filters like …","","","","","","Enable signaling RBF","Enable signaling RBF with a specific nSequence value","","","Set an absolute fee","Set a custom fee rate","Finish building the transaction.","","","","","","","","","","","","","","","Fill-in the <code>psbt::Output::redeem_script</code> and …","","","","","","","","","","","Only spend utxos added by <code>add_utxo</code>.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the <code>psbt::Input::witness_utxo</code> field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by <code>TxOrdering</code> variant","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","","","Consensus error","Generic error","The transaction being spent doesn’t have the requested …","The transaction being spent is not available in the …","Error during validation of a tx agains the consensus rules","","","","","","","","","","","","","","","","","Verify a transaction against the consensus rules","","","","",""],"i":[0,1,0,1,1,1,1,0,1,1,1,0,1,2,0,1,1,1,3,1,1,1,2,1,1,1,1,1,1,1,1,0,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,4,2,2,5,2,0,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,2,2,5,6,7,3,8,9,4,2,5,6,7,3,8,9,4,8,4,0,5,9,4,5,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,0,0,2,6,8,9,4,1,2,5,6,7,3,8,9,4,2,5,6,7,3,8,9,4,8,5,5,1,1,2,5,6,7,3,8,9,4,4,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,5,6,7,3,8,9,9,4,5,5,5,5,5,5,2,6,4,4,2,6,9,4,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,10,10,11,12,6,6,0,5,6,7,3,8,9,4,9,3,6,5,0,8,7,8,2,6,8,9,4,5,4,9,2,5,6,7,3,8,9,4,1,4,8,4,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,8,3,6,1,2,5,6,7,3,8,9,4,4,7,13,0,1,2,5,6,7,3,8,9,4,0,2,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,42,43,44,45,46,47,47,48,0,0,0,49,0,0,48,48,0,0,0,50,0,0,0,0,0,0,0,48,51,52,48,51,52,53,50,50,48,51,52,48,51,52,0,51,52,48,51,52,48,51,52,48,51,52,0,48,0,53,48,51,52,48,51,52,49,54,53,48,55,56,48,48,51,52,48,51,52,0,0,0,0,50,48,51,52,48,51,52,48,51,52,48,51,52,57,51,52,48,51,52,58,58,0,0,59,60,59,60,59,60,59,60,59,60,59,60,59,60,60,59,60,59,60,60,59,60,60,59,60,59,59,59,59,59,60,60,60,60,60,59,59,59,59,59,59,60,59,60,60,60,60,59,60,59,60,59,60,59,60,59,59,61,62,63,64,65,66,67,68,69,0,69,0,0,0,69,69,69,69,69,69,69,69,0,69,69,69,0,69,69,69,70,71,70,72,73,71,74,69,70,72,73,71,74,69,73,71,74,71,74,72,72,70,70,72,73,71,74,69,70,72,73,71,74,69,71,74,70,72,73,71,74,69,71,74,73,70,72,73,71,74,69,69,70,72,73,71,74,69,69,69,69,69,69,73,73,73,73,72,72,70,73,72,70,70,72,73,71,74,69,70,72,73,71,74,69,72,70,71,74,74,70,73,74,72,72,71,74,74,71,71,74,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,73,75,76,77,78,79,0,0,80,81,80,81,80,81,81,80,80,81,80,81,81,80,81,81,80,81,80,80,81,80,80,80,80,80,80,81,80,81,81,81,81,81,81,81,81,80,81,80,81,80,81,81,80,81,80,82,0,0,0,82,82,82,82,82,82,82,82,82,82,83,82,84,83,82,84,83,84,83,83,83,82,84,84,83,82,84,83,83,82,84,83,83,84,82,82,84,83,82,82,82,82,82,82,82,84,83,84,84,84,84,84,84,82,84,83,82,84,83,83,84,83,83,83,83,83,83,82,82,84,83,82,84,83,82,84,83,82,84,83,84,84,85,86,87,88,89,90,91,92,93,94,0,95,95,0,0,0,0,95,96,97,98,96,99,95,97,98,96,99,95,97,98,97,96,99,95,97,96,99,95,97,95,99,97,98,98,96,99,95,97,98,96,99,95,97,96,99,95,98,96,99,95,97,96,99,95,98,98,96,99,95,97,99,98,96,99,95,97,98,98,98,95,98,98,95,98,96,99,95,97,98,96,99,95,97,96,99,95,96,97,95,99,96,99,95,99,99,96,97,96,99,95,97,98,96,99,95,97,98,96,99,95,97,98,96,99,95,97,96,97,98,96,99,95,97,96,97,98,100,101,101,102,0,0,103,0,0,0,0,0,102,104,105,104,105,104,105,106,104,105,105,102,104,104,107,104,107,104,107,104,107,104,107,104,107,104,107,104,104,105,104,105,105,104,105,104,105,104,105,103,104,106,104,106,104,106,104,106,104,106,104,106,104,106,104,106,104,104,105,104,105,106,104,106,104,106,104,106,104,0,104,104,105,107,104,107,104,107,104,107,104,107,104,107,104,105,104,105,104,105,104,105,104,105,0,0,0,108,109,110,108,109,110,0,108,109,110,0,109,108,109,111,112,110,108,109,111,112,110,109,109,108,109,108,109,108,109,108,109,108,109,108,109,108,109,108,109,111,112,110,108,109,111,112,110,111,112,110,108,109,111,112,110,109,111,112,110,108,108,108,108,109,109,109,109,111,112,110,110,110,110,109,109,109,109,109,109,109,109,109,108,109,111,112,110,108,109,111,112,110,109,109,109,109,111,112,111,112,110,108,109,108,109,108,109,108,109,108,109,108,109,111,108,109,111,112,110,108,109,111,112,110,108,109,111,112,110,108,109,111,112,110,113,114,115,116,117,118,119,120,121,0,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,123,0,0,0,0,0,0,124,0,0,125,0,0,0,124,123,0,0,123,126,0,123,124,0,123,123,126,123,127,128,129,123,130,124,123,127,128,129,130,124,123,127,128,129,129,125,127,128,125,128,125,125,127,128,125,127,128,125,125,127,128,125,127,128,0,130,124,123,127,128,129,130,124,123,127,128,129,130,124,123,127,128,129,129,130,124,123,127,128,129,130,124,123,127,128,129,130,123,123,123,123,123,129,130,124,123,127,128,129,129,130,124,123,127,128,129,0,123,129,129,131,123,129,123,130,124,123,123,127,128,129,129,123,129,130,124,123,123,123,123,123,123,123,127,128,129,129,123,129,129,129,123,129,130,124,123,127,128,129,129,129,123,123,129,129,123,130,124,123,127,128,129,130,124,123,127,128,129,130,124,123,127,128,129,129,132,123,129,129,129,123,129,129,130,125,127,128,129,123,129,125,127,128,130,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,129,130,125,129,123,129,129,130,124,123,127,128,129,125,127,128,0,129,123,129,123,129,129,123,123,129,123,129,125,127,128,0,130,124,123,127,128,129,123,129,123,125,125,123,129,130,124,123,127,128,129,130,124,123,127,128,129,129,130,124,123,127,128,129,123,130,124,123,127,128,129,130,129,130,133,134,135,136,137,138,139,140,0,0,0,0,141,141,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,142,143,144,145,146,147,148,149,150,151,151,0,152,0,0,150,153,0,150,150,151,151,151,150,152,154,151,152,152,0,0,0,154,154,153,150,150,0,0,150,150,150,153,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,154,153,150,152,155,156,154,155,156,156,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,153,150,152,155,156,151,151,154,153,150,152,152,155,155,156,151,154,155,153,156,153,156,150,155,153,150,152,155,156,151,154,153,150,152,155,156,151,154,150,152,156,155,153,150,152,155,156,151,156,155,155,153,150,152,155,156,156,153,150,152,155,156,154,151,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,154,157,158,158,158,159,160,161,162,163,164,165,166,165,166,165,166,165,166,165,166,167,168,169,170,171,172,173,174,174,173,175,176,177,178,179,180,181,182,183,184,185,180,181,182,183,184,185,181,183,185,0,0,0,0,0,0,0,0,0,0,0,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,186,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,187,0,0,0,0,188,188,0,0,189,0,0,0,0,187,187,187,125,0,0,190,187,187,188,191,0,191,0,0,190,126,192,0,0,0,0,190,0,189,192,126,0,193,126,0,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,125,125,125,125,125,125,125,125,194,195,126,196,189,190,199,194,195,126,196,189,190,199,195,126,196,189,199,199,191,194,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,126,191,194,195,126,192,196,197,189,198,190,199,187,195,195,126,196,189,190,195,195,126,126,192,192,196,197,189,198,190,199,187,187,195,191,191,191,194,195,126,126,192,196,197,189,198,190,199,187,187,187,198,198,126,192,195,126,188,200,188,200,195,126,196,189,191,126,195,126,196,189,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,201,202,194,194,126,192,198,202,191,194,194,191,191,126,193,190,193,190,193,190,126,126,195,196,197,195,0,126,125,195,195,0,125,195,126,196,189,195,196,197,125,198,195,126,196,189,125,195,195,195,195,125,195,0,194,195,126,196,189,190,199,192,195,126,192,187,125,125,195,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,139,140,203,204,205,206,207,208,209,210,211,212,212,212,213,0,212,0,0,0,212,0,214,214,214,214,214,213,213,212,215,214,213,212,215,214,213,212,215,213,212,215,213,215,213,212,215,214,213,212,215,214,215,213,212,215,214,213,212,215,213,213,212,212,215,215,213,212,215,214,215,215,215,215,215,213,215,213,215,213,212,215,214,213,212,215,214,215,215,215,215,212,215,215,215,215,215,213,215,215,215,215,213,212,215,215,215,213,212,215,213,212,215,214,213,212,215,214,213,212,215,214,213,212,215,214,215,215,213,216,217,218,219,0,220,220,220,0,0,0,221,221,221,221,0,0,222,223,222,221,223,224,222,221,223,224,222,222,0,222,224,222,221,223,223,224,222,221,223,224,222,222,221,223,224,222,223,0,222,222,221,223,223,224,222,221,223,224,222,222,222,0,222,222,222,222,222,0,223,222,221,223,224,222,221,223,224,225,222,223,222,222,223,222,222,222,222,224,222,222,222,0,222,0,223,222,221,223,224,222,221,223,224,0,222,221,223,224,0,222,221,223,224,0,226,227,0,228,0,0,0,0,0,228,0,228,229,230,231,232,228,229,230,231,232,230,231,230,231,233,230,231,232,0,230,231,232,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,229,229,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,229,232,229,229,230,231,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,234,235,235,234,235,0,0,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,0,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,238,239,240,239,240,241,239,241,0,241,241,241,242,241,241,241,241,241,241,239,240,242,241,0,0,0,0,0,0,0,0,242,0,0,241,243,244,244,243,244,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,243,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,238,238,243,244,239,240,241,242,245,245,238,243,244,239,240,241,242,245,238,243,244,239,246,245,245,240,241,242,245,238,243,244,239,240,241,242,238,239,243,240,241,241,242,245,238,243,244,239,240,240,240,241,241,241,242,245,238,243,244,239,240,240,246,245,245,243,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,241,242,238,239,245,243,240,238,243,244,247,245,245,248,245,244,243,244,240,241,242,245,238,243,244,239,241,244,244,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,249,250,251,252,253,254,255,256,0,257,0,258,258,0,0,258,257,0,0,0,257,259,259,259,259,259,259,259,259,259,260,261,259,257,258,260,261,259,257,258,259,260,261,259,257,258,260,261,259,257,258,257,258,259,259,260,261,257,258,260,261,259,257,258,260,261,259,257,258,259,259,259,260,261,259,257,258,259,259,257,258,259,259,259,260,261,259,257,258,260,261,259,257,258,257,258,257,258,259,260,261,259,257,258,260,261,259,257,258,259,259,259,259,259,257,258,259,259,259,257,260,261,259,257,258,260,261,259,257,258,260,261,259,257,258,260,261,259,257,258,259,259,260,261,259,257,258,262,262,262,262,0,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,0,262,263,264,265,266],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[],["u8",15]],[[]],[[],["f32",15]],[[],["usize",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["u5",3],["global",3]]]]]],[[],["keychainkind",4]],[[],["feerate",3]],[[],["localutxo",3]],[[],["weightedutxo",3]],[[],["utxo",4]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[],["balance",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[]],[[],["blocktime",3]],[[],["balance",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["bool",15]],[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["balance",3]],["bool",15]],null,[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["esploraerror",4]]],[[["verifyerror",4]]],[[["error",4]]],[[["error",4]]],[[["psbtparseerror",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",3]]],[[["compactfilterserror",4]]],[[["error",4]]],[[["error",4]]],[[]],[[["policyerror",4]]],[[["error",4]]],[[["keyerror",4]],["error",4]],[[["signererror",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["blocktime",3]]],[[]],[[["f32",15]]],[[["f32",15]]],[[["f32",15]]],[[["f32",15]]],[[["u64",15],["usize",15]],["feerate",3]],[[["u64",15],["usize",15]],["feerate",3]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],null,null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],null,null,null,[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["balance",3]],["bool",15]],[[["option",4,[["u32",15]]],["option",4,[["u64",15]]]],["option",4]],[[],["outpoint",3]],null,[[["feerate",3]],["option",4,[["ordering",4]]]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["feerate",3]]],[[["iterator",8]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["txout",3]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[],["usize",15]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[["wallet",3],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["capability",4]],[[],["noopprogress",3]],[[],["logprogress",3]],[[]],[[]],[[]],null,[[],["noopprogress",3]],[[],["logprogress",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["capability",4]],["bool",15]],null,[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["logprogress",3]],[[],["noopprogress",3]],[[]],null,[[["wallet",3],["option",4,[["u32",15]]],["syncoptions",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["anyblockchainconfig",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["anyblockchainconfig",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["electrumblockchain",3]]],[[["esplorablockchain",3]]],[[]],[[["rpcblockchain",3]]],[[["compactfiltersblockchain",3]]],[[["compactfiltersblockchainconfig",3]]],[[["esplorablockchainconfig",3]]],[[]],[[["electrumblockchainconfig",3]]],[[["rpcconfig",3]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["anyblockchainconfig",4]],["bool",15]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["transaction",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["bitcoinpeerconfig",3]],[[],["compactfiltersblockchainconfig",3]],[[]],[[]],[[["tosocketaddrs",8],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[["totargetaddr",8],["tosocketaddrs",8],["option",4],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[],["mempool",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["error",3]]],[[["systemtimeerror",3]]],[[]],[[["error",4]]],[[["error",3]]],[[["error",4]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[],["arc",3,[["mempool",3]]]],[[],["network",4]],[[["inventory",4]],["option",4,[["transaction",3]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["versionmessage",3]],[[["txid",3]],["bool",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["vec",3,[["transaction",3]]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],null,[[]],[[["vec",3,[["peer",3]]],["asref",8,[["path",3]]],["option",4,[["usize",15]]]],["result",4,[["compactfilterserror",4]]]],null,[[["str",15],["option",4,[["duration",3]]]],["result",4,[["option",4,[["networkmessage",4]]],["compactfilterserror",4]]]],[[["networkmessage",4]],["result",4,[["compactfilterserror",4]]]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["electrumblockchainconfig",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["electrumblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["client",3]]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["electrumblockchainconfig",3]],["bool",15]],null,[[],["result",4]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["esplorablockchainconfig",3]],[[]],null,[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["esplorablockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["transport",3]],["error",4]],[[["error",3]],["error",4]],[[]],[[["parseinterror",3]],["error",4]],[[["error",4]],["error",4]],[[["error",4]],["error",4]],[[["error",4]],["error",4]],[[]],[[]],[[["blockingclient",3],["usize",15]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[["esplorablockchainconfig",3]],["bool",15]],[[["str",15],["usize",15]]],[[["string",3],["usize",15]]],null,[[],["result",4]],null,null,[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["u8",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["rpcconfig",3]],[[],["rpcsyncparams",3]],[[],["auth",4]],[[],["rpcblockchainfactory",3]],[[]],[[]],[[]],[[]],[[["auth",4]],["ordering",4]],[[]],null,[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["rpcconfig",3]],["bool",15]],[[["rpcsyncparams",3]],["bool",15]],[[["auth",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[["rpcconfig",3]],["bool",15]],[[["rpcsyncparams",3]],["bool",15]],[[["auth",4]],["bool",15]],null,null,[[["auth",4]],["option",4,[["ordering",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],[[]],null,null,[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["synctime",3]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,[[["asref",8,[["path",3]]]]],null,[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["sqlitedatabase",3]]],[[]],[[["memorydatabase",3]]],[[["tree",3]]],[[]],[[]],[[["sleddbconfiguration",3]]],[[]],[[["sqlitedbconfiguration",3]]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["memorydatabase",3]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["network",4]],["result",4,[["address",3],["error",4]]]],[[],["scriptcontextenum",4]],[[],["scriptcontextenum",4]],[[],["terminal",4]],[[["u32",15]],["descriptor",4,[["definitedescriptorkey",3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["vec",3,[["miniscript",3],["global",3]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],null,[[],["descriptorxkey",3]],[[],["wildcard",4]],[[],["descriptor",4]],[[],["legacy",4]],[[],["segwitv0",4]],[[],["miniscript",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["descriptorxkey",3]],["ordering",4]],[[["wildcard",4]],["ordering",4]],[[["descriptor",4]],["ordering",4]],[[["legacy",4]],["ordering",4]],[[["segwitv0",4]],["ordering",4]],[[["miniscript",3]],["ordering",4]],[[],["bool",15]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["u32",15]],["descriptor",4,[["definitedescriptorkey",3]]]],[[["secp256k1",3]],["result",4,[["descriptor",4,[["publickey",3]]],["conversionerror",4]]]],[[["secp256k1",3],["u32",15]],["result",4,[["descriptor",4,[["publickey",3]]],["conversionerror",4]]]],[[],["descriptortype",4]],[[],["result",4,[["descriptor",4]]]],[[],["result",4,[["miniscript",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["descriptorxkey",3]],["bool",15]],[[["wildcard",4]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["legacy",4]],["bool",15]],[[["segwitv0",4]],["bool",15]],[[["miniscript",3]],["bool",15]],null,[[],["result",4,[["script",3],["error",4]]]],null,[[["extparams",3]],["result",4,[["analysiserror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["descriptorerror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["secp256k1",3],["script",3],["range",3,[["u32",15]]]],["result",4,[["option",4],["conversionerror",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[["wsh",3]],["descriptor",4]],[[]],[[["bare",3]],["descriptor",4]],[[["wpkh",3]],["descriptor",4]],[[["sh",3]],["descriptor",4]],[[["pkh",3]],["descriptor",4]],[[["tr",3]],["descriptor",4]],[[]],[[]],[[]],[[["terminal",4]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["descriptor",4],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15],["extparams",3]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["tree",3]],["result",4,[["descriptor",4],["error",4]]]],[[["tree",3]],["result",4,[["miniscript",3],["error",4]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[["usize",15]],["option",4,[["miniscript",3]]]],[[["usize",15]],["option",4]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["terminal",4]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["pkiter",3]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["lifterror",4]]]],[[["secp256k1",3]],["option",4,[["derivationpath",3]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["str",15]],[[],["str",15]],[[],["str",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["miniscript",3,[["barectx",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["descriptor",4]],[[],["descriptor",4]],[[["miniscript",3,[["legacy",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["wpkh",3]],["descriptor",4]],[[["wsh",3]],["descriptor",4]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["option",4,[["taptree",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["secp256k1",3],["str",15]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["script",3],["extparams",3]],["result",4,[["miniscript",3],["error",4]]]],[[["descriptorxkey",3]],["option",4,[["ordering",4]]]],[[["wildcard",4]],["option",4,[["ordering",4]]]],[[["descriptor",4]],["option",4,[["ordering",4]]]],[[["legacy",4]],["option",4,[["ordering",4]]]],[[["segwitv0",4]],["option",4,[["ordering",4]]]],[[["miniscript",3]],["option",4,[["ordering",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],null,[[],["bool",15]],[[],["result",4,[["error",4]]]],[[],["result",4,[["analysiserror",4]]]],[[["txin",3]],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["script",3],["error",4]]]],[[],["script",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["sigtype",4]],[[],["sigtype",4]],[[],["sigtype",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[["hashmap",3]],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["script",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[["str",15]],["result",4,[["string",3],["descriptorerror",4]]]],[[["str",15]],["result",4,[["descriptorerror",4]]]],[[["str",15]],["result",4,[["string",3],["descriptorerror",4]]]],[[["str",15]],["result",4,[["descriptorerror",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[]],[[["error",4]]],[[["policyerror",4]]],[[["error",4]]],[[["keyerror",4]],["error",4]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["pkorf",4]],[[],["satisfiableitem",4]],[[],["satisfaction",4]],[[],["policy",3]],[[],["condition",3]],[[],["buildsatisfaction",4]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["condition",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["pkorf",4]],["bool",15]],[[["satisfiableitem",4]],["bool",15]],[[["satisfaction",4]],["bool",15]],[[["policy",3]],["bool",15]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["bool",15]]],[[]],[[["satisfiableitem",4]]],[[]],[[]],[[]],[[["btreemap",3]],["result",4,[["condition",3],["policyerror",4]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["string",3]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,[[["pkorf",4]],["bool",15]],[[["satisfiableitem",4]],["bool",15]],[[["satisfaction",4]],["bool",15]],[[["policy",3]],["bool",15]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["condition",3]],["option",4,[["ordering",4]]]],[[],["bool",15]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["validnetworks",6]],[[],["scriptcontextenum",4]],[[["u32",15]],["definitedescriptorkey",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["generatedkey",3]],[[],["sortedmultivec",3]],[[],["descriptorpublickey",4]],[[],["singlepub",3]],[[],["singlepubkey",4]],[[],["scriptcontextenum",4]],[[],["privatekeygenerateoptions",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["sortedmultivec",3]],["ordering",4]],[[["descriptorpublickey",4]],["ordering",4]],[[["singlepub",3]],["ordering",4]],[[["singlepubkey",4]],["ordering",4]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["definitedescriptorkey",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["sortedmultivec",3]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["singlepub",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["scriptcontextenum",4]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],["bool",15]],[[["extendedpubkey",3]]],[[]],[[["extendedprivkey",3]]],[[]],[[]],[[]],[[["definitedescriptorkey",3]],["descriptorpublickey",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",4]]],[[["error",4]]],[[]],[[["descriptorpublickey",4],["validnetworks",6]]],[[["descriptorsecretkey",4],["validnetworks",6]]],[[["str",15]],["result",4,[["descriptorpublickey",4]]]],[[["str",15]],["result",4,[["descriptorsecretkey",4]]]],[[["tree",3]],["result",4,[["sortedmultivec",3],["error",4]]]],[[],["derivationpath",3]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[]],[[["network",4]],["option",4,[["extendedprivkey",3]]]],[[["network",4],["secp256k1",3]],["extendedpubkey",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,[[],["result",4,[["policy",4],["error",4]]]],[[],["validnetworks",6]],[[],["fingerprint",3]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["usize",15]],[[],["usize",15]],[[["validnetworks",6],["validnetworks",6]],["validnetworks",6]],[[],["str",15]],[[["sortedmultivec",3]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["singlepub",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["sortedmultivec",3],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["validnetworks",6]]],[[["sortedmultivec",3]],["option",4,[["ordering",4]]]],[[["descriptorpublickey",4]],["option",4,[["ordering",4]]]],[[["singlepub",3]],["option",4,[["ordering",4]]]],[[["singlepubkey",4]],["option",4,[["ordering",4]]]],[[],["usize",15]],null,[[],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["usize",15]],[[],["sigtype",4]],[[],["terminal",4]],[[],["validnetworks",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3]],["result",4,[["descriptorpublickey",4],["descriptorkeyparseerror",3]]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["sortedmultivec",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["language",4]],[[],["error",4]],[[],["mnemonic",3]],[[]],[[]],[[]],[[["language",4]],["ordering",4]],[[["mnemonic",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["mnemonic",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["language",4]],["bool",15]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["usize",15]],["result",4,[["mnemonic",3],["error",4]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["language",4]],[[],["result",4,[["language",4],["error",4]]]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["option",4,[["ordering",4]]]],[[["mnemonic",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["vec",3,[["u8",15],["global",3]]]],[[]],[[]],[[]],[[]],[[]],[[["str",15]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[["str",15]]],null,null,null,null,null,[[],["option",4,[["u64",15]]]],[[],["option",4,[["feerate",3]]]],[[["usize",15]],["option",4,[["txout",3]]]],null,null,null,null,null,null,null,null,null,[[["keychainkind",4],["signerordering",3],["arc",3,[["transactionsigner",8]]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["txid",3]],["result",4,[["txbuilder",3,[["defaultcoinselectionalgorithm",6],["bumpfee",3]]],["error",4]]]],[[],["txbuilder",3,[["defaultcoinselectionalgorithm",6],["createtx",3]]]],null,[[]],[[],["syncoptions",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["string",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["result",4,[["bool",15],["error",4]]]],[[["addressinfo",3]],["bool",15]],null,[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[],["result",4,[["balance",3],["error",4]]]],[[["keychainkind",4]],["extendeddescriptor",6]],[[["str",15]]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[["localutxo",3],["option",4,[["psbtsighashtype",3]]],["bool",15]],["result",4,[["input",3],["error",4]]]],[[["keychainkind",4]],["arc",3,[["signerscontainer",3]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],null,null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["script",3]],["bool",15]],[[["script",3]],["result",4,[["bool",15],["error",4]]]],null,[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[["addressinfo",3]],["bool",15]],[[],["network",4]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["extendeddescriptor",6]]],["error",4]]]],[[],["secp256k1",3]],[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],null,[[["syncoptions",3]],["result",4,[["error",4]]]],null,[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[["option",4],["network",4],["secp256k1",3]],["result",4,[["string",3],["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["u64",15],["feerate",3],["script",3]],["excess",4]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[["u64",15]]],null,[[],["u64",15]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,[[]],[[]],[[],["option",4,[["string",3]]]],[[["usize",15]]],[[["usize",15]]],[[],["string",3]],[[],["result",4]],[[["usize",15]]],[[["wallet",3],["str",15],["bool",15]],["result",4,[["str",15]]]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4]],[[],["usize",15]],[[]],null,[[],["result",4]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[]],[[["hwidevice",3],["hwichain",4]],["result",4,[["hwisigner",3],["error",4]]]],[[["secp256k1",3]],["signerid",4]],[[],["usize",15]],[[]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["signerid",4],["signerordering",3],["arc",3,[["transactionsigner",8]]]],["option",4,[["arc",3,[["transactionsigner",8]]]]]],null,null,[[["secp256k1",3]],["keymap",6]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keymap",6],["descriptor",4],["secp256k1",3]],["signerscontainer",3]],[[],["signerid",4]],[[],["signererror",4]],[[],["signercontext",4]],[[],["signerwrapper",3]],[[],["signerordering",3]],[[],["signerscontainer",3]],[[],["signoptions",3]],[[],["tapleavesoptions",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["ordering",4]],[[["signerordering",3]],["ordering",4]],[[]],[[],["signerscontainer",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signercontext",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["tapleavesoptions",4]],["bool",15]],[[["signerid",4]],["option",4,[["arc",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["hash",3]],["signerid",4]],[[["fingerprint",3]],["signerid",4]],[[]],[[["error",4]]],[[["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[]],[[["secp256k1",3]],["signerid",4]],[[["secp256k1",3]],["signerid",4]],[[["secp256k1",3]],["signerid",4]],[[],["vec",3,[["signerid",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signercontext",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["tapleavesoptions",4]],["bool",15]],[[["signercontext",4]]],[[]],[[["signerid",4]],["option",4,[["ordering",4]]]],[[["signerordering",3]],["option",4,[["ordering",4]]]],[[["signerid",4],["signerordering",3]],["option",4,[["arc",3,[["transactionsigner",8]]]]]],null,[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],null,[[],["vec",3,[["arc",3]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,[[],["u64",15]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[["outpoint",3],["input",3],["usize",15]],["result",4,[["error",4]]]],[[]],[[["script",3],["u64",15]]],[[["outpoint",3]]],[[["outpoint",3]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["bool",15]]],[[["script",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["changespendpolicy",4]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[],["txordering",4]],[[],["changespendpolicy",4]],[[]],[[]],[[]],[[]],[[]],[[["txordering",4]],["ordering",4]],[[["changespendpolicy",4]],["ordering",4]],[[["coinselectionalgorithm",8]],["txbuilder",3,[["coinselectionalgorithm",8]]]],[[["u32",15]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["script",3]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["sequence",3]]],[[["txordering",4]],["bool",15]],[[["changespendpolicy",4]],["bool",15]],[[["u64",15]]],[[["feerate",3]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["locktime",4]]],[[]],[[]],[[["txordering",4]]],[[["txordering",4]],["option",4,[["ordering",4]]]],[[["changespendpolicy",4]],["option",4,[["ordering",4]]]],[[["btreemap",3,[["string",3],["vec",3,[["usize",15]]]]],["keychainkind",4]]],[[["vec",3]]],[[["psbtsighashtype",3]]],[[["transaction",3]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["vec",3,[["outpoint",3]]]]],[[["i32",15]]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]]],[[["error",4]]],[[]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["transaction",3]],["result",4,[["verifyerror",4]]]],[[]],null,null,null,null],"p":[[4,"Error"],[4,"KeychainKind"],[4,"Utxo"],[3,"Balance"],[3,"FeeRate"],[3,"LocalUtxo"],[3,"WeightedUtxo"],[3,"TransactionDetails"],[3,"BlockTime"],[6,"MnemonicWithPassphrase"],[6,"DescriptorTemplateOut"],[6,"ExtendedDescriptor"],[8,"Vbytes"],[13,"InvalidU32Bytes"],[13,"Generic"],[13,"OutputBelowDustLimit"],[13,"MissingKeyOrigin"],[13,"Key"],[13,"SpendingPolicyRequired"],[13,"InvalidPolicyPathError"],[13,"Signer"],[13,"Verification"],[13,"InvalidProgressValue"],[13,"InvalidOutpoint"],[13,"Descriptor"],[13,"Encode"],[13,"Miniscript"],[13,"MiniscriptPsbt"],[13,"Bip32"],[13,"Secp256k1"],[13,"Json"],[13,"Hex"],[13,"Psbt"],[13,"PsbtParse"],[13,"MissingCachedScripts"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Sled"],[13,"Rpc"],[13,"Rusqlite"],[13,"InsufficientFunds"],[13,"InvalidNetwork"],[13,"FeeRateTooLow"],[13,"FeeTooLow"],[13,"Local"],[13,"Foreign"],[4,"Capability"],[8,"ConfigurableBlockchain"],[8,"BlockchainFactory"],[3,"NoopProgress"],[3,"LogProgress"],[8,"Blockchain"],[8,"GetBlockHash"],[8,"GetHeight"],[8,"GetTx"],[8,"Progress"],[8,"WalletSync"],[4,"AnyBlockchain"],[4,"AnyBlockchainConfig"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Rpc"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Rpc"],[4,"CompactFiltersError"],[3,"Mempool"],[3,"BitcoinPeerConfig"],[3,"Peer"],[3,"CompactFiltersBlockchain"],[3,"CompactFiltersBlockchainConfig"],[13,"Db"],[13,"Io"],[13,"Bip158"],[13,"Time"],[13,"Global"],[3,"ElectrumBlockchain"],[3,"ElectrumBlockchainConfig"],[4,"EsploraError"],[3,"EsploraBlockchainConfig"],[3,"EsploraBlockchain"],[13,"Ureq"],[13,"UreqTransport"],[13,"HttpResponse"],[13,"Io"],[13,"Parsing"],[13,"BitcoinEncoding"],[13,"Hex"],[13,"TransactionNotFound"],[13,"HeaderHeightNotFound"],[13,"HeaderHashNotFound"],[4,"Auth"],[3,"RpcConfig"],[3,"RpcBlockchainFactory"],[3,"RpcBlockchain"],[3,"RpcSyncParams"],[13,"Cookie"],[13,"UserPass"],[8,"BatchDatabase"],[8,"ConfigurableDatabase"],[3,"SqliteDatabase"],[3,"SyncTime"],[8,"Database"],[8,"BatchOperations"],[4,"AnyBatch"],[4,"AnyDatabase"],[4,"AnyDatabaseConfig"],[3,"SledDbConfiguration"],[3,"SqliteDbConfiguration"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[3,"MemoryDatabase"],[4,"Descriptor"],[4,"Wildcard"],[8,"ScriptContext"],[4,"DescriptorPublicKey"],[4,"Legacy"],[4,"Segwitv0"],[3,"Miniscript"],[3,"DescriptorXKey"],[8,"ExtractPolicy"],[8,"IntoWalletDescriptor"],[13,"Bare"],[13,"Pkh"],[13,"Wpkh"],[13,"Sh"],[13,"Wsh"],[13,"Tr"],[13,"Single"],[13,"XPub"],[4,"Error"],[13,"Key"],[13,"Policy"],[13,"InvalidDescriptorCharacter"],[13,"Bip32"],[13,"Base58"],[13,"Pk"],[13,"Miniscript"],[13,"Hex"],[4,"SatisfiableItem"],[4,"PolicyError"],[4,"Satisfaction"],[4,"PkOrF"],[4,"BuildSatisfaction"],[3,"Policy"],[3,"Condition"],[13,"Psbt"],[13,"PsbtTimelocks"],[13,"Pubkey"],[13,"XOnlyPubkey"],[13,"Fingerprint"],[13,"NotEnoughItemsSelected"],[13,"IndexOutOfRange"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"EcdsaSignature"],[13,"SchnorrSignature"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[8,"DescriptorTemplate"],[4,"KeyError"],[8,"GeneratableKey"],[4,"SinglePubKey"],[4,"ScriptContextEnum"],[4,"ExtendedKey"],[4,"DescriptorSecretKey"],[8,"ExtScriptContext"],[3,"GeneratedKey"],[3,"SortedMultiVec"],[3,"SinglePub"],[3,"SinglePriv"],[4,"DescriptorKey"],[3,"PrivateKeyGenerateOptions"],[8,"GeneratableDefaultOptions"],[8,"IntoDescriptorKey"],[8,"DerivableKey"],[13,"Single"],[13,"XPrv"],[13,"Private"],[13,"Public"],[13,"Message"],[13,"Bip32"],[13,"Miniscript"],[13,"FullKey"],[13,"XOnly"],[4,"Error"],[4,"Language"],[4,"WordCount"],[3,"Mnemonic"],[13,"BadWordCount"],[13,"UnknownWord"],[13,"BadEntropyBitCount"],[13,"AmbiguousLanguages"],[8,"PsbtUtils"],[4,"AddressIndex"],[3,"Wallet"],[3,"AddressInfo"],[3,"SyncOptions"],[8,"IsDust"],[13,"Peek"],[13,"Reset"],[4,"Excess"],[3,"CoinSelectionResult"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[8,"CoinSelectionAlgorithm"],[13,"Change"],[13,"NoChange"],[3,"FullyNodedExport"],[3,"HWISigner"],[3,"SignerOrdering"],[4,"TapLeavesOptions"],[4,"SignerId"],[4,"SignerError"],[4,"SignerContext"],[3,"SignersContainer"],[3,"SignOptions"],[3,"SignerWrapper"],[8,"SignerCommon"],[8,"InputSigner"],[8,"TransactionSigner"],[13,"Tap"],[13,"SighashError"],[13,"HWIError"],[13,"PkHash"],[13,"Fingerprint"],[13,"Dummy"],[13,"Include"],[13,"Exclude"],[4,"TxOrdering"],[4,"ChangeSpendPolicy"],[3,"TxBuilder"],[3,"CreateTx"],[3,"BumpFee"],[4,"VerifyError"],[13,"MissingInputTx"],[13,"InvalidInput"],[13,"Consensus"],[13,"Global"]]}\
+"bdk":{"doc":"A modern, lightweight, descriptor-based wallet library …","t":[3,13,3,13,13,13,13,6,13,13,13,4,13,13,3,13,13,13,13,13,2,13,13,13,13,13,13,13,13,13,13,13,4,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,2,13,13,13,2,13,3,13,2,13,4,8,13,2,3,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,12,11,11,0,12,12,12,11,11,11,11,11,2,11,11,2,12,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,11,11,11,12,12,10,5,11,11,11,11,11,11,11,11,11,0,11,12,12,12,12,12,12,12,12,13,2,2,8,8,4,2,16,8,2,2,3,13,13,8,8,8,16,3,3,8,6,2,2,8,8,0,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,0,10,11,11,11,11,11,11,10,10,10,11,10,10,11,11,11,11,11,11,11,5,5,5,0,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,4,4,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,3,13,3,3,4,13,13,13,13,13,13,13,13,3,13,13,13,3,13,13,13,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,13,3,3,4,13,13,13,13,13,13,13,13,13,13,12,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,4,13,13,3,3,3,3,13,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,12,11,12,12,12,2,2,16,8,8,16,8,8,2,3,3,0,10,11,12,11,11,11,11,10,11,11,11,10,11,12,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,0,11,12,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,4,4,4,13,13,13,13,13,13,3,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,6,4,2,4,3,6,8,13,6,8,16,6,4,3,13,13,2,8,4,13,13,6,13,13,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,5,5,5,5,13,13,4,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,3,6,13,13,6,13,13,13,13,13,13,13,13,13,13,13,4,3,4,13,13,13,13,13,4,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,8,6,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,16,13,3,13,8,4,13,13,13,3,3,4,3,13,6,13,13,13,5,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,12,12,11,11,11,11,11,11,10,12,11,11,11,11,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,4,13,4,3,6,13,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,10,10,10,4,3,8,13,13,13,13,3,3,11,12,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,0,12,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,12,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,11,11,11,11,5,3,13,8,3,6,4,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,4,3,3,3,13,4,8,13,11,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,10,11,12,11,12,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,13,3,13,13,4,3,13,13,3,8,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11],"n":["Balance","Bip32","BlockTime","BnBNoExactMatch","BnBTotalTriesExceeded","ChecksumMismatch","CompactFilters","ConfirmationTime","Descriptor","Electrum","Encode","Error","Esplora","External","FeeRate","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","Foreign","Generic","HdKeyPaths","Hex","InsufficientFunds","Internal","InvalidNetwork","InvalidOutpoint","InvalidPolicyPathError","InvalidProgressValue","InvalidU32Bytes","IrreplaceableTransaction","Json","Key","KeychainKind","Local","LocalUtxo","Miniscript","MiniscriptPsbt","MissingCachedScripts","MissingKeyOrigin","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","ProgressUpdateError","Psbt","PsbtParse","Rpc","Rusqlite","ScriptDoesntHaveAddressForm","Secp256k1","SignOptions","Signer","Sled","SpendingPolicyRequired","SyncOptions","TransactionConfirmed","TransactionDetails","TransactionNotFound","TxBuilder","UnknownUtxo","Utxo","Vbytes","Verification","Wallet","WeightedUtxo","add","as_byte","as_ref","as_sat_per_vb","base32_len","blockchain","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_base32","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","confirmation_time","confirmed","database","default","default","default","default_min_relay_fee","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor","descriptor","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","eq","fee","fee_vb","fee_wu","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fragment","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_btc_per_kvb","from_sat_per_kvb","from_sat_per_kwu","from_sat_per_vb","from_vb","from_wu","get_hash","get_hash","get_spendable","get_total","hash","hash","height","immature","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","is_spent","keychain","keys","new","outpoint","outpoint","partial_cmp","provide","psbt","received","satisfaction_weight","sent","serialize","serialize","serialize","serialize","serialize","signer","sub","sum","template","timestamp","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","transaction","trusted_pending","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","txid","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","untrusted_pending","utxo","vbytes","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet","write_base32","available","found","needed","requested","required","required","outpoint","psbt_input","AccurateFees","AnyBlockchain","AnyBlockchainConfig","Blockchain","BlockchainFactory","Capability","CompactFiltersBlockchain","Config","ConfigurableBlockchain","ElectrumBlockchain","ElectrumBlockchainConfig","EsploraBlockchain","FullHistory","GetAnyTx","GetBlockHash","GetHeight","GetTx","Inner","LogProgress","NoopProgress","Progress","ProgressData","RpcBlockchain","RpcConfig","StatelessBlockchain","WalletSync","any","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","build","build_for_wallet","clone","clone","clone","clone_into","clone_into","clone_into","compact_filters","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","electrum","eq","esplora","estimate_fee","fmt","fmt","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","into","into","into","log_progress","noop_progress","progress","rpc","sync_wallet","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","wallet_setup","wallet_sync","AnyBlockchain","AnyBlockchainConfig","CompactFilters","CompactFilters","Electrum","Electrum","Esplora","Esplora","Rpc","Rpc","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","wallet_setup","wallet_sync","Bip158","BitcoinPeerConfig","BlockHashNotFound","CompactFiltersBlockchain","CompactFiltersBlockchainConfig","CompactFiltersError","DataCorruption","Db","Global","InvalidFilter","InvalidFilterHeader","InvalidHeaders","InvalidResponse","Io","Mempool","MissingBlock","NoPeers","NotConnected","Peer","PeerBloomDisabled","Time","Timeout","add_tx","address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone","clone_into","clone_into","connect","connect_proxy","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_mempool","get_network","get_tx","get_tx","get_version","has_tx","init","init","init","init","init","init","into","into","into","into","into","into","is_connected","iter_txs","network","new","new","peers","provide","recv","send","serialize","serialize","skip_blocks","socks5","socks5_credentials","storage_dir","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","wallet_setup","ElectrumBlockchain","ElectrumBlockchainConfig","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","retry","serialize","socks5","stop_gap","timeout","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","url","vzip","vzip","wallet_setup","BitcoinEncoding","EsploraBlockchain","EsploraBlockchainConfig","EsploraError","HeaderHashNotFound","HeaderHeightNotFound","Hex","HttpResponse","Io","NoHeader","Parsing","TransactionNotFound","Ureq","UreqTransport","base_url","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone_into","concurrency","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","eq","estimate_fee","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_client","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","init","into","into","into","new","new","provide","proxy","serialize","stop_gap","timeout","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","wallet_setup","with_concurrency","Auth","Cookie","None","RpcBlockchain","RpcBlockchainFactory","RpcConfig","RpcSyncParams","UserPass","auth","auth","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","build","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","default","default_skip_blocks","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","eq","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","force_start_time","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","init","init","into","into","into","into","into","network","network","partial_cmp","poll_rate_sec","serialize","serialize","serialize","start_script_count","start_time","sync_params","sync_params","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","url","url","vzip","vzip","vzip","vzip","vzip","wallet_name","wallet_name_prefix","wallet_setup","file","password","username","AnyDatabase","AnyDatabaseConfig","Batch","BatchDatabase","BatchOperations","Config","ConfigurableDatabase","Database","MemoryDatabase","SqliteDatabase","SyncTime","any","begin_batch","begin_batch","block_time","borrow","borrow","borrow_mut","borrow_mut","check_descriptor_checksum","check_descriptor_checksum","clone","clone_into","commit_batch","commit_batch","connection","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","fmt","fmt","from","from","from_config","from_config","get_last_index","get_last_index","get_path_from_script_pubkey","get_path_from_script_pubkey","get_raw_tx","get_raw_tx","get_script_pubkey_from_path","get_script_pubkey_from_path","get_sync_time","get_sync_time","get_tx","get_tx","get_utxo","get_utxo","increment_last_index","increment_last_index","init","init","into","into","iter_raw_txs","iter_raw_txs","iter_script_pubkeys","iter_script_pubkeys","iter_txs","iter_txs","iter_utxos","iter_utxos","memory","new","path","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AnyBatch","AnyDatabase","AnyDatabaseConfig","Memory","Memory","Memory","Sled","Sled","Sled","SledDbConfiguration","Sqlite","Sqlite","Sqlite","SqliteDbConfiguration","begin_batch","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_descriptor_checksum","commit_batch","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","init","init","init","init","into","into","into","into","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","path","path","serialize","serialize","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","tree_name","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","MemoryDatabase","begin_batch","borrow","borrow_mut","check_descriptor_checksum","commit_batch","default","del_last_index","del_path_from_script_pubkey","del_raw_tx","del_script_pubkey_from_path","del_sync_time","del_tx","del_utxo","deref","deref_mut","drop","fmt","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","new","set_last_index","set_raw_tx","set_script_pubkey","set_sync_time","set_tx","set_utxo","try_from","try_into","type_id","vzip","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","DescriptorXKey","ExtendedDescriptor","ExtractPolicy","Hardened","HdKeyPaths","IntoWalletDescriptor","Key","KeyMap","Legacy","Miniscript","None","Pkh","Policy","ScriptContext","Segwitv0","Sh","Single","TapKeyOrigins","Tr","Unhardened","Wildcard","Wpkh","Wsh","XPub","address","as_enum","as_enum","as_inner","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","calc_checksum","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","contains_raw_pkh","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derivation_path","derive","derived_descriptor","derived_descriptor","desc_type","deserialize","deserialize","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from_ast","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","hash","hash","init","init","init","init","init","init","into","into","into","into","into","into","into_inner","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_non_malleable","iter","iter_pk","lift","lift","lift_check","matches","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","name_str","name_str","name_str","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","origin","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","vzip","vzip","wildcard","within_resource_limits","xkey","calc_checksum","calc_checksum_bytes","get_checksum","get_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","Pk","Policy","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","from","from","from","from","from","init","into","provide","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contribution","csv","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","get_hash","get_hash","hash","hash","id","id","init","init","init","init","init","init","init","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","provide","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","from","from","from","from","from","from","from","from","from","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","bip39","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derive","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","generate","generate_default","generate_with_entropy","generate_with_entropy_default","get_hash","get_hash","get_hash","get_hash","has_secret","has_wildcard","hash","hash","hash","hash","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","new","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","provide","sanity_check","satisfy","script_size","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","AmbiguousLanguages","BadEntropyBitCount","BadWordCount","English","Error","InvalidChecksum","Language","Mnemonic","MnemonicWithPassphrase","UnknownWord","WordCount","Words12","Words15","Words18","Words21","Words24","all","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_entropy","from_entropy_in","from_str","generate_in_with","generate_with_entropy","get_hash","get_hash","hash","hash","init","init","init","init","into","into","into","into","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","language","language_of","parse","parse_in","parse_in_normalized","parse_normalized","partial_cmp","partial_cmp","provide","serialize","to_entropy","to_entropy_array","to_owned","to_owned","to_owned","to_seed","to_seed_normalized","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","word_count","word_iter","words_by_prefix","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressIndex","AddressInfo","IsDust","LastUnused","New","Peek","Reset","SyncOptions","Wallet","add_signer","address","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","coin_selection","database","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_checksum","drop","drop","drop","drop","ensure_addresses_cached","eq","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_address","get_balance","get_descriptor_for_keychain","get_funded_wallet","get_internal_address","get_psbt_input","get_signers","get_tx","get_utxo","hardwaresigner","index","init","init","init","init","into","into","into","into","is_dust","is_mine","keychain","list_transactions","list_unspent","network","new","new_offline","policies","progress","public_descriptor","secp_ctx","sign","signer","sync","time","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_builder","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Excess","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","amount","change_fee","dust_threshold","fee","remaining_amount","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","deref","deref_mut","descriptor","deserialize","drop","export_wallet","fmt","from","from_str","init","into","label","serialize","to_string","try_from","try_into","type_id","vzip","HWISigner","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","from_device","id","init","into","sign_transaction","try_from","try_into","type_id","vzip","All","Dummy","Exclude","Fingerprint","HWIError","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","get_hash","hash","id","id","id","ids","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","provide","remove","remove_partial_sigs","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","get_timestamp","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","Untouched","add_data","add_foreign_utxo","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","current_height","default","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","do_not_spend_change","drain_to","drain_wallet","drop","drop","drop","drop","drop","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_hash","get_hash","hash","hash","include_output_redeem_witness_script","init","init","init","init","init","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","Consensus","Global","InvalidInput","MissingInputTx","VerifyError","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","init","into","provide","to_string","try_from","try_into","type_id","verify_tx","vzip"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Error","","","","","","bdk::Utxo","","bdk::blockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::compact_filters","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::rpc::Auth","","","bdk::database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::checksum","","","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::bip39","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::psbt","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection::Excess","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::hardwaresigner","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerContext","bdk::wallet::time","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Balance differentiated in various categories","BIP32 error","Block height and timestamp of a block","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Descriptor checksum mismatch","Compact filters client error)","<strong>DEPRECATED</strong>: Confirmation time of a transaction","Error related to the parsing and usage of descriptors","Electrum client error","Encoding error","Errors that can be thrown by the <code>Wallet</code>","Esplora client error","External","Fee rate","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","A UTXO owned by another wallet.","Generic error","","Hex decoding error","Wallet’s UTXO set is not enough to cover recipient’s …","Internal, usually used for change outputs","Invalid network","Requested outpoint doesn’t exist in the tx (vout greater …","Error while extracting and manipulating policies","Progress value must be between <code>0.0</code> (included) and <code>100.0</code> …","Wrong number of bytes found when trying to convert to u32","Trying to replace a tx that has a sequence >= <code>0xFFFFFFFE</code>","Error serializing or deserializing JSON data","Error while working with <code>keys</code>","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a <code>Wallet</code>.","Miniscript error","Miniscript PSBT error","<code>crate::blockchain::WalletSync</code> sync attempt failed due to …","In order to use the <code>TxBuilder::add_global_xpubs</code> option …","Cannot build a tx without recipients","<code>manually_selected_only</code> option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Progress update error (maybe the channel has been closed)","Partially signed bitcoin transaction error","Partially signed bitcoin transaction parse error","Rpc client error","Rusqlite client error","This error is thrown when trying to convert Bare and …","An ECDSA error","","Signing error","Sled database error","Spending policy is not compatible with this <code>KeychainKind</code>","","Happens when trying to bump a transaction that is already …","A wallet transaction","Thrown when a tx is not found in the internal database","","Happens when trying to spend an UTXO that is not in the …","An unspent transaction output (UTXO).","Trait implemented by types that can be used to measure …","Transaction verification error","","A <code>Utxo</code> with its <code>satisfaction_weight</code>.","","Return <code>KeychainKind</code> as a byte","","Return the value as satoshi/vbyte","","Blockchain backends","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the transaction is confirmed, contains height and …","Confirmed and immediately spendable balance","Database types","","","","Create a new <code>FeeRate</code> with the default min relay fee value","","","","","","","","","","","","","","","","","","","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","","","","","","","","","","","","","Fee value (sats) if confirmed. The availability of the fee …","Calculate absolute fee in Satoshis using size in virtual …","Calculate absolute fee in Satoshis using size in weight …","","","","","","","","","","","","Macro to write descriptor fragments with code","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Create a new instance of <code>FeeRate</code> given a float fee rate in …","Calculate fee rate from <code>fee</code> and <code>vbytes</code>.","Calculate fee rate from <code>fee</code> and weight units (<code>wu</code>).","","","Get sum of trusted_pending and confirmed coins","Get the whole balance visible to the wallet","","","confirmation block height","All coinbase outputs not yet matured","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Whether this UTXO is spent or not","Type of keychain","Key formats","Returns <code>Some</code> <code>BlockTime</code> if both <code>height</code> and <code>timestamp</code> are …","Get the location of the UTXO","Reference to a transaction output","","","Additional functions on the <code>rust-bitcoin</code> …","Received value (sats) Sum of owned outputs of this …","The weight of the witness data and <code>scriptSig</code> expressed in …","Sent value (sats) Sum of owned inputs of this transaction.","","","","","","","","","","confirmation block timestamp","","","","","","","","","","","Optional transaction","Unconfirmed UTXOs generated by a wallet tx","","","","","","","","","","","","","","","","","","","Transaction id","Get the <code>TxOut</code> of the UTXO","Transaction output","","","","","","","","","","Unconfirmed UTXOs received from an external wallet","The UTXO","Convert weight units to virtual bytes.","Get the version of BDK at runtime","","","","","","","","","","Wallet","","Sats available for spending","found network, for example the network of the bitcoin node","Sats needed for some transaction","requested network, for example what is given as bdk-cli …","Required fee rate (satoshi/vbyte)","Required fee absolute value (satoshi)","The location of the output.","The information about the input we require to add it to a …","Can compute accurate fees for the transactions found …","","","Trait that defines the actions that must be supported by a …","Trait for a factory of blockchains that share the …","Capabilities that can be supported by a <code>Blockchain</code> backend","","Type that contains the configuration","Trait for <code>Blockchain</code> types that can be created given a …","","","Structure that implements the logic to sync with Esplora","Can recover the full history of a wallet and not only the …","Can fetch any historical transaction given its txid","Trait for getting block hash by block height","Trait for getting the current height of the blockchain.","Trait for getting a transaction by txid","The type returned when building a blockchain from this …","Type that implements <code>Progress</code> and logs at level <code>INFO</code> every …","Type that implements <code>Progress</code> and drops every update …","Trait for types that can receive and process progress …","Data sent with a progress update over a <code>channel</code>","","","Trait for blockchains that don’t contain any state","Trait for blockchains that can sync by updating the …","Runtime-checked blockchain types","","","","","","","Broadcast a transaction","Build a new blockchain for the given descriptor wallet_name","Build a new blockchain for a given wallet","","","","","","","Compact Filters","","","","","","","","","","","","Electrum","","Esplora","Estimate the fee rate required to confirm a transaction in …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a new instance given a configuration","fetch block hash given its height","Return the set of <code>Capability</code> supported by this backend","","Return the current height","Fetch a transaction given its txid","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Create a new instance of <code>LogProgress</code>","Create a new instance of <code>NoopProgress</code>","Shortcut to create a <code>channel</code> (pair of <code>Sender</code> and <code>Receiver</code>) …","Rpc Blockchain","Use <code>BlockchainFactory::build_for_wallet</code> to get a …","","","","","","","","","","","","","Send a new progress update","","","","","","Setup the backend and populate the internal database for …","If not overridden, it defaults to calling …","Type that can contain any of the <code>Blockchain</code> types defined …","Type that can contain any of the blockchain configurations …","Compact filters client","Compact filters client","Electrum client","Electrum client","Esplora client","Esplora client","RPC client","RPC client configuration","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","","","","","","","","","","","","","Invalid BIP158 filter","Data to connect to a Bitcoin P2P peer","Block hash at specified height not found","Structure implementing the required blockchain traits","Configuration for a <code>CompactFiltersBlockchain</code>","An error that can occur during sync with a …","The data stored in the block filters storage are corrupted","Internal database error","Wrapper for <code>crate::error::Error</code>","The compact filter returned is invalid","The compact filter headers returned are invalid","The headers returned are invalid","A peer sent an invalid or unexpected response","Internal I/O error","Container for unconfirmed, but valid Bitcoin transactions","The peer is missing a block in the valid chain","No peers have been specified","A peer is not connected","A Bitcoin peer","The peer doesn’t advertise the <code>BLOOM</code> service flag","Internal system time error","A peer took too long to reply to one of our messages","Add a transaction to the mempool","Peer address such as 127.0.0.1:18333","","","","","","","","","","","","","","","","","","Connect to a peer over a plaintext TCP connection","Connect to a peer through a SOCKS5 proxy, optionally by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","","","","","Return the mempool used by this peer","Return the Bitcoin <code>Network</code> in use","Look-up a transaction in the mempool given an <code>Inventory</code> …","","Return the <code>VersionMessage</code> sent by the peer","Return whether or not the mempool contains a transaction …","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Return whether or not the peer is still connected","Return the list of transactions contained in the mempool","Network used","Create a new empty mempool","Construct a new instance given a list of peers, a path to …","List of peers to try to connect to for asking headers and …","","Waits for a specific incoming Bitcoin message, optionally …","Send a raw Bitcoin message to the peer","","","Optionally skip initial <code>skip_blocks</code> blocks (default: 0)","Optional socks5 proxy","Optional socks5 proxy credentials","Storage dir to save partially downloaded headers and full …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper over an Electrum Client that implements the …","Configuration for an <code>ElectrumBlockchain</code>","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Request retry count","","URL of the socks5 proxy server or a Tor service","Stop searching addresses for transactions after finding an …","Request timeout (seconds)","","","","","","","","URL of the Electrum server (such as ElectrumX, Esplora, …","","","","Invalid Bitcoin data returned","Structure that implements the logic to sync with Esplora","Configuration for an <code>EsploraBlockchain</code>","Errors that can happen during a sync with <code>Esplora</code>","Header hash not found","Header height not found","Invalid Hex data returned","HTTP response error","IO error during ureq response read","No header found in ureq response","Invalid number returned","Transaction not found","Error during ureq HTTP request","Transport error during the ureq HTTP call","Base URL of the esplora service","","","","","","","","","","Number of parallel requests sent to the esplora service …","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Build a new instance given a client","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Create a new instance of the client from a base URL and …","create a config with default values given the base url and …","","Optional URL of the proxy to use to make requests to the …","","Stop searching addresses for transactions after finding an …","Socket timeout.","","","","","","","","","","","","","","","","Set the number of parallel requests the client can make.","This struct is equivalent to bitcoincore_rpc::Auth but it …","Authentication with a cookie file","None authentication","The main struct for RPC backend implementing the …","Factory of <code>RpcBlockchain</code> instances, implements …","RpcBlockchain configuration options","Sync parameters for Bitcoin Core RPC.","Authentication with username and password, usually …","The bitcoin node authentication mechanism","The bitcoin node authentication mechanism","","","","","","","","","","","","","","","","","","","","","","","Default number of blocks to skip which will be inherited …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Forces every sync to use <code>start_time</code> as import timestamp.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns RpcBlockchain backend creating an RPC client to a …","","","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","The network we are using (it will be checked the bitcoin …","The network we are using (it will be checked the bitcoin …","","RPC poll rate (in seconds) to get state updates.","","","","The minimum number of scripts to scan for on initial sync.","Time in unix seconds in which initial sync will start …","Sync parameters","Sync parameters","","","","","","","","","","","","","","","","","","","","The bitcoin node url","The bitcoin node url","","","","","","The wallet name in the bitcoin node, consider using …","The optional prefix used to build the full wallet name for …","","Cookie file","Password","Username","","","Container for the operations","Trait for a database that supports batch operations","Trait for operations that can be batched","Type that contains the configuration","Trait for <code>Database</code> types that can be created given a …","Trait for reading data from a database","","Sqlite database stored on filesystem","Blockchain state at the time of syncing","Runtime-checked database types","Create a new batch container","","Block timestamp and height at the time of sync","","","","","Read and checks the descriptor checksum for a given …","","","","Consume and apply a batch of operations","","A rusqlite connection object to the sqlite database","Delete the last derivation index for a keychain.","","Delete the data related to a specific script_pubkey, …","","Delete a raw transaction given its <code>Txid</code>","","Delete a script_pubkey given the keychain and its child …","","Reset the sync time to <code>None</code>","","Delete the metadata of a transaction and optionally the …","","Delete a <code>LocalUtxo</code> given its <code>OutPoint</code>","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Create a new instance given a configuration","","Return the last derivation index for a keychain.","","Fetch the keychain and child number of a given …","","Fetch a raw transaction given its <code>Txid</code>","","Fetch a script_pubkey given the child number of a keychain.","","Return the sync time, if present","","Fetch the transaction metadata and optionally also the raw …","","Fetch a <code>LocalUtxo</code> given its <code>OutPoint</code>","","Increment the last derivation index for a keychain and …","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Return the list of raw transactions","","Return the list of script_pubkeys","","Return the list of transactions metadata","","Return the list of <code>LocalUtxo</code>s","","In-memory ephemeral database","Instantiate a new SqliteDatabase instance by creating a …","Path on the local filesystem to store the sqlite file","","Store the last derivation index for a given keychain.","","Store a raw transaction","","Store a script_pubkey along with its keychain and child …","","Store the sync time","","Store the metadata of a transaction","","Store a <code>LocalUtxo</code>","","","","","","","","","","","Type that contains any of the <code>BatchDatabase::Batch</code> types …","Type that can contain any of the <code>Database</code> types defined by …","Type that can contain any of the database configurations …","In-memory ephemeral database","In-memory ephemeral database","Memory database has no config","Simple key-value embedded database based on <code>sled</code>","Simple key-value embedded database based on <code>sled</code>","Simple key-value embedded database based on <code>sled</code>","Configuration type for a <code>sled::Tree</code> database","Sqlite embedded database using <code>rusqlite</code>","Sqlite embedded database using <code>rusqlite</code>","Sqlite embedded database using <code>rusqlite</code>","Configuration type for a <code>sqlite::SqliteDatabase</code> database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","","","","","Main directory of the db","Main directory of the db","","","","","","","","","","","","","","","","Name of the database tree, a separated namespace for the …","","","","","","","","","","","","","","","","","","","","","In-memory ephemeral database","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","","","Calls <code>U::from(self)</code>.","","","","","Create a new empty database","","","","","","","","","","","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a <code>Descriptor</code> that contains extended <strong>derived</strong> keys","Script descriptor","","The descriptor pubkey, either a single pubkey or an xpub.","An extended key with origin, derivation path, and wildcard.","Alias for a <code>Descriptor</code> that can contain extended keys …","Trait implemented on <code>Descriptor</code>s to add a method to …","Unhardened wildcard, e.g. *h","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","The consensus key associated with the type. Must be a …","Alias type for a map of public key to secret key","Legacy ScriptContext To be used as P2SH scripts For …","Top-level script AST type","No wildcard","Pay-to-PubKey-Hash","","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single public key.","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Unhardened wildcard, e.g. *","Whether a descriptor has a wildcard in it","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Extended public key (xpub).","Computes the Bitcoin address of the descriptor, if one …","","","Get a reference to the inner <code>AstElem</code> representing the root …","Replaces all wildcards (i.e. <code>/*</code>) in the descriptor with a …","","","","","","","","","","","","","Enumerates all child nodes of the current AST node (<code>self</code>) …","","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","","","","","","","Whether the given miniscript contains a raw pkh fragment","","","","","","","","","","","","","The derivation path","Deprecated name for [<code>at_derivation_index</code>].","Convert all the public keys in the descriptor to …","Convert all the public keys in the descriptor to …","Get the DescriptorType of Descriptor","","","","","","","","","Encode as a Bitcoin script","","","","","","","Descriptor errors","Computes the the underlying script before any hashing is …","Additional information helpful for extra analysis.","Check whether the miniscript follows the given Extra …","Extract the spending <code>policy</code>","","","Utility method for deriving the descriptor at each index …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Add type information(Type and Extdata) to Miniscript based …","","Parse a Miniscript from string and perform sanity checks …","Attempt to parse an Miniscripts that don’t follow the …","Attempt to parse an insane(scripts don’t clear sanity …","Parse an expression tree into a descriptor.","Parse an expression tree into a Miniscript. As a general …","","","","","","","Returns child node with given index, if any","Returns <code>Option::Some</code> with cloned n’th public key from …","Returns satisfying non-malleable witness and scriptSig to …","Returns a possilbly mallable satisfying non-malleable …","Whether the miniscript contains a combination of timelocks","Whether the miniscript has repeated Pk or Pkh","Whether or not the descriptor has any wildcards i.e. <code>/*</code>.","","","","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Extracts the <code>AstElem</code> representing the root of the …","Convert to wallet descriptor","","Whether or not the descriptor has any wildcards","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","","","Lifting corresponds conversion of miniscript into Policy […","Compares this key with a <code>keysource</code> and returns the …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","Local helper function to display error messages with …","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold <code>k</code> …","Create a new sh wrapper for the given wpkh descriptor","Create a new sh wrapper for the given wsh descriptor","Create a new sh wrapped wpkh from <code>Pk</code>. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create new tr descriptor Errors when miniscript exceeds …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the Abstract Syntax Tree(","Origin information","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation.","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","Attempt to parse an miniscript with extra features that …","","","","","","","Get the len of public key when serialized based on context …","","","Descriptor policy","Whether all spend paths of miniscript require a signature","Checks whether the descriptor is safe.","Check whether the underlying Miniscript is safe under the …","Attempts to produce a non-malleable satisfying witness and …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Computes the <code>scriptCode</code> of a transaction output.","Computes the scriptpubkey of the descriptor.","Size, in bytes of the script-pubkey. If this Miniscript is …","","","The type of signature required for satisfaction","","","Descriptor templates","","","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Converts a descriptor using abstract keys to one using …","Translates a struct from one generic to another where the …","","","","","","","","","","","","","The correctness and malleability type information for the …","","","","","","","Computes the scriptSig that will be in place for an …","","","","","","","Whether the descriptor is wildcard","Whether the miniscript can exceed the resource …","The extended key","Compute the checksum of a descriptor, excludes any …","Compute the checksum bytes of a descriptor, excludes any …","Compute the checksum of a descriptor","Compute the checksum bytes of a descriptor","Error during base58 decoding","BIP32 error","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid byte found in the descriptor checksum","The provided descriptor doesn’t match its checksum","Invalid HD Key path, such as having a wildcard but a …","Error thrown while working with <code>keys</code>","Miniscript error","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","Returns the argument unchanged.","","","","","","Calls <code>U::from(self)</code>.","","","","","","","Absolute timeclock timestamp","Can not add to an item that is <code>Satisfaction::None</code> or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of <code>Condition</code> items keyed by each set…","ECDSA Signature for a raw public key","An extended key fingerprint","Type for a map of folded sets of <code>Condition</code> items keyed by …","SHA256 then RIPEMD160 preimage hash","Double SHA256 preimage hash","Incompatible conditions (not currently used)","Index out of range for an item to satisfy a …","Can not merge CSV or timelock values unless both are less …","Multi-signature public keys with threshold count","Cannot satisfy or contribute to the policy item","Don’t generate <code>satisfaction</code> field","Not enough items are selected to satisfy a …","Only a partial satisfaction of some kind of threshold …","Can reach the threshold of some kind of threshold policy","A unique identifier for a key","Descriptor spending policy","Errors that can happen while extracting and manipulating …","Analyze the given PSBT to check for existing signatures","Like <code>Psbt</code> variant and also check for expired timelocks","A legacy public key","Relative timelock locktime","RIPEMD160 preimage hash","Represent if and how much a policy item is satisfied by …","An item that needs to be satisfied","Schnorr Signature for a raw public key","SHA256 preimage hash","Threshold items with threshold count","A x-only public key","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the conditions that are set by the spending policy …","","","","","Returns a unique id for the <code>SatisfiableItem</code>","Identifier for this policy node","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Returns whether the <code>SatisfiableItem</code> is a leaf item","Returns whether the <code>Satisfaction</code> is a leaf item","Returns <code>true</code> if there are no extra conditions to verify","Type of this policy node","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The timelock value","The timelock value","BIP44 template. Expands to <code>pkh(key/44'/{0,1}'/0'/{0,1}/*)</code>","BIP44 public template. Expands to <code>pkh(key/{0,1}/*)</code>","BIP49 template. Expands to …","BIP49 public template. Expands to <code>sh(wpkh(key/{0,1}/*))</code>","BIP84 template. Expands to <code>wpkh(key/84'/{0,1}'/0'/{0,1}/*)</code>","BIP84 public template. Expands to <code>wpkh(key/{0,1}/*)</code>","Trait for descriptor templates that can be built into a …","Type alias for the return type of <code>DescriptorTemplate</code>, …","P2PKH template. Expands to a descriptor <code>pkh(key)</code>","P2WPKH template. Expands to a descriptor <code>wpkh(key)</code>","P2WPKH-P2SH template. Expands to a descriptor <code>sh(wpkh(key))</code>","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The descriptor pubkey, either a single pubkey or an xpub.","The descriptor secret key, either a single private key or …","Type specifying the amount of entropy required e.g. <code>[u8;32]</code>","Returned error in case of failure","Trait that adds extra useful methods to <code>ScriptContext</code>s","Enum for extended keys that can be either <code>xprv</code> or <code>xpub</code>","A bitcoin public key (compressed or uncompressed).","Trait that allows generating a key with the default options","Trait for keys that can be generated","Output of a <code>GeneratableKey</code> key generation","Trait for objects that can be turned into a public or …","The key has an invalid checksum","The key is not valid for the given network","The key cannot exist in the given script context","The consensus key associated with the type. Must be a …","Errors thrown while working with <code>keys</code>","Alias type for a map of public key to secret key","Legacy scripts","Custom error message","Miniscript error","Extra options required by the <code>generate_with_entropy</code>","A private extended key, aka an <code>xprv</code>","Options for generating a <code>PrivateKey</code>","A public extended key, aka an <code>xpub</code>","The ScriptContext for Miniscript. Additional type …","Enum representation of the known valid <code>ScriptContext</code>s","Segwitv0 scripts","Single public key.","Single private key.","A descriptor <code>bitcoin::PrivateKey</code> with optional origin …","A descriptor <code>SinglePubKey</code> with optional origin information.","Single public key without any origin or range information.","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","An xonly public key.","Extended private key (xpriv).","Extended public key (xpub).","Create a set containing mainnet, testnet and regtest","Returns the <code>ScriptContext</code> as a <code>ScriptContextEnum</code>","Replaces any wildcard (i.e. <code>/*</code>) in the key with a …","BIP-0039","","","","","","","","","","","","","","","","","","","","","","","","","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","","","","","","","","","","","","","","","","","","","","","","","","","Deprecated name of [<code>at_derivation_index</code>].","","","","","","","","","","","","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","","","","","Return whether or not the key contains the private data","Whether or not the key has a wildcard","","","","","","","","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Turn the key into a <code>DescriptorKey</code> within the requested …","Consume <code>self</code> and turn it into a <code>DescriptorKey</code> by adding …","","","","","","Consume <code>self</code> and turn it into an <code>ExtendedKey</code>","","","Consumes <code>self</code> and returns the key","Transform the <code>ExtendedKey</code> into an <code>ExtendedPrivKey</code> for the …","Transform the <code>ExtendedKey</code> into an <code>ExtendedPubKey</code> for the …","Whether or not the key has a wildcard","Returns whether the script context is <code>Legacy</code>","Returns whether the script context is …","Returns whether the script context is <code>Segwitv0</code>","Returns whether the script context is …","Returns whether the script context is <code>Tap</code>, aka Taproot or …","Returns whether the script context is …","","","signatures required","The public key.","The private key.","","Create a set only containing mainnet","The fingerprint of the master key associated with this …","Depending on script context, the size of a satifaction …","Maximum size, in bytes, of a satisfying witness. In …","Maximum number of witness elements used to satisfy the …","Compute the intersection of two sets","Local helper function to display error messages with …","Create a new instance of <code>SortedMultiVec</code> given a list of …","Origin information (fingerprint and derivation path).","Origin information (fingerprint and derivation path).","Other top level checks that are context specific","Override the computed set of valid networks","","","","","Get the len of public key when serialized based on context …","public keys inside sorted Multi","","utility function to sanity a sorted multi vec","Attempt to produce a satisfying witness for the witness …","Size, in bytes of the script-pubkey. If this Miniscript is …","The type of signature required for satisfaction","Create Terminal::Multi containing sorted pubkeys","Create a set containing testnet and regtest","","","","","","","","Returns the public version of this key.","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if fpk returns an uncompressed key when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The mnemonic can be interpreted as multiple languages. Use …","Entropy was not a multiple of 32 bits or between 128-256n …","Mnemonic has a word count that is not a multiple of 6.","The English language.","A BIP39 error.","The mnemonic has an invalid checksum.","Language to be used for the mnemonic phrase.","A mnemonic code.","Type for a BIP39 mnemonic with an optional passphrase","Mnemonic contains an unknown word. Error contains the …","Type describing entropy length (aka word count) in the …","12 words mnemonic (128 bits entropy)","15 words mnemonic (160 bits entropy)","18 words mnemonic (192 bits entropy)","21 words mnemonic (224 bits entropy)","24 words mnemonic (256 bits entropy)","The list of supported languages. Language support is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a new English Mnemonic from the given entropy. …","Create a new Mnemonic in the specified language from the …","","Generate a new Mnemonic in the given language with the …","","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","","","","","Get the language of the Mnemonic.","Determine the language of the mnemonic.","Parse a mnemonic and detect the language from the enabled …","Parse a mnemonic in the given language.","Parse a mnemonic in normalized UTF8 in the given language.","Parse a mnemonic in normalized UTF8.","","","","","Convert the mnemonic back to the entropy used to generate …","Convert the mnemonic back to the entropy used to generate …","","","","Convert to seed bytes.","Convert to seed bytes with a passphrase in normalized UTF8.","","","","","","","","","","","","","","","","","","","","Get the number of words in the mnemonic.","Get an iterator over the words.","Get words from the word list that start with the given …","Trait to add functions to extract utxos and calculate fees.","The total transaction fee amount, sum of input amounts …","The transaction’s fee rate. This value will only be …","Get the <code>TxOut</code> for the specified input index, if it doesn’…","The address index selection strategy to use to derived an …","A derived address and the index it was found at For …","Trait to check if a value is below the dust limit. We are …","Return the address for the current descriptor index if it …","Return a new address after incrementing the current …","Return the address for a specific descriptor index. Does …","Return the address for a specific descriptor index and …","Options to a <code>sync</code>.","A Bitcoin wallet","Add an external signer","Address","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Coin selection","Return an immutable reference to the internal database","","","","","","","","","","","Return the checksum of the public descriptor associated to …","","","","","Ensures that there are at least <code>max_addresses</code> addresses …","","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return a derived address using the external descriptor, …","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","Return a fake wallet that appears to be funded for testing.","Return a derived address using the internal (change) …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Return a single transactions made and received by the …","Returns the <code>UTXO</code> owned by this wallet corresponding to …","HWI Signer","Child index of this address","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Check whether or not a value is below dust limit","Return whether or not a <code>script</code> is part of this wallet …","Type of keychain","Return an unsorted list of transactions made and received …","Return the list of unspent outputs of this wallet","Get the Bitcoin network the wallet is using.","Create a wallet.","Create a new “offline” wallet","Return the spending policies for the wallet’s descriptor","The progress tracker which may be informed when progress …","Return the “public” version of the wallet’s …","Return the secp256k1 context used for all signing …","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Sync the internal database with the blockchain","Cross-platform time","","","","","","","","","","Transaction builder","","","","","Verify transactions against the consensus rules","","","","","Deterministically generate a unique name given the …","Branch and bound coin selection","It’s possible to create spendable output from excess …","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by <code>TxBuilder</code> if not …","Remaining amount after performing coin selection","Simple and dumb coin selection","It’s not possible to create spendable output from excess …","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","","","Perform the coin selection","","","","Decide if change can be created","","","","","","","","","","","","","","","","","","","Remaining amount after deducing fees and outgoing outputs","Total fee amount for the selected utxos in satoshis","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","The total value of the inputs selected from the local …","Create new instance with target size for change output","List of outputs selected for use as inputs","The total value of the inputs selected.","","","","","","","","","","","","","","","","","","","","","","","Effective amount available to create change after …","The calculated fee for the drain TxOut with the selected …","Threshold to consider amount as dust for this particular …","The deducted change output fee","Exceeding amount of current selection over outgoing value …","Structure that contains the export of a wallet","Alias for <code>FullyNodedExport</code>","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","","","Return the external descriptor","","","Export a wallet","","Returns the argument unchanged.","","","Calls <code>U::from(self)</code>.","Arbitrary label for the wallet","","","","","","","Custom signer for Hardware Wallets","","","","","","","Returns the argument unchanged.","Create a instance from the specified device and chain","","","Calls <code>U::from(self)</code>.","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","The fingerprint of a BIP32 extended key","Error while signing using hardware wallets","The signer won’t sign leaves other than the ones …","Input index is out of range","PSBT Input signer","The private key in use has the right fingerprint but …","The <code>non_witness_utxo</code> specified is invalid","Invalid SIGHASH for the signing context in use","Legacy context","The fingerprint and derivation path are missing from the …","The private key is missing for the required public key","The <code>non_witness_utxo</code> field of the transaction is required …","The <code>witness_script</code> field of the transaction is required to …","The <code>witness_utxo</code> field of the transaction is required to …","The psbt contains a non-<code>SIGHASH_ALL</code> sighash in one of its …","The signer won’t sign any leaf.","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Segwit v0 context (BIP 143)","Error while computing the hash to sign","Options for a software signer","Common signer methods","Signing context","Signing error","Identifier of a signer in the <code>SignersContainers</code>. Used as a …","Defines the order in which signers are called","Wrapper structure to pair a signer with its context","Container for multiple signers","Taproot context (BIP 340)","Customize which taproot script-path leaves the signer …","PSBT signer","The user canceled the operation","Adds an external signer to the container for the specified …","Whether the signer should use the <code>sighash_type</code> set in the …","Whether we should grind ECDSA signature to ensure signing …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","Build a new signer container from a <code>KeyMap</code>","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Return the <code>SignerId</code> for this signer","","","Returns the list of identifiers of all the signers in the …","","","","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Create a wrapped signer from a signer and a context","Default constructor","","","","Removes a signer from the container and returns it","Whether to remove partial signatures from the PSBT inputs …","Sign a single psbt input","","","Sign all the inputs of the psbt","","Whether we should try to sign a taproot transaction with …","Returns the list of signers in the container, sorted by …","Specifies which Taproot script-spend leaves we should sign …","","","","","","","","","","Whether the signer should trust the <code>witness_utxo</code>, if the …","Whether to try finalizing the PSBT after the inputs are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the signer can sign for the internal key or not","Return the current timestamp in seconds","BIP69 / Lexicographic","Marker type to indicate the <code>TxBuilder</code> is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the <code>TxBuilder</code> is being used to …","Only use change outputs (see <code>TxBuilder::only_spend_change</code>)","Randomized (default)","A transaction builder","Context in which the <code>TxBuilder</code> is valid","Ordering of the transaction’s inputs and outputs","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Fill-in the <code>PSBT_GLOBAL_XPUB</code> field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that <strong>must</strong> be spent","Add the list of outpoints to the internal list of UTXOs …","Set whether or not the dust limit is checked.","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","Set a specific <code>ChangeSpendPolicy</code>. See …","","","","","","","","","","","","","Choose the coin selection algorithm","Set the current blockchain height.","","","","","","","","","","","","","","","Do not spend change outputs","Sets the address to <em>drain</em> excess coins to.","Spend all the available inputs. This respects filters like …","","","","","","Enable signaling RBF","Enable signaling RBF with a specific nSequence value","","","Set an absolute fee","Set a custom fee rate","Finish building the transaction.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Fill-in the <code>psbt::Output::redeem_script</code> and …","","","","","","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Calls <code>U::from(self)</code>.","Only spend utxos added by <code>add_utxo</code>.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the <code>psbt::Input::witness_utxo</code> field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by <code>TxOrdering</code> variant","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","","","Consensus error","Generic error","The transaction being spent doesn’t have the requested …","The transaction being spent is not available in the …","Error during validation of a tx agains the consensus rules","","","","","","","","","Returns the argument unchanged.","","","Calls <code>U::from(self)</code>.","","","","","","Verify a transaction against the consensus rules",""],"i":[0,18,0,18,18,18,18,0,18,18,18,0,18,2,0,18,18,18,13,18,0,18,18,2,18,18,18,18,18,18,18,18,0,13,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,0,18,0,18,0,18,0,0,18,0,0,1,2,2,4,2,0,18,2,4,11,12,13,14,15,1,18,2,4,11,12,13,14,15,1,2,2,4,11,12,13,14,15,1,2,4,11,12,13,14,15,1,14,1,0,4,15,1,4,18,2,4,11,12,13,14,15,1,18,2,4,11,12,13,14,15,1,0,0,2,11,14,15,1,18,2,4,11,12,13,14,15,1,2,4,11,12,13,14,15,1,14,4,4,18,18,2,4,11,12,13,14,15,1,1,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,4,11,12,13,14,15,15,1,4,4,4,4,4,4,2,11,1,1,2,11,15,1,18,2,4,11,12,13,14,15,1,18,2,4,11,12,13,14,15,1,11,11,0,15,13,11,4,18,0,14,12,14,2,11,14,15,1,0,4,1,0,15,2,4,11,12,13,14,15,1,18,1,14,1,18,2,4,11,12,13,14,15,1,18,2,4,11,12,13,14,15,1,14,13,11,18,2,4,11,12,13,14,15,1,1,12,231,0,18,2,4,11,12,13,14,15,1,0,2,232,233,232,233,234,235,236,236,53,0,0,0,0,0,0,237,0,0,0,0,53,53,0,0,0,238,0,0,0,0,0,0,0,0,0,53,54,55,53,54,55,239,238,238,53,54,55,53,54,55,0,54,55,53,54,55,53,54,55,53,54,55,0,53,0,239,53,54,55,53,54,55,237,240,239,53,241,242,53,53,54,55,53,54,55,0,0,0,0,238,53,54,55,53,54,55,53,54,55,53,54,55,60,54,55,53,54,55,243,243,0,0,62,63,62,63,62,63,62,63,62,63,62,63,62,63,63,62,63,62,63,63,62,63,63,62,63,62,62,62,62,62,63,63,63,63,63,62,62,62,62,62,62,63,62,63,63,63,62,63,62,63,62,63,62,63,62,62,36,0,36,0,0,0,36,36,36,36,36,36,36,36,0,36,36,36,0,36,36,36,72,73,72,77,66,73,69,36,72,77,66,73,69,36,66,73,69,73,69,77,77,72,72,77,66,73,69,36,72,77,66,73,69,36,73,69,72,77,66,73,69,36,73,69,66,72,77,66,73,69,36,36,72,77,66,73,69,36,36,36,36,36,36,66,66,66,66,77,77,72,66,77,72,72,77,66,73,69,36,72,77,66,73,69,36,77,72,69,72,66,69,36,77,77,73,69,69,73,73,69,73,69,36,72,77,66,73,69,36,72,77,66,73,69,36,72,77,66,73,69,36,72,77,66,73,69,36,66,0,0,64,71,64,71,64,71,71,64,64,71,64,71,71,64,71,71,64,71,64,64,71,64,64,64,64,64,64,71,64,71,71,71,71,71,71,71,64,71,64,71,64,71,71,64,71,64,26,0,0,0,26,26,26,26,26,26,26,26,26,26,70,26,65,70,26,65,70,65,70,70,70,26,65,65,70,26,65,70,70,26,65,70,70,65,26,26,65,70,26,26,26,26,26,26,26,65,70,65,65,65,65,65,65,26,65,70,26,65,70,65,70,26,70,70,70,70,70,26,26,65,70,26,65,70,26,65,70,26,65,70,65,65,0,97,97,0,0,0,0,97,68,95,67,68,96,97,95,67,68,96,97,95,67,95,68,96,97,95,68,96,97,95,97,96,95,67,67,68,96,97,95,67,68,96,97,95,68,96,97,67,68,96,97,95,68,96,97,67,67,68,96,97,95,96,67,68,96,97,95,67,67,67,97,67,67,97,67,68,96,97,95,67,68,96,97,95,68,95,97,96,68,96,97,96,96,68,95,68,96,97,95,67,68,96,97,95,67,68,96,97,95,67,68,96,97,95,68,95,67,68,96,97,95,68,95,67,244,245,245,0,0,222,0,0,246,0,0,0,0,0,0,222,98,99,98,99,98,99,247,98,99,99,222,98,98,248,98,248,98,248,98,248,98,248,98,248,98,248,98,98,99,98,99,99,98,99,98,99,98,99,246,98,247,98,247,98,247,98,247,98,247,98,247,98,247,98,247,98,98,99,98,99,247,98,247,98,247,98,247,98,0,98,98,99,248,98,248,98,248,98,248,98,248,98,248,98,99,98,99,98,99,98,99,98,99,0,0,0,102,101,105,102,101,105,0,102,101,105,0,101,102,101,103,104,105,102,101,103,104,105,101,101,102,101,102,101,102,101,102,101,102,101,102,101,102,101,102,101,103,104,105,102,101,103,104,105,103,104,105,102,101,103,104,105,101,103,104,105,102,102,102,102,101,101,101,101,103,104,105,105,105,105,101,101,101,101,101,101,101,101,101,102,101,103,104,105,102,101,103,104,105,101,101,101,101,103,104,103,104,105,102,101,102,101,102,101,102,101,102,101,102,101,103,102,101,103,104,105,102,101,103,104,105,102,101,103,104,105,102,101,103,104,105,0,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,108,0,0,0,0,0,0,0,117,0,0,129,0,0,0,117,108,0,0,0,108,113,0,108,117,0,108,108,113,108,118,119,111,108,116,117,108,118,119,111,116,117,108,118,119,111,111,0,129,118,119,129,119,129,129,118,119,129,118,119,129,129,118,119,129,118,119,0,116,117,108,118,119,111,116,117,108,118,119,111,116,117,108,118,119,111,111,116,117,108,118,119,111,116,117,108,118,119,111,116,108,108,108,108,108,111,116,117,108,118,119,111,111,116,117,108,118,119,111,0,108,111,111,249,108,111,108,116,117,108,108,118,119,111,111,108,111,116,117,108,108,108,108,108,108,108,118,119,111,111,108,111,111,111,108,111,116,117,108,118,119,111,111,111,108,108,111,111,108,116,117,108,118,119,111,116,117,108,118,119,111,116,117,108,118,119,111,111,202,138,108,111,111,111,108,111,111,116,129,118,119,111,108,111,129,118,119,108,108,108,108,108,108,108,108,108,108,108,108,108,108,111,116,129,111,108,111,111,116,117,108,118,119,111,129,118,119,0,111,108,111,108,111,111,108,108,111,108,111,129,118,119,0,116,117,108,118,119,111,108,111,108,129,129,108,111,116,117,108,118,119,111,116,117,108,118,119,111,111,116,117,108,118,119,111,108,116,117,108,118,119,111,116,111,116,0,0,0,0,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,152,28,28,0,153,0,0,152,151,0,152,152,28,28,28,152,153,127,28,153,153,0,0,0,127,127,151,152,152,0,0,152,152,152,151,151,152,153,128,154,28,127,151,152,153,128,154,28,127,151,152,153,128,154,127,151,152,153,128,154,127,128,154,154,151,152,153,128,154,28,127,151,152,153,128,154,28,127,151,152,153,128,154,28,127,151,152,153,128,154,28,151,152,153,128,154,28,28,127,151,152,153,153,128,128,154,28,127,128,151,154,151,154,152,128,151,152,153,128,154,28,127,151,152,153,128,154,28,127,152,153,154,128,154,28,128,128,151,152,153,128,154,154,151,152,153,128,154,127,28,151,152,153,128,154,28,127,151,152,153,128,154,28,127,151,152,153,128,154,28,127,151,152,153,128,154,28,127,250,250,250,251,252,253,252,253,252,253,252,253,252,253,254,255,256,257,258,259,259,258,260,261,0,0,0,0,0,0,0,0,0,0,0,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,262,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,156,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,158,159,160,162,163,164,165,166,167,21,0,0,0,0,263,263,0,0,173,0,0,0,0,21,21,21,129,0,0,110,21,21,263,180,0,180,0,0,110,113,175,0,0,0,0,110,0,173,175,113,0,264,113,0,180,170,171,113,175,172,176,173,178,110,174,21,180,170,171,113,175,172,176,173,178,110,174,21,129,129,129,129,129,129,129,129,170,171,113,172,173,110,174,170,171,113,172,173,110,174,171,113,172,173,174,174,180,170,170,171,113,175,172,176,173,178,110,174,21,180,170,171,113,175,172,176,173,178,110,174,21,113,180,170,171,113,175,172,176,173,178,110,174,21,171,171,113,172,173,110,171,171,113,113,175,175,172,176,173,178,110,174,21,21,171,180,180,180,170,171,113,113,175,172,176,173,178,110,174,21,21,21,178,178,113,175,171,113,263,265,263,265,171,113,172,173,180,113,171,113,172,173,180,170,171,113,175,172,176,173,178,110,174,21,180,170,171,113,175,172,176,173,178,110,174,21,157,161,170,170,113,175,178,161,180,170,170,180,180,113,264,110,264,110,264,110,113,113,171,172,176,171,0,113,129,171,171,0,129,171,172,176,129,178,171,113,172,173,129,171,21,171,171,171,129,171,0,170,171,113,172,173,110,174,175,171,113,175,21,129,129,171,180,170,171,113,175,172,176,173,178,110,174,21,180,170,171,113,175,172,176,173,178,110,174,21,180,170,171,113,175,172,176,173,178,110,174,21,180,170,171,113,175,172,176,173,178,110,174,21,186,186,186,185,0,186,0,0,0,186,0,266,266,266,266,266,185,185,186,187,266,185,186,187,266,185,186,187,185,186,187,185,187,185,186,187,266,185,186,187,266,187,185,186,187,266,185,186,187,185,185,186,186,187,187,185,186,187,266,187,187,187,187,187,185,187,185,187,185,186,187,266,185,186,187,266,187,188,187,188,187,187,187,187,187,187,185,187,186,187,187,187,185,186,187,187,187,185,186,187,185,186,187,266,185,186,187,266,185,186,187,266,185,186,187,266,187,187,185,0,267,267,267,0,0,0,199,199,199,199,0,0,52,196,52,199,196,59,52,199,196,59,52,52,0,52,59,52,199,196,196,59,52,199,196,59,52,52,199,196,59,52,196,0,52,52,199,196,196,59,52,199,196,59,52,52,52,0,52,52,52,52,52,0,196,52,199,196,59,52,199,196,59,268,52,196,52,52,52,52,52,52,59,52,52,52,0,52,0,196,52,199,196,59,52,199,196,59,0,52,199,196,59,0,52,199,196,59,0,0,207,0,0,0,0,0,207,0,207,205,203,204,206,207,205,203,204,206,203,204,203,204,223,203,204,206,0,203,204,206,207,205,203,204,206,207,205,203,204,206,207,205,203,204,206,205,205,207,205,203,204,206,207,205,203,204,206,207,205,203,204,206,207,205,203,204,206,205,206,205,205,203,204,207,205,203,204,206,207,205,203,204,206,207,205,203,204,206,207,205,203,204,206,269,270,270,269,270,0,0,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,0,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,218,213,218,213,27,218,27,0,27,27,27,215,27,27,27,27,27,27,218,213,215,27,0,0,0,0,0,0,0,0,215,0,0,27,126,198,198,126,198,213,27,215,217,189,126,198,218,213,27,215,217,189,126,198,218,126,213,27,215,217,189,126,198,218,213,27,215,217,189,126,198,218,213,189,189,126,198,218,213,27,215,217,217,189,126,198,218,213,27,215,217,189,126,198,218,271,217,217,213,27,215,217,189,126,198,218,213,27,215,189,218,126,213,27,27,215,217,189,126,198,218,213,213,213,27,27,27,215,217,189,126,198,218,213,213,271,217,217,126,213,27,215,217,189,126,198,218,213,27,215,217,189,126,198,218,217,126,213,189,27,126,198,272,217,217,190,217,198,126,198,213,27,215,217,189,126,198,218,27,198,198,213,27,215,217,189,126,198,218,213,27,215,217,189,126,198,218,213,27,215,217,189,126,198,218,213,27,215,217,189,126,198,218,273,0,226,0,225,225,0,0,225,226,0,0,0,226,193,193,193,193,193,193,193,193,193,194,192,193,226,225,194,192,193,226,225,193,194,192,193,226,225,194,192,193,226,225,226,225,193,193,194,192,226,225,194,192,193,226,225,194,192,193,226,225,193,193,193,194,192,193,226,225,193,193,226,225,193,193,193,194,192,193,226,225,194,192,193,226,225,226,225,226,225,193,194,192,193,226,225,194,192,193,226,225,193,193,193,193,193,226,225,193,193,193,226,194,192,193,226,225,194,192,193,226,225,194,192,193,226,225,194,192,193,226,225,193,193,194,192,193,226,225,33,33,33,33,0,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,0,33],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,1],1],[2,3],[2],[4,5],[[],6],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[10,[[9,[7,8]]]]]],[2,2],[4,4],[11,11],[12,12],[13,13],[14,14],[15,15],[1,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[],4],[[],15],[[],1],[[],4],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],0,0,[[],[[10,[2]]]],[[],[[10,[11]]]],[[],[[10,[14]]]],[[],[[10,[15]]]],[[],[[10,[1]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[2,2],16],[[4,4],16],[[11,11],16],[[12,12],16],[[13,13],16],[[14,14],16],[[15,15],16],[[1,1],16],0,[[4,6],17],[[4,6],17],[[18,19],20],[[18,19],20],[[2,19],20],[[4,19],20],[[11,19],20],[[12,19],20],[[13,19],20],[[14,19],20],[[15,19],20],[[1,19],20],[[1,19],20],0,[21,18],[22,18],[23,18],[24,18],[25,18],[26,18],[27,18],[28,18],[29,18],[30,18],[31,18],[32,18],[33,18],[34,18],[35,18],[36,18],[[]],[37,18],[38,18],[39,18],[[]],[[]],[[]],[[]],[[]],[[]],[40,15],[[]],[[]],[5,4],[5,4],[5,4],[5,4],[[17,6],4],[[17,6],4],[[],17],[[],17],[1,17],[1,17],[2],[11],0,0,[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[[42,[41]],[42,[17]]],[[42,[15]]]],[13,43],0,[[4,4],[[42,[44]]]],[45],0,0,0,0,[2,10],[11,10],[14,10],[15,10],[1,10],0,[[4,4]],[46,1],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],47],[[],47],0,0,[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],0,[13,48],0,[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],0,0,[[],6],[[],50],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],10],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[51,[[10,[18]]]],[[50,[42,[41]]],[[10,[18]]]],[[52,[42,[41]]],[[10,[18]]]],[53,53],[54,54],[55,55],[[]],[[]],[[]],0,[[],54],[[],55],[6],[6],[6],[6],[6],[6],[6],[6],[6],0,[[53,53],16],0,[6,[[10,[4,18]]]],[[53,19],20],[[54,19],20],[[55,19],20],[[]],[[]],[[]],[[],[[10,[18]]]],[17,[[10,[56,18]]]],[[],[[57,[53]]]],[[],17],[[],[[10,[41,18]]]],[58,[[10,[[42,[51]],18]]]],[53],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[],55],[[],54],[[]],0,[[52,[42,[41]],59],[[10,[18]]]],[[]],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[5,[42,[47]]],[[10,[18]]]],[[54,5,[42,[47]]],[[10,[18]]]],[[55,5,[42,[47]]],[[10,[18]]]],[[]],[[]],[[]],[[[61,[60]]],[[10,[18]]]],[[[61,[60]]],[[10,[18]]]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[62,51],[[10,[18]]]],[63,63],[[]],[6],[6],[6],[6],[[],[[10,[63]]]],[6],[6],[[63,63],16],[[62,6],[[10,[4,18]]]],[[63,19],20],[64,62],[65,62],[66,62],[[]],[67,62],[[]],[68,63],[69,63],[70,63],[71,63],[[],[[10,[62,18]]]],[[62,17],[[10,[56,18]]]],[62,[[57,[53]]]],[62,[[10,[41,18]]]],[[62,58],[[10,[[42,[51]],18]]]],[[],6],[[],6],[[]],[[]],[63,10],[[]],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[]],[[]],[[62,[61,[60]]],[[10,[18]]]],[[62,[61,[60]]],[[10,[18]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[72,51]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[66,51],[[10,[18]]]],[73,73],[69,69],[[]],[[]],[[74,[75,[72]],76],[[10,[77,36]]]],[[78,74,42,[75,[72]],76],[[10,[77,36]]]],[[],72],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[],[[10,[73]]]],[[],[[10,[69]]]],[6],[6],[6],[6],[6],[6],[[73,73],16],[[69,69],16],[[66,6],[[10,[4,18]]]],[[72,19],20],[[77,19],20],[[66,19],20],[[73,19],20],[[69,19],20],[[36,19],20],[[36,19],20],[[]],[[]],[[]],[[]],[[]],[79,36],[80,36],[81,36],[82,36],[18,36],[[]],[[],[[10,[66,18]]]],[[66,17],[[10,[56,18]]]],[66,[[57,[53]]]],[66,[[10,[41,18]]]],[77,[[75,[72]]]],[77,76],[[72,83],[[42,[51]]]],[[66,58],[[10,[[42,[51]],18]]]],[77,84],[[72,58],16],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[77,16],[72,[[9,[51]]]],0,[[],72],[[[9,[77]],[86,[85]],[42,[6]]],[[10,[66,36]]]],0,[45],[[77,50,[42,[87]]],[[10,[[42,[88]],36]]]],[[77,88],[[10,[36]]]],[73,10],[69,10],0,0,0,0,[[]],[[]],[[],47],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],[[]],[[66,[61,[60]]],[[10,[18]]]],0,0,[[]],[[]],[[]],[[]],[[64,51],[[10,[18]]]],[71,71],[[]],[6],[64],[6],[6],[6],[[],[[10,[71]]]],[6],[6],[[71,71],16],[[64,6],[[10,[4,18]]]],[[71,19],20],[[]],[89,64],[[]],[[],[[10,[64,18]]]],[[64,17],[[10,[56,18]]]],[64,[[57,[53]]]],[64,[[10,[41,18]]]],[[64,58],[[10,[[42,[51]],18]]]],[[],6],[[],6],[[]],[[]],0,[71,10],0,0,0,[[]],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],0,[[]],[[]],[[64,[61,[60]]],[[10,[18]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[65,51],[[10,[18]]]],[70,70],[[]],0,[6],[65],[6],[6],[6],[6],[6],[[],[[10,[70]]]],[6],[6],[6],[[70,70],16],[[65,6],[[10,[4,18]]]],[[26,19],[[10,[90]]]],[[26,19],[[10,[90]]]],[[65,19],20],[[70,19],20],[[]],[91,26],[38,26],[81,26],[92,26],[93,26],[25,26],[[]],[[]],[[94,6],65],[[],[[10,[65,18]]]],[[65,17],[[10,[56,18]]]],[65,[[57,[53]]]],[65,[[10,[41,18]]]],[[65,58],[[10,[[42,[51]],18]]]],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[50,6],65],[[47,6],70],[45],0,[70,10],0,0,[[]],[[],47],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[65,[61,[60]]],[[10,[18]]]],[[65,3],65],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[67,51],[[10,[18]]]],[[95,50,[42,[41]]],[[10,[18]]]],[68,68],[96,96],[97,97],[95,95],[[]],[[]],[[]],[[]],[[97,97],44],[[],96],0,[67],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[],[[10,[68]]]],[[],[[10,[96]]]],[[],[[10,[97]]]],[6],[6],[6],[6],[6],[[68,68],16],[[96,96],16],[[97,97],16],[[67,6],[[10,[4,18]]]],[[67,19],20],[[68,19],20],[[96,19],20],[[97,19],20],[[95,19],20],0,[[]],[[]],[[]],[[]],[[]],[[],[[10,[67,18]]]],[[67,17],[[10,[56,18]]]],[67,[[57,[53]]]],[[],17],[67,[[10,[41,18]]]],[[67,58],[[10,[[42,[51]],18]]]],[97],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],0,0,[[97,97],[[42,[44]]]],0,[68,10],[96,10],[97,10],0,0,0,0,[[]],[[]],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],0,0,[[]],[[]],[[]],[[]],[[]],0,0,[[67,[61,[60]]],[[10,[18]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[98],0,[[]],[[]],[[]],[[]],[[2,86],[[10,[18]]]],[[98,2,86],[[10,[18]]]],[99,99],[[]],[[],[[10,[18]]]],[98,[[10,[18]]]],0,[2,[[10,[[42,[41]],18]]]],[[98,2],[[10,[[42,[41]],18]]]],[100,[[10,[42,18]]]],[[98,100],[[10,[42,18]]]],[58,[[10,[[42,[51]],18]]]],[[98,58],[[10,[[42,[51]],18]]]],[[2,41],[[10,[[42,[100]],18]]]],[[98,2,41],[[10,[[42,[100]],18]]]],[[],[[10,[[42,[99]],18]]]],[98,[[10,[[42,[99]],18]]]],[[58,16],[[10,[[42,[14]],18]]]],[[98,58,16],[[10,[[42,[14]],18]]]],[43,[[10,[[42,[11]],18]]]],[[98,43],[[10,[[42,[11]],18]]]],[6],[6],[6],[6],[[],[[10,[99]]]],[6],[6],[[98,19],20],[[99,19],20],[[]],[[]],[[],[[10,[18]]]],[[],[[10,[98,18]]]],[2,[[10,[[42,[41]],18]]]],[[98,2],[[10,[[42,[41]],18]]]],[100,[[10,[42,18]]]],[[98,100],[[10,[42,18]]]],[58,[[10,[[42,[51]],18]]]],[[98,58],[[10,[[42,[51]],18]]]],[[2,41],[[10,[[42,[100]],18]]]],[[98,2,41],[[10,[[42,[100]],18]]]],[[],[[10,[[42,[99]],18]]]],[98,[[10,[[42,[99]],18]]]],[[58,16],[[10,[[42,[14]],18]]]],[[98,58,16],[[10,[[42,[14]],18]]]],[43,[[10,[[42,[11]],18]]]],[[98,43],[[10,[[42,[11]],18]]]],[2,[[10,[41,18]]]],[[98,2],[[10,[41,18]]]],[[],6],[[],6],[[]],[[]],[[],[[10,[[9,[51]],18]]]],[98,[[10,[[9,[51]],18]]]],[[[42,[2]]],[[10,[[9,[100]],18]]]],[[98,[42,[2]]],[[10,[[9,[100]],18]]]],[16,[[10,[[9,[14]],18]]]],[[98,16],[[10,[[9,[14]],18]]]],[[],[[10,[[9,[11]],18]]]],[98,[[10,[[9,[11]],18]]]],0,[[[86,[85]]],98],0,[99,10],[[2,41],[[10,[18]]]],[[98,2,41],[[10,[18]]]],[51,[[10,[18]]]],[[98,51],[[10,[18]]]],[[100,2,41],[[10,[18]]]],[[98,100,2,41],[[10,[18]]]],[99,[[10,[18]]]],[[98,99],[[10,[18]]]],[14,[[10,[18]]]],[[98,14],[[10,[18]]]],[11,[[10,[18]]]],[[98,11],[[10,[18]]]],[[]],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[101],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[101,2,86],[[10,[18]]]],[101,[[10,[18]]]],[[102,2],[[10,[[42,[41]],18]]]],[[101,2],[[10,[[42,[41]],18]]]],[[102,100],[[10,[42,18]]]],[[101,100],[[10,[42,18]]]],[[102,58],[[10,[[42,[51]],18]]]],[[101,58],[[10,[[42,[51]],18]]]],[[102,2,41],[[10,[[42,[100]],18]]]],[[101,2,41],[[10,[[42,[100]],18]]]],[102,[[10,[[42,[99]],18]]]],[101,[[10,[[42,[99]],18]]]],[[102,58,16],[[10,[[42,[14]],18]]]],[[101,58,16],[[10,[[42,[14]],18]]]],[[102,43],[[10,[[42,[11]],18]]]],[[101,43],[[10,[[42,[11]],18]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[],[[10,[103]]]],[[],[[10,[104]]]],[[],[[10,[105]]]],[6],[6],[6],[6],[6],[[101,19],20],[[103,19],20],[[104,19],20],[[105,19],20],[[],102],[[]],[[],102],[[],102],[98,101],[106,101],[107,101],[[]],[[]],[[]],[104,105],[[]],[[],105],[103,105],[[],[[10,[101,18]]]],[[101,2],[[10,[[42,[41]],18]]]],[[101,100],[[10,[42,18]]]],[[101,58],[[10,[[42,[51]],18]]]],[[101,2,41],[[10,[[42,[100]],18]]]],[101,[[10,[[42,[99]],18]]]],[[101,58,16],[[10,[[42,[14]],18]]]],[[101,43],[[10,[[42,[11]],18]]]],[[101,2],[[10,[41,18]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[101,[[10,[[9,[51]],18]]]],[[101,[42,[2]]],[[10,[[9,[100]],18]]]],[[101,16],[[10,[[9,[14]],18]]]],[101,[[10,[[9,[11]],18]]]],0,0,[103,10],[104,10],[105,10],[[102,2,41],[[10,[18]]]],[[101,2,41],[[10,[18]]]],[[102,51],[[10,[18]]]],[[101,51],[[10,[18]]]],[[102,100,2,41],[[10,[18]]]],[[101,100,2,41],[[10,[18]]]],[[102,99],[[10,[18]]]],[[101,99],[[10,[18]]]],[[102,14],[[10,[18]]]],[[101,14],[[10,[18]]]],[[102,11],[[10,[18]]]],[[101,11],[[10,[18]]]],0,[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],0,[106],[[]],[[]],[[106,2,86],[[10,[18]]]],[106,[[10,[18]]]],[[],106],[[106,2],[[10,[[42,[41]],18]]]],[[106,100],[[10,[42,18]]]],[[106,58],[[10,[[42,[51]],18]]]],[[106,2,41],[[10,[[42,[100]],18]]]],[106,[[10,[[42,[99]],18]]]],[[106,58,16],[[10,[[42,[14]],18]]]],[[106,43],[[10,[[42,[11]],18]]]],[6],[6],[6],[[106,19],20],[[]],[[],[[10,[106,18]]]],[[106,2],[[10,[[42,[41]],18]]]],[[106,100],[[10,[42,18]]]],[[106,58],[[10,[[42,[51]],18]]]],[[106,2,41],[[10,[[42,[100]],18]]]],[106,[[10,[[42,[99]],18]]]],[[106,58,16],[[10,[[42,[14]],18]]]],[[106,43],[[10,[[42,[11]],18]]]],[[106,2],[[10,[41,18]]]],[[],6],[[]],[106,[[10,[[9,[51]],18]]]],[[106,[42,[2]]],[[10,[[9,[100]],18]]]],[[106,16],[[10,[[9,[14]],18]]]],[106,[[10,[[9,[11]],18]]]],[[],106],[[106,2,41],[[10,[18]]]],[[106,51],[[10,[18]]]],[[106,100,2,41],[[10,[18]]]],[[106,99],[[10,[18]]]],[[106,14],[[10,[18]]]],[[106,11],[[10,[18]]]],[[],10],[[],10],[[],49],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[108,76],[[10,[109,24]]]],[[],110],[[],110],[111,112],[[[108,[113]],41],[[108,[114]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[111,[[9,[111,8]]]],0,[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[112,[[10,[115]]]],[112,[[10,[115]]]],[112,[[10,[115]]]],[[],[[10,[115]]]],[[],[[10,[115]]]],[[],[[10,[115]]]],0,[116,116],[117,117],[108,108],[118,118],[119,119],[111,111],[[]],[[]],[[]],[[]],[[]],[[]],[[116,116],44],[[117,117],44],[[108,108],44],[[118,118],44],[[119,119],44],[[111,111],44],[111,16],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],0,[[[108,[113]],41],[[108,[114]]]],[[[108,[114]],120],[[10,[[108,[121]],122]]]],[[[108,[113]],120,41],[[10,[[108,[121]],122]]]],[108,123],[[],[[10,[108]]]],[[],[[10,[111]]]],[6],[6],[6],[6],[6],[6],[111,100],[[116,116],16],[[117,117],16],[[108,108],16],[[118,118],16],[[119,119],16],[[111,111],16],0,[108,[[10,[100,24]]]],0,[[111,124],[[10,[125]]]],[[126,127,120],[[10,[[42,[128]],29]]]],[[[108,[113]],126,127,120],[[10,[[42,[128]],29]]]],[[[111,[113,129]],126,127,120],[[10,[[42,[128]],29]]]],[[[108,[113]],120,100,[130,[41]]],[[10,[42,122]]]],[[116,19],[[10,[90]]]],[[117,19],[[10,[90]]]],[[108,19],[[10,[90]]]],[[108,19],[[10,[90]]]],[[118,19],[[10,[90]]]],[[119,19],[[10,[90]]]],[[111,19],[[10,[90]]]],[[111,19],[[10,[90]]]],[108,16],[111,16],[[]],[[]],[[]],[131,108],[132,108],[133,108],[134,108],[135,108],[136,108],[[]],[[]],[[]],[112,[[10,[111,24]]]],[50,[[10,[108,24]]]],[50,[[10,[111,24]]]],[[50,124],[[10,[111,24]]]],[50,[[10,[111,24]]]],[137,[[10,[108,24]]]],[137,[[10,[111,24]]]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[111,6],[[42,[111]]]],[[111,6],42],[108,[[10,[24]]]],[108,[[10,[24]]]],[111,16],[111,16],[[[108,[113]]],16],[116],[117],[108],[118],[119],[111],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[111,112],[[120,76],[[10,[29]]]],[[138,120,76],[[10,[29]]]],[[[108,[113]]],16],[111,16],[111,139],[111,140],[108,[[10,[141,24]]]],[111,[[10,[141,24]]]],[111,[[10,[142]]]],[[116,120],[[42,[143]]]],[111,[[42,[6]]]],[111,[[42,[6]]]],[111,[[42,[6]]]],[111,[[10,[6,24]]]],[108,[[10,[6,24]]]],[111,[[10,[6,24]]]],[[],50],[[],50],[[],50],[[[111,[144]]],[[10,[108,24]]]],[[],108],[[],108],[[[111,[118]]],[[10,[108,24]]]],[[6,[9,[8]]],[[10,[108,24]]]],[134,108],[136,108],[[],[[10,[108,24]]]],[[[111,[119]]],[[10,[108,24]]]],[[6,[9,[8]]],[[10,[108,24]]]],[[[42,[145]]],[[10,[108,24]]]],[[],[[10,[108,24]]]],[[[111,[119]]],[[10,[108,24]]]],[[6,[9,[8]]],[[10,[108,24]]]],0,0,[111,[[10,[24]]]],[100,[[10,[111,24]]]],[[120,50],[[10,[24]]]],[100,[[10,[111,24]]]],[[100,124],[[10,[111,24]]]],[[116,116],[[42,[44]]]],[[117,117],[[42,[44]]]],[[108,108],[[42,[44]]]],[[118,118],[[42,[44]]]],[[119,119],[[42,[44]]]],[[111,111],[[42,[44]]]],[[],6],[[],6],[[],6],0,[111,16],[108,[[10,[24]]]],[111,[[10,[125]]]],[[108,146],[[10,[24]]]],[111,[[10,[[9,[[9,[3,8]],8]],24]]]],[111,[[10,[[9,[[9,[3,8]],8]],24]]]],[108,[[10,[100,24]]]],[108,100],[111,6],[108,10],[111,10],[[],147],[[],147],[[],147],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],47],[[],47],[[[108,[113]],148],47],[111,[[10,[24]]]],[111,[[10,[24]]]],[108,10],[111,10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],0,[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[108,100],[[]],[[]],[[]],[[]],[[]],[[]],0,[111,16],0,[50,[[10,[47,29]]]],[50,[[10,[29]]]],[50,[[10,[47,29]]]],[50,[[10,[29]]]],0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[6],[6],[6],[[29,19],20],[[29,19],20],[38,29],[24,29],[149,29],[[]],[21,29],[28,29],[23,29],[150,29],[[],6],[[]],[45],[[],47],[[],10],[[],10],[[],49],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[151,151],[152,152],[153,153],[128,128],[154,154],[127,127],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[],154],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[151,151],16],[[152,152],16],[[153,153],16],[[128,128],16],[[154,154],16],[[28,28],16],[[151,19],20],[[152,19],20],[[153,19],20],[[128,19],20],[[154,19],20],[[28,19],20],[[28,19],20],[[127,19],20],[[]],[[]],[16,153],[[]],[152,128],[[]],[[]],[[]],[[]],[[128,155],[[10,[154,28]]]],[[],17],[[],17],[151],[154],[152,47],0,[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[152,16],[153,16],[154,16],0,[[154,154],[[42,[44]]]],[45],[128,16],0,[151,10],[152,10],[153,10],[128,10],[154,10],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],47],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[76,[[10,[156,29]]]],[[[158,[[157,[118]]]],76],[[10,[156,29]]]],[[[159,[[157,[119]]]],76],[[10,[156,29]]]],[[[160,[[157,[119]]]],76],[[10,[156,29]]]],[[[162,[[161,[118]]]],76],[[10,[156,29]]]],[[[163,[[161,[118]]]],76],[[10,[156,29]]]],[[[164,[[161,[119]]]],76],[[10,[156,29]]]],[[[165,[[161,[119]]]],76],[[10,[156,29]]]],[[[166,[[161,[119]]]],76],[[10,[156,29]]]],[[[167,[[161,[119]]]],76],[[10,[156,29]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[156,120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[120,76],[[10,[29]]]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],168],[[],110],[[113,41],114],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[111,[[10,[115]]]],[112,[[10,[115]]]],[[],[[10,[115]]]],[[[170,[169,129]]],[[170,[169,129]]]],[171,171],[113,113],[172,172],[173,173],[110,110],[174,174],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[171,171],44],[[113,113],44],[[172,172],44],[[173,173],44],0,[[],174],[6],[[[170,[129]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[113,41],114],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[171,100],[[171,171],16],[[113,113],16],[[172,172],16],[[173,173],16],[[110,110],16],[[171,19],[[10,[90]]]],[[171,19],[[10,[90]]]],[[113,19],[[10,[90]]]],[[113,19],[[10,[90]]]],[[175,19],[[10,[90]]]],[[175,19],[[10,[90]]]],[[172,19],[[10,[90]]]],[[176,19],[[10,[90]]]],[[173,19],[[10,[90]]]],[[[178,[[0,[177,129]]]],19],20],[[110,19],20],[[174,19],20],[[21,19],20],[[21,19],20],[171,16],[179,[[180,[129]]]],[181,[[180,[129]]]],[[]],[[]],[[]],[[]],[114,113],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,21],[24,21],[[]],[[113,168],[[178,[129]]]],[[175,168],[[178,[129]]]],[50,[[10,[113]]]],[50,[[10,[175]]]],[137,[[10,[171,24]]]],[113,143],[[],[[10,[170]]]],[[],[[10,[170]]]],[[],[[10,[170]]]],[[],[[10,[170]]]],[[],17],[[],17],[[],17],[[],17],[[[180,[129]]],16],[113,16],[171],[113],[172],[173],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[10,[178,21]]]],[[[42,[182]],143],[[10,[178,21]]]],[[170,[42,[182]],143],[[10,[178,21]]]],[170,[[10,[178,21]]]],[113,[[10,[[178,[129]],21]]]],[175,[[10,[[178,[129]],21]]]],[[[178,[129]]],[[10,[[178,[129]],21]]]],[[],[[10,[180,21]]]],[[[180,[129]]],[[10,[[180,[129]],21]]]],[170,[[10,[180,21]]]],[[[170,[129]]]],[[[180,[129]],76],[[42,[179]]]],[[[180,[129]],76,120],181],[113,16],[[],16],[110,16],[[],16],[110,16],[[],16],[110,16],[113,16],[113,16],0,0,0,[171,[[10,[141,24]]]],[[],168],[113,183],[111,[[42,[6]]]],[171,6],[171,6],[[168,168],168],[[],50],[[6,[9,[8]]],[[10,[171,24]]]],0,0,[111,[[10,[24]]]],[[[178,[129]],168],[[178,[129]]]],[[171,171],[[42,[44]]]],[[113,113],[[42,[44]]]],[[172,172],[[42,[44]]]],[[173,173],[[42,[44]]]],[[],6],0,[45],[171,[[10,[24]]]],[171,[[10,[[9,[[9,[3,8]],8]],24]]]],[171,6],[[],147],[171,112],[[],168],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[175,120],[[10,[113,184]]]],[[],47],[[],47],[[],47],[[],47],[111,[[10,[24]]]],[111,[[10,[24]]]],[171,[[10,[171]]]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[185,185],[186,186],[187,187],[[]],[[]],[[]],[[185,185],44],[[187,187],44],[6],[6],[6],[6],[6],[6],[6],[6],[[],[[10,[187]]]],[6],[6],[6],[6],[[185,185],16],[[186,186],16],[[187,187],16],[[185,19],[[10,[90]]]],[[185,19],[[10,[90]]]],[[186,19],[[10,[90]]]],[[186,19],[[10,[90]]]],[[187,19],[[10,[90]]]],[[187,19],[[10,[90]]]],[[]],[[]],[[]],[[]],[[],[[10,[187,186]]]],[185,[[10,[187,186]]]],[50,[[10,[187,186]]]],[[185,6],[[10,[187,186]]]],[[],[[10,[[170,[187,129]]]]]],[[],17],[[],17],[185],[187],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[187,[42,[182]],143],[[10,[[178,[129]],21]]]],[[188,[42,[182]],143],[[10,[[178,[129]],21]]]],[187,[[10,[[180,[129]],21]]]],[188,[[10,[[180,[129]],21]]]],[187,185],[[],[[10,[185,186]]]],[[],[[10,[187,186]]]],[185,[[10,[187,186]]]],[[185,50],[[10,[187,186]]]],[50,[[10,[187,186]]]],[[185,185],[[42,[44]]]],[[187,187],[[42,[44]]]],[45],[187,10],[187,[[9,[3,8]]]],[187],[[]],[[]],[[]],[187],[[187,50]],[[],47],[[],47],[[],47],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[187,6],[187,[[0,[46,169]]]],[[185,50]],0,[[],[[42,[17]]]],[[],[[42,[4]]]],[6,[[42,[48]]]],0,0,0,0,0,0,0,0,0,[[52,2,189,[75,[190]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[52,58],[[10,[[193,[191,192]],18]]]],[52,[[193,[191,194]]]],0,[52,195],[[],59],[6],[6],[196],[6],[6],[6],[6],[6],[6],[[52,2],47],[6],[6],[6],[6],[[52,41],[[10,[16,18]]]],[[196,196],16],0,[[52,197,198],[[10,[16,18]]]],[[[52,[177]],19],20],[[199,19],20],[[196,19],20],[[196,19],20],[[59,19],20],[[]],[[]],[[]],[[]],[[52,199],[[10,[196,18]]]],[52,[[10,[1,18]]]],[[52,2],138],[50],[[52,199],[[10,[196,18]]]],[[52,11,[42,[200]],16],[[10,[201,18]]]],[[52,2],[[75,[126]]]],[[52,58,16],[[10,[[42,[14]],18]]]],[[52,43],[[10,[[42,[11]],18]]]],0,0,[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[100,16],[[52,100],[[10,[16,18]]]],0,[[52,16],[[10,[[9,[14]],18]]]],[52,[[10,[[9,[11]],18]]]],[52,76],[[202,[42,[202]],76],[[10,[52,18]]]],[[202,[42,[202]],76],[[10,[52,18]]]],[[52,2],[[10,[[42,[128]],18]]]],0,[[52,2],[[10,[[42,[138]],18]]]],[52,120],[[52,197,198],[[10,[16,18]]]],0,[[52,59],[[10,[18]]]],0,[[],47],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],0,[[],49],[[],49],[[],49],[[],49],0,[[]],[[]],[[]],[[]],[[42,76,120],[[10,[47,18]]]],0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[203,203],[204,204],[[]],[[]],[[[9,[12]],[9,[12]],4,17,100],[[10,[205,18]]]],[[203,[9,[12]],[9,[12]],4,17,100],[[10,[205,18]]]],[[204,[9,[12]],[9,[12]],4,17,100],[[10,[205,18]]]],[[206,[9,[12]],[9,[12]],4,17,100],[[10,[205,18]]]],[[17,4,100],207],[[],203],[[],204],[[],206],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],0,0,[[207,19],20],[[205,19],20],[[203,19],20],[[204,19],20],[[206,19],20],[[]],[[]],[[]],[[]],[[]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[205,17],[17,206],0,[205,17],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,[[]],[[]],[208,[[42,[47]]]],[6],[6],[208,47],[[],[[10,[208]]]],[6],[[52,50,16],[[10,[208,50]]]],[[208,19],20],[[]],[50,[[10,[208]]]],[[],6],[[]],0,[208,10],[208,47],[[],10],[[],10],[[],49],[[]],0,[[]],[[]],[6],[6],[6],[[209,19],20],[[]],[[210,211],[[10,[209,212]]]],[[209,120],213],[[],6],[[]],[[209,197,198,120],[[10,[27]]]],[[],10],[[],10],[[],49],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[126,213,189,[75,[190]]],[[42,[[75,[190]]]]]],0,0,[[126,120],214],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[214,108,120],126],[213,213],[27,27],[215,215],[[[217,[[0,[169,216,177,169]]]]],[[217,[[0,[169,216,177,169]]]]]],[189,189],[126,126],[198,198],[218,218],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[213,213],44],[[189,189],44],[[],189],[[],126],[[],198],[[],218],[6],[6],[6],[[[217,[[0,[216,177,169]]]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[],[[42,[175]]]],[[[217,[219]]],[[42,[175]]]],[[[217,[[116,[179]]]]],[[42,[175]]]],[6],[6],[6],[6],[6],[6],[6],[6],[[213,213],16],[[27,27],16],[[215,215],16],[[189,189],16],[[218,218],16],[[126,213],[[42,[75]]]],[[213,19],20],[[27,19],20],[[27,19],20],[[215,19],20],[[[217,[[0,[177,216,177,169]]]],19],20],[[189,19],20],[[126,19],20],[[198,19],20],[[218,19],20],[220,213],[[]],[183,213],[221,27],[[]],[212,27],[[]],[[]],[[]],[[]],[[]],[[]],[[],17],[213],[120,213],[[[217,[219]],120],213],[[[217,[[116,[179]]]],120],213],[126,[[9,[213]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[216,177,169]],215],[[217,[[0,[216,177,169]]]]]],[[],126],[[213,213],[[42,[44]]]],[[189,189],[[42,[44]]]],[45],[[126,213,189],[[42,[[75,[190]]]]]],0,[[197,6,198,120],[[10,[27]]]],[[[217,[[116,[179]]]],197,6,198,120],[[10,[27]]]],[[[217,[219]],197,6,198,120],[[10,[27]]]],[[197,198,120],[[10,[27]]]],[[197,198,120],[[10,[27]]]],0,[126,[[9,[75]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],47],0,0,[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[],49],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],17],0,0,0,0,0,0,0,0,0,0,0,0,[[[193,[222,[223,[222]],194]]],[[193,[222,[223,[222]],194]]]],[[[193,[222,[223,[222]],224]],43,201,6],[[10,[[193,[222,[223,[222]],224]],18]]]],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],194]],100,17],[[193,[222,[223,[222]],194]]]],[[[193,[222,[223,[222]],224]],43],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],43],[[10,[[193,[222,[223,[222]],224]],18]]]],[[[193,[222,[223,[222]],224]]],[[10,[[193,[222,[223,[222]],224]],18]]]],[[[193,[222,[223,[222]],224]],16],[[193,[222,[223,[222]],224]]]],[[[193,[222,191,192]],100],[[10,[[193,[222,191,192]],18]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[193,[222,[223,[222]],224]],225],[[193,[222,[223,[222]],224]]]],[194,194],[192,192],[[[193,[169]]],[[193,[169]]]],[226,226],[225,225],[[]],[[]],[[]],[[]],[[]],[[226,226],44],[[225,225],44],[[[193,[222,[223,[222]],224]],[223,[222]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],41],[[193,[222,[223,[222]],224]]]],[[],194],[[],192],[[],226],[[],225],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],194]],100],[[193,[222,[223,[222]],194]]]],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[6],[6],[6],[6],[6],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],227],[[193,[222,[223,[222]],224]]]],[[226,226],16],[[225,225],16],[[[193,[222,[223,[222]],224]],17],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],4],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]]],[[10,[18]]]],[[194,19],20],[[192,19],20],[[[193,[177,177,177]],19],20],[[226,19],20],[[225,19],20],[[]],[[]],[[]],[[]],[[]],[[],17],[[],17],[226],[225],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],228],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],226],[[193,[222,[223,[222]],224]]]],[[226,226],[[42,[44]]]],[[225,225],[[42,[44]]]],[[[193,[222,[223,[222]],224]],[155,[47,[9,[6]]]],2],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],194]],9],[[193,[222,[223,[222]],194]]]],[[[193,[222,[223,[222]],224]],200],[[193,[222,[223,[222]],224]]]],[[226,51]],[[]],[[]],[[]],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],49],[[],49],[[],49],[[],49],[[],49],[[[193,[222,[223,[222]],224]],[9,[43]]],[[193,[222,[223,[222]],224]]]],[[[193,[222,[223,[222]],224]],229],[[193,[222,[223,[222]],224]]]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[6],[6],[6],[[33,19],20],[[33,19],20],[18,33],[[]],[230,33],[[],6],[[]],[45],[[],47],[[],10],[[],10],[[],49],[51,[[10,[33]]]],[[]]],"p":[[3,"Balance"],[4,"KeychainKind"],[15,"u8"],[3,"FeeRate"],[15,"f32"],[15,"usize"],[3,"u5"],[3,"Global"],[3,"Vec"],[4,"Result"],[3,"LocalUtxo"],[3,"WeightedUtxo"],[4,"Utxo"],[3,"TransactionDetails"],[3,"BlockTime"],[15,"bool"],[15,"u64"],[4,"Error"],[3,"Formatter"],[6,"Result"],[4,"KeyError"],[4,"PsbtParseError"],[4,"Error"],[4,"Error"],[4,"Error"],[4,"EsploraError"],[4,"SignerError"],[4,"PolicyError"],[4,"Error"],[4,"Error"],[4,"Error"],[4,"Error"],[4,"VerifyError"],[4,"Error"],[4,"Error"],[4,"CompactFiltersError"],[4,"Error"],[4,"Error"],[3,"Error"],[3,"BlockTime"],[15,"u32"],[4,"Option"],[3,"OutPoint"],[4,"Ordering"],[3,"Demand"],[8,"Iterator"],[3,"String"],[3,"TxOut"],[3,"TypeId"],[15,"str"],[3,"Transaction"],[3,"Wallet"],[4,"Capability"],[3,"NoopProgress"],[3,"LogProgress"],[3,"BlockHash"],[3,"HashSet"],[3,"Txid"],[3,"SyncOptions"],[8,"Progress"],[3,"Box"],[4,"AnyBlockchain"],[4,"AnyBlockchainConfig"],[3,"ElectrumBlockchain"],[3,"EsploraBlockchain"],[3,"CompactFiltersBlockchain"],[3,"RpcBlockchain"],[3,"RpcConfig"],[3,"CompactFiltersBlockchainConfig"],[3,"EsploraBlockchainConfig"],[3,"ElectrumBlockchainConfig"],[3,"Mempool"],[3,"BitcoinPeerConfig"],[8,"ToSocketAddrs"],[3,"Arc"],[4,"Network"],[3,"Peer"],[8,"ToTargetAddr"],[4,"Error"],[3,"Error"],[3,"Error"],[3,"SystemTimeError"],[4,"Inventory"],[3,"VersionMessage"],[3,"Path"],[8,"AsRef"],[3,"Duration"],[4,"NetworkMessage"],[3,"Client"],[3,"Error"],[3,"Transport"],[4,"Error"],[3,"ParseIntError"],[3,"BlockingClient"],[3,"RpcBlockchainFactory"],[3,"RpcSyncParams"],[4,"Auth"],[3,"SqliteDatabase"],[3,"SyncTime"],[3,"Script"],[4,"AnyDatabase"],[4,"AnyBatch"],[3,"SledDbConfiguration"],[3,"SqliteDbConfiguration"],[4,"AnyDatabaseConfig"],[3,"MemoryDatabase"],[3,"Tree"],[4,"Descriptor"],[3,"Address"],[4,"ScriptContextEnum"],[3,"Miniscript"],[4,"Terminal"],[4,"DescriptorPublicKey"],[3,"DefiniteDescriptorKey"],[4,"ScriptContextError"],[3,"DescriptorXKey"],[4,"Wildcard"],[4,"Legacy"],[4,"Segwitv0"],[3,"Secp256k1"],[3,"PublicKey"],[4,"ConversionError"],[4,"DescriptorType"],[3,"ExtParams"],[4,"AnalysisError"],[3,"SignersContainer"],[4,"BuildSatisfaction"],[3,"Policy"],[8,"ScriptContext"],[3,"Range"],[3,"Pkh"],[3,"Tr"],[3,"Sh"],[3,"Wpkh"],[3,"Bare"],[3,"Wsh"],[3,"Tree"],[6,"ExtendedDescriptor"],[3,"Iter"],[3,"PkIter"],[4,"Policy"],[4,"LiftError"],[3,"DerivationPath"],[4,"BareCtx"],[4,"TapTree"],[3,"TxIn"],[4,"SigType"],[3,"HashMap"],[4,"Error"],[4,"Error"],[4,"PkOrF"],[4,"SatisfiableItem"],[4,"Satisfaction"],[3,"Condition"],[3,"BTreeMap"],[6,"DescriptorTemplateOut"],[8,"IntoDescriptorKey"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[8,"DerivableKey"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[6,"ValidNetworks"],[8,"Clone"],[3,"GeneratedKey"],[3,"SortedMultiVec"],[3,"SinglePub"],[4,"SinglePubKey"],[3,"PrivateKeyGenerateOptions"],[4,"DescriptorSecretKey"],[3,"SinglePriv"],[8,"Debug"],[4,"DescriptorKey"],[3,"ExtendedPrivKey"],[4,"ExtendedKey"],[3,"ExtendedPubKey"],[6,"KeySource"],[3,"Fingerprint"],[3,"DescriptorKeyParseError"],[4,"Language"],[4,"Error"],[3,"Mnemonic"],[6,"MnemonicWithPassphrase"],[3,"SignerOrdering"],[8,"TransactionSigner"],[6,"DefaultCoinSelectionAlgorithm"],[3,"BumpFee"],[3,"TxBuilder"],[3,"CreateTx"],[8,"Deref"],[3,"AddressInfo"],[3,"PartiallySignedTransaction"],[3,"SignOptions"],[4,"AddressIndex"],[3,"PsbtSighashType"],[3,"Input"],[8,"IntoWalletDescriptor"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"CoinSelectionResult"],[3,"BranchAndBoundCoinSelection"],[4,"Excess"],[3,"FullyNodedExport"],[3,"HWISigner"],[3,"HWIDevice"],[4,"HWIChain"],[4,"Error"],[4,"SignerId"],[6,"KeyMap"],[4,"SignerContext"],[8,"Sized"],[3,"SignerWrapper"],[4,"TapLeavesOptions"],[3,"PrivateKey"],[3,"Hash"],[4,"Error"],[8,"BatchDatabase"],[8,"CoinSelectionAlgorithm"],[8,"TxBuilderContext"],[4,"ChangeSpendPolicy"],[4,"TxOrdering"],[3,"Sequence"],[4,"LockTime"],[15,"i32"],[4,"Error"],[8,"Vbytes"],[13,"InsufficientFunds"],[13,"InvalidNetwork"],[13,"FeeRateTooLow"],[13,"FeeTooLow"],[13,"Foreign"],[8,"ConfigurableBlockchain"],[8,"BlockchainFactory"],[8,"Blockchain"],[8,"GetBlockHash"],[8,"GetHeight"],[8,"GetTx"],[8,"WalletSync"],[13,"Cookie"],[13,"UserPass"],[8,"ConfigurableDatabase"],[8,"Database"],[8,"BatchOperations"],[8,"ExtractPolicy"],[13,"PsbtTimelocks"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[8,"DescriptorTemplate"],[8,"GeneratableKey"],[8,"ExtScriptContext"],[8,"GeneratableDefaultOptions"],[4,"WordCount"],[8,"PsbtUtils"],[8,"IsDust"],[13,"Change"],[13,"NoChange"],[8,"SignerCommon"],[8,"InputSigner"],[13,"Tap"]]}\
}');
-if (window.initSearch) {window.initSearch(searchIndex)};
\ No newline at end of file
+if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
+if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
+++ /dev/null
-(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i<len;++i){if(x[i]===""){x.splice(i,1);i-=1}}}var levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}var s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){var i1=0,i2=0,a,b,c,c2,row=levenshtein_row2;while(i1<s1_len){row[i1]=++i1}while(i2<s2_len){c2=s2.charCodeAt(i2);a=i2;++i2;b=i2;for(i1=0;i1<s1_len;++i1){c=a+(s1.charCodeAt(i1)!==c2?1:0);a=row[i1];b=b<a?(b<c?b+1:c):(a<c?a+1:c);row[i1]=b}}return b}return s1_len+s2_len}window.initSearch=function(rawSearchIndex){var MAX_LEV_DISTANCE=3;var MAX_RESULTS=200;var GENERICS_DATA=2;var NAME=0;var INPUTS_DATA=0;var OUTPUT_DATA=1;var NO_TYPE_FILTER=-1;var searchIndex;var searchWords;var currentResults;var ALIASES={};var params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}function execQuery(query,searchWords,filterCrates){function itemTypeFromName(typename){for(var i=0,len=itemTypes.length;i<len;++i){if(itemTypes[i]===typename){return i}}return NO_TYPE_FILTER}var valLower=query.query.toLowerCase(),val=valLower,typeFilter=itemTypeFromName(query.type),results={},results_in_args={},results_returned={},split=valLower.split("::");removeEmptyStringsFromArray(split);function transformResults(results){var duplicates={};var out=[];for(var i=0,len=results.length;i<len;++i){var result=results[i];if(result.id>-1){var obj=searchIndex[result.id];obj.lev=result.lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){var result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort(function(aaa,bbb){var a,b;a=(aaa.word!==val);b=(bbb.word!==val);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==window.currentCrate);b=(bbb.item.crate!==window.currentCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(var i=0,len=results.length;i<len;++i){result=results[i];if(result.dontValidate){continue}var name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,split,parent)){result.id=-1}}return transformResults(results)}function extractGenerics(val){val=val.toLowerCase();if(val.indexOf("<")!==-1){var values=val.substring(val.indexOf("<")+1,val.lastIndexOf(">"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;x<elength;++x){if(!elems[obj[GENERICS_DATA][x][NAME]]){elems[obj[GENERICS_DATA][x][NAME]]=0}elems[obj[GENERICS_DATA][x][NAME]]+=1}var total=0;var done=0;var vlength=val.generics.length;for(x=0;x<vlength;++x){var lev=MAX_LEV_DISTANCE+1;var firstGeneric=val.generics[x];var match=null;if(elems[firstGeneric]){match=firstGeneric;lev=0}else{for(elem_name in elems){tmp_lev=levenshtein(elem_name,firstGeneric);if(tmp_lev<lev){lev=tmp_lev;match=elem_name}}}if(match!==null){elems[match]-=1;if(elems[match]==0){delete elems[match]}total+=lev;done+=1}else{return MAX_LEV_DISTANCE+1}}return Math.ceil(total/done)}}return MAX_LEV_DISTANCE+1}function checkType(obj,val,literalSearch){var lev_distance=MAX_LEV_DISTANCE+1;var tmp_lev=MAX_LEV_DISTANCE+1;var len,x,firstGeneric;if(obj[NAME]===val.name){if(literalSearch){if(val.generics&&val.generics.length!==0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;x<len;++x){if(!elems[obj[GENERICS_DATA][x][NAME]]){elems[obj[GENERICS_DATA][x][NAME]]=0}elems[obj[GENERICS_DATA][x][NAME]]+=1}len=val.generics.length;for(x=0;x<len;++x){firstGeneric=val.generics[x];if(elems[firstGeneric]){elems[firstGeneric]-=1}else{return MAX_LEV_DISTANCE+1}}return 0}return MAX_LEV_DISTANCE+1}return 0}else{if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length!==0){tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){var found=false;if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){found=obj[GENERICS_DATA].some(function(gen){return gen[NAME]===val.name})}return found?0:MAX_LEV_DISTANCE+1}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x<olength;++x){tmp_lev=Math.min(levenshtein(obj[GENERICS_DATA][x][NAME],val.name),tmp_lev)}if(tmp_lev!==0){for(x=0;x<olength&&tmp_lev!==0;++x){tmp_lev=Math.min(checkType(obj[GENERICS_DATA][x],val,literalSearch),tmp_lev)}}}return Math.min(lev_distance,tmp_lev)+1}function findArg(obj,val,literalSearch,typeFilter){var lev_distance=MAX_LEV_DISTANCE+1;if(obj&&obj.type&&obj.type[INPUTS_DATA]&&obj.type[INPUTS_DATA].length>0){var length=obj.type[INPUTS_DATA].length;for(var i=0;i<length;i++){var tmp=obj.type[INPUTS_DATA][i];if(!typePassesFilter(typeFilter,tmp[1])){continue}tmp=checkType(tmp,val,literalSearch);if(tmp===0){return 0}else if(literalSearch){continue}lev_distance=Math.min(tmp,lev_distance)}}return literalSearch?MAX_LEV_DISTANCE+1:lev_distance}function checkReturned(obj,val,literalSearch,typeFilter){var lev_distance=MAX_LEV_DISTANCE+1;if(obj&&obj.type&&obj.type.length>OUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;x<len;++x){var tmp=ret[x];if(!typePassesFilter(typeFilter,tmp[1])){continue}tmp=checkType(tmp,val,literalSearch);if(tmp===0){return 0}else if(literalSearch){continue}lev_distance=Math.min(tmp,lev_distance)}}return literalSearch?MAX_LEV_DISTANCE+1:lev_distance}function checkPath(contains,lastElem,ty){if(contains.length===0){return 0}var ret_lev=MAX_LEV_DISTANCE+1;var path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}var length=path.length;var clength=contains.length;if(clength>length){return MAX_LEV_DISTANCE+1}for(var i=0;i<length;++i){if(i+clength>length){break}var lev_total=0;var aborted=false;for(var x=0;x<clength;++x){var lev=levenshtein(path[i+x],contains[x]);if(lev>MAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;i<len;++i){aliases.push(createAliasFromItem(searchIndex[query_aliases[i]]))}}}else{Object.keys(ALIASES).forEach(function(crate){if(ALIASES[crate][query.search]){var pushTo=crate===window.currentCrate?crateAliases:aliases;var query_aliases=ALIASES[crate][query.search];var len=query_aliases.length;for(var i=0;i<len;++i){pushTo.push(createAliasFromItem(searchIndex[query_aliases[i]]))}}})}var sortFunc=function(aaa,bbb){if(aaa.path<bbb.path){return 1}else if(aaa.path===bbb.path){return 0}return-1};crateAliases.sort(sortFunc);aliases.sort(sortFunc);var pushFunc=function(alias){alias.alias=query.raw;var res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}function addIntoResults(isExact,res,fullId,id,index,lev){if(lev===0||(!isExact&&lev<=MAX_LEV_DISTANCE)){if(res[fullId]!==undefined){var result=res[fullId];if(result.dontValidate||result.lev<=lev){return}}res[fullId]={id:id,index:index,dontValidate:isExact,lev:lev,}}}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i<nSearchWords;++i){if(filterCrates!==undefined&&searchIndex[i].crate!==filterCrates){continue}in_args=findArg(searchIndex[i],val,true,typeFilter);returned=checkReturned(searchIndex[i],val,true,typeFilter);ty=searchIndex[i];fullId=ty.id;if(searchWords[i]===val.name&&typePassesFilter(typeFilter,searchIndex[i].ty)){addIntoResults(true,results,fullId,i,-1,0)}addIntoResults(true,results_in_args,fullId,i,-1,in_args);addIntoResults(true,results_returned,fullId,i,-1,returned)}query.inputs=[val];query.output=val;query.search=val}else if(val.search("->")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i<len;++i){inputs[i]=extractGenerics(inputs[i])}var output=extractGenerics(parts[1]);for(i=0;i<nSearchWords;++i){if(filterCrates!==undefined&&searchIndex[i].crate!==filterCrates){continue}var type=searchIndex[i].type;ty=searchIndex[i];if(!type){continue}fullId=ty.id;returned=checkReturned(ty,output,true,NO_TYPE_FILTER);if(output.name==="*"||returned===0){in_args=false;var is_module=false;if(input==="*"){is_module=true}else{var firstNonZeroDistance=0;for(it=0,len=inputs.length;it<len;it++){var distance=checkType(type,inputs[it],true);if(distance>0){firstNonZeroDistance=distance;break}}in_args=firstNonZeroDistance}addIntoResults(true,results_in_args,fullId,i,-1,in_args);addIntoResults(true,results_returned,fullId,i,-1,returned);if(is_module){addIntoResults(true,results,fullId,i,-1,0)}}}query.inputs=inputs.map(function(input){return input.name});query.output=output.name}else{query.inputs=[val];query.output=val;query.search=val;val=val.replace(/_/g,"");var valGenerics=extractGenerics(val);var paths=valLower.split("::");removeEmptyStringsFromArray(paths);val=paths[paths.length-1];var contains=paths.slice(0,paths.length>1?paths.length-1:1);var lev,j;for(j=0;j<nSearchWords;++j){ty=searchIndex[j];if(!ty||(filterCrates!==undefined&&ty.crate!==filterCrates)){continue}var lev_add=0;if(paths.length>1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}addIntoResults(false,results_in_args,fullId,j,index,in_args);addIntoResults(false,results_returned,fullId,j,index,returned);if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}addIntoResults(false,results,fullId,j,index,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i<len;++i){if(!(name.indexOf(keys[i])>-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type="",query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp="<span>"+path.replace(/::/g,"::</span><span>");if(tmp.endsWith("<span>")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" <i>(primitive type)</i>"}else if(type==="keyword"){extra=" <i>(keyword)</i>"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend","<span class=\"grey\"><i> - see </i></span>");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+"<span class=\""+type+"\">"+name+extra+"</span>");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(<br/>"+"Try on <a href=\"https://duckduckgo.com/?q="+encodeURIComponent("rust "+query.query)+"\">DuckDuckGo</a>?<br/><br/>"+"Or try looking in one of these:<ul><li>The <a "+"href=\"https://doc.rust-lang.org/reference/index.html\">Rust Reference</a> "+" for technical details about the language.</li><li><a "+"href=\"https://doc.rust-lang.org/rust-by-example/index.html\">Rust By "+"Example</a> for expository code examples.</a></li><li>The <a "+"href=\"https://doc.rust-lang.org/book/index.html\">Rust Book</a> for "+"introductions to language features and the language itself.</li><li><a "+"href=\"https://docs.rs\">Docs.rs</a> for documentation of crates released on"+" <a href=\"https://crates.io/\">crates.io</a>.</li></ul>"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return"<button class=\"selected\">"+text+" <div class=\"count\">("+nbElems+")</div></button>"}return"<button>"+text+" <div class=\"count\">("+nbElems+")</div></button>"}function showResults(results,go_to_first,filterCrates){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query,true);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(window.ALL_CRATES.length>1){crates=` in <select id="crate-search"><option value="All crates">All crates</option>`;for(let c of window.ALL_CRATES){crates+=`<option value="${c}" ${c == filterCrates && "selected"}>${c}</option>`}crates+=`</select>`}var output=`<div id="search-settings">
- <h1 class="search-results-title">Results for ${escape(query.query)} `+(query.type?" (type: "+escape(query.type)+")":"")+"</h1>"+crates+`</div><div id="titles">`+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"</div>";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;let crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;it<len;++it){if(arrays[it].length>positions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;x<arrays_len;++x){positions.push(0)}while(ret.length<MAX_RESULTS){var smallest=getSmallest(arrays,positions,notDuplicates);if(smallest===null){break}for(x=0;x<arrays_len&&ret.length<MAX_RESULTS;++x){if(arrays[x].length>positions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}function tokenizeQuery(raw){var i,matched;var l=raw.length;var depth=0;var nextAngle=/(<|>)/g;var ret=[];var start=0;for(i=0;i<l;++i){switch(raw[i]){case"<":nextAngle.lastIndex=i+1;matched=nextAngle.exec(raw);if(matched&&matched[1]==='>'){depth+=1}break;case">":if(depth>0){depth-=1}break;case",":if(depth===0){ret.push(raw.substring(start,i));start=i+1}break}}if(start!==i){ret.push(raw.substring(start,i))}return ret}var queries=tokenizeQuery(query.raw);var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i<len;++i){query=queries[i].trim();if(query.length!==0){var tmp=execQuery(getQuery(query),searchWords,filterCrates);results.in_args.push(tmp.in_args);results.returned.push(tmp.returned);results.others.push(tmp.others)}}if(queries.length>1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){searchState.putBackSearch(searchState.input)}return}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,searchWords,filterCrates),params["go_to_first"],filterCrates)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;var crateCorpus=rawSearchIndex[crate];searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=crateCorpus.t;var itemNames=crateCorpus.n;var itemPaths=crateCorpus.q;var itemDescs=crateCorpus.d;var itemParentIdxs=crateCorpus.i;var itemFunctionSearchTypes=crateCorpus.f;var paths=crateCorpus.p;var aliases=crateCorpus.a;var len=paths.length;for(i=0;i<len;++i){paths[i]={ty:paths[i][0],name:paths[i][1]}}len=itemTypes.length;var lastPath="";for(i=0;i<len;++i){if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase();searchWords.push(word)}else{word="";searchWords.push("")}var row={crate:crate,ty:itemTypes[i],name:itemNames[i],path:itemPaths[i]?itemPaths[i]:lastPath,desc:itemDescs[i],parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j<len;++j){ALIASES[crate][alias_name].push(local_aliases[j]+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function registerSearchEvents(){var searchAfter500ms=function(){searchState.clearInputTimeout();if(searchState.input.value.length===0){if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=function(e){if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",function(e){if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){var previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){var next=document.activeElement.nextElementSibling;if(next){next.focus()}var rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom<rect.height){window.scrollBy(0,rect.height)}e.preventDefault()}else if(e.which===37){nextTab(-1);e.preventDefault()}else if(e.which===39){nextTab(1);e.preventDefault()}});searchState.input.addEventListener("keydown",function(e){if(e.which===40){focusSearchResult();e.preventDefault()}});if(searchState.browserSupportsHistoryApi()){var previousTitle=document.title;window.addEventListener("popstate",function(e){var params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){updateLocalStorage("rustdoc-saved-filter-crate",ev.target.value);currentResults=null;search(undefined,true)}searchWords=buildIndex(rawSearchIndex);registerSearchEvents();if(searchState.getQueryStringParams().search){search()}};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})()
\ No newline at end of file
+++ /dev/null
-.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;}
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Settings of Rustdoc"><meta name="keywords" content="rust, rustlang, rust-lang"><title>Rustdoc settings</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="./normalize.css"><link rel="stylesheet" type="text/css" href="./rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="./ayu.css" disabled><link rel="stylesheet" type="text/css" href="./dark.css" disabled><link rel="stylesheet" type="text/css" href="./light.css" id="themeStyle"><script id="default-settings" ></script><script src="./storage.js"></script><script src="./crates.js"></script><script defer src="./main.js"></script>
- <noscript><link rel="stylesheet" href="./noscript.css"></noscript><link rel="alternate icon" type="image/png" href="./favicon-16x16.png"><link rel="alternate icon" type="image/png" href="./favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="./favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="./bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="./bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location">Settings</h2><div class="sidebar-elems"></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="./bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="./brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="./settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="./wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><h1 class="fqn"><span class="in-band">Rustdoc settings</span></h1><div class="settings"><div class="setting-line"><div class="title">Theme preferences</div><div class="sub-settings"><div class="setting-line"><label class="toggle"><input type="checkbox" id="use-system-theme" checked><span class="slider"></span></label><div>Use system theme</div></div><div class="setting-line"><div>Theme</div><label class="select-wrapper"><select id="theme" autocomplete="off"><option value="light" selected>light</option><option value="dark" >dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div><div class="setting-line"><div>Preferred dark theme</div><label class="select-wrapper"><select id="preferred-dark-theme" autocomplete="off"><option value="light" >light</option><option value="dark" selected>dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div><div class="setting-line"><div>Preferred light theme</div><label class="select-wrapper"><select id="preferred-light-theme" autocomplete="off"><option value="light" selected>light</option><option value="dark" >dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div></div>
- </div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-large-items" checked><span class="slider"></span></label><div>Auto-hide item contents for large items.</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-method-docs" ><span class="slider"></span></label><div>Auto-hide item methods' documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-trait-implementations" ><span class="slider"></span></label><div>Auto-hide trait implementation documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="go-to-only-result" ><span class="slider"></span></label><div>Directly go to item in search if there is only one result</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="line-numbers" ><span class="slider"></span></label><div>Show line numbers on code examples</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="disable-shortcuts" ><span class="slider"></span></label><div>Disable keyboard shortcuts</div></div></div><link rel="stylesheet" href="./settings.css"><script src="./settings.js"></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="./" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Settings of Rustdoc"><meta name="keywords" content="rust, rustlang, rust-lang"><title>Rustdoc settings</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="./static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="./static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="./static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="./static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="./static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="./static.files/storage-d43fa987303ecbbb.js"></script><script defer src="./static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="./static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="./static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="./static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="./static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="./bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="./bdk/index.html"><div class="logo-container">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div></a><h2 class="location">Settings</h2><div class="sidebar-elems"></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="./help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="./settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="./static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Rustdoc settings</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section>You need to enable Javascript be able to update your settings.</section></noscript><link rel="stylesheet" href="./static.files/settings-af96d9e2fc13e081.css"><script defer src="./static.files/settings-bebeae96e00e4617.js"></script></section></div></main><div id="rustdoc-vars" data-root-path="./" data-static-root-path="./static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
+++ /dev/null
-(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();updateLightAndDark();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){addClass(document.getElementById("theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("preferred-light-theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement.parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement.parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("theme").parentElement.parentElement,"hidden")}function updateLightAndDark(){if(getSettingValue("use-system-theme")!=="false"){showLightAndDark()}else{hideLightAndDark()}}function setEvents(){updateLightAndDark();onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})()
\ No newline at end of file
-var N = null;var sourcesIndex = {};
-sourcesIndex["bdk"] = {"name":"","dirs":[{"name":"blockchain","dirs":[{"name":"compact_filters","files":["mod.rs","peer.rs","store.rs","sync.rs"]},{"name":"esplora","files":["blocking.rs","mod.rs"]}],"files":["any.rs","electrum.rs","mod.rs","rpc.rs","script_sync.rs"]},{"name":"database","files":["any.rs","keyvalue.rs","memory.rs","mod.rs","sqlite.rs"]},{"name":"descriptor","files":["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]},{"name":"keys","files":["bip39.rs","mod.rs"]},{"name":"psbt","files":["mod.rs"]},{"name":"testutils","files":["mod.rs"]},{"name":"wallet","files":["coin_selection.rs","export.rs","hardwaresigner.rs","mod.rs","signer.rs","time.rs","tx_builder.rs","utils.rs","verify.rs"]}],"files":["error.rs","lib.rs","types.rs"]};
+var sourcesIndex = JSON.parse('{\
+"bdk":["",[["blockchain",[["compact_filters",[],["mod.rs","peer.rs","store.rs","sync.rs"]],["esplora",[],["blocking.rs","mod.rs"]]],["any.rs","electrum.rs","mod.rs","rpc.rs","script_sync.rs"]],["database",[],["any.rs","keyvalue.rs","memory.rs","mod.rs","sqlite.rs"]],["descriptor",[],["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]],["keys",[],["bip39.rs","mod.rs"]],["psbt",[],["mod.rs"]],["testutils",[],["mod.rs"]],["wallet",[],["coin_selection.rs","export.rs","hardwaresigner.rs","mod.rs","signer.rs","time.rs","tx_builder.rs","utils.rs","verify.rs"]]],["error.rs","lib.rs","types.rs"]]\
+}');
createSourceSidebar();
+++ /dev/null
-(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i<len;++i){if(rootPathParts[i]===".."){parts.pop()}}var file=window.location.pathname.substring(parts.join("/").length);if(file.startsWith("/")){file=file.substring(1)}return file.substring(0,file.length-5)}function createDirEntry(elem,parent,fullPath,currentFile,hasFoundFile){var name=document.createElement("div");name.className="name";fullPath+=elem["name"]+"/";name.onclick=function(){if(hasClass(this,"expand")){removeClass(this,"expand")}else{addClass(this,"expand")}};name.innerText=elem["name"];var i,len;var children=document.createElement("div");children.className="children";var folders=document.createElement("div");folders.className="folders";if(elem.dirs){for(i=0,len=elem.dirs.length;i<len;++i){if(createDirEntry(elem.dirs[i],folders,fullPath,currentFile,hasFoundFile)){addClass(name,"expand");hasFoundFile=true}}}children.appendChild(folders);var files=document.createElement("div");files.className="files";if(elem.files){for(i=0,len=elem.files.length;i<len;++i){var file=document.createElement("a");file.innerText=elem.files[i];file.href=window.rootPath+"src/"+fullPath+elem.files[i]+".html";if(!hasFoundFile&¤tFile===fullPath+elem.files[i]){file.className="selected";addClass(name,"expand");hasFoundFile=true}files.appendChild(file)}}search.fullPath=fullPath;children.appendChild(files);parent.appendChild(name);parent.appendChild(children);return hasFoundFile&¤tFile.startsWith(fullPath)}function toggleSidebar(){var sidebar=document.querySelector("nav.sidebar");var child=this.children[0];if(child.innerText===">"){sidebar.classList.add("expanded");child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.classList.remove("expanded");child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner=document.createElement("div");if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var container=document.querySelector("nav.sidebar");var sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){container.classList.remove("expanded")}else{container.classList.add("expanded")}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});container.appendChild(sidebar);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to<from){var tmp=to;to=from;from=tmp}var elem=document.getElementById(from);if(!elem){return}if(scrollTo){var x=document.getElementById(from);if(x){x.scrollIntoView()}}onEachLazy(document.getElementsByClassName("line-numbers"),function(e){onEachLazy(e.getElementsByTagName("span"),function(i_e){removeClass(i_e,"line-highlighted")})});for(var i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}var handleSourceHighlight=(function(){var prev_line_id=0;var set_fragment=function(name){var x=window.scrollX,y=window.scrollY;if(searchState.browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines(true)}else{location.replace("#"+name)}window.scrollTo(x,y)};return function(ev){var cur_line_id=parseInt(ev.target.id,10);ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})()
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/any.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>any.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/any.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>any.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Runtime-checked blockchain types</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides the implementation of [`AnyBlockchain`] which allows switching the</span>
-<span class="doccomment">//! inner [`Blockchain`] type at runtime.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! When paired with the use of [`ConfigurableBlockchain`], it allows creating any</span>
-<span class="doccomment">//! blockchain type supported using a single line of code:</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bitcoin::Network;</span>
-<span class="doccomment">//! # use bdk::blockchain::*;</span>
-<span class="doccomment">//! # #[cfg(all(feature = "esplora", feature = "ureq"))]</span>
-<span class="doccomment">//! # {</span>
-<span class="doccomment">//! let config = serde_json::from_str("...")?;</span>
-<span class="doccomment">//! let blockchain = AnyBlockchain::from_config(&config)?;</span>
-<span class="doccomment">//! let height = blockchain.get_height();</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
+</span><span class="doccomment">//! Runtime-checked blockchain types
+//!
+//! This module provides the implementation of [`AnyBlockchain`] which allows switching the
+//! inner [`Blockchain`] type at runtime.
+//!
+//! ## Example
+//!
+//! When paired with the use of [`ConfigurableBlockchain`], it allows creating any
+//! blockchain type supported using a single line of code:
+//!
+//! ```no_run
+//! # use bitcoin::Network;
+//! # use bdk::blockchain::*;
+//! # #[cfg(all(feature = "esplora", feature = "ureq"))]
+//! # {
+//! let config = serde_json::from_str("...")?;
+//! let blockchain = AnyBlockchain::from_config(&config)?;
+//! let height = blockchain.get_height();
+//! # }
+//! # Ok::<(), bdk::Error>(())
+//! ```
-<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
-<span class="macro">macro_rules!</span> <span class="ident">impl_from</span> {
- ( <span class="ident">boxed</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">variant</span>:<span class="ident">ident</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">cfg</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {
- $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">cfg</span> )<span class="op">*</span>
- <span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span><span class="op">></span> <span class="kw">for</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">inner</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>) -> <span class="self">Self</span> {
- <span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">variant</span>(<span class="ident">Box::new</span>(<span class="ident">inner</span>))
+<span class="macro">macro_rules! </span>impl_from {
+ ( boxed <span class="macro-nonterminal">$from</span>:ty, <span class="macro-nonterminal">$to</span>:ty, <span class="macro-nonterminal">$variant</span>:ident, $( <span class="macro-nonterminal">$cfg</span>:tt )* ) => {
+ $( <span class="macro-nonterminal">$cfg </span>)*
+ <span class="kw">impl </span>From<<span class="macro-nonterminal">$from</span>> <span class="kw">for </span><span class="macro-nonterminal">$to </span>{
+ <span class="kw">fn </span>from(inner: <span class="macro-nonterminal">$from</span>) -> <span class="self">Self </span>{
+ <<span class="macro-nonterminal">$to</span>>::<span class="macro-nonterminal">$variant</span>(Box::new(inner))
}
}
};
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">variant</span>:<span class="ident">ident</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">cfg</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {
- $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">cfg</span> )<span class="op">*</span>
- <span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span><span class="op">></span> <span class="kw">for</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">inner</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>) -> <span class="self">Self</span> {
- <span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">variant</span>(<span class="ident">inner</span>)
+ ( <span class="macro-nonterminal">$from</span>:ty, <span class="macro-nonterminal">$to</span>:ty, <span class="macro-nonterminal">$variant</span>:ident, $( <span class="macro-nonterminal">$cfg</span>:tt )* ) => {
+ $( <span class="macro-nonterminal">$cfg </span>)*
+ <span class="kw">impl </span>From<<span class="macro-nonterminal">$from</span>> <span class="kw">for </span><span class="macro-nonterminal">$to </span>{
+ <span class="kw">fn </span>from(inner: <span class="macro-nonterminal">$from</span>) -> <span class="self">Self </span>{
+ <<span class="macro-nonterminal">$to</span>>::<span class="macro-nonterminal">$variant</span>(inner)
}
}
};
}
-<span class="macro">macro_rules!</span> <span class="ident">impl_inner_method</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">self</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>:<span class="ident">expr</span>)<span class="op">*</span> ) => {
- <span class="kw">match</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">self</span> {
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
- <span class="ident">AnyBlockchain::Electrum</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
- <span class="ident">AnyBlockchain::Esplora</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
- <span class="ident">AnyBlockchain::CompactFilters</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
- <span class="ident">AnyBlockchain::Rpc</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
+<span class="macro">macro_rules! </span>impl_inner_method {
+ ( <span class="macro-nonterminal">$self</span>:expr, <span class="macro-nonterminal">$name</span>:ident $(, <span class="macro-nonterminal">$args</span>:expr)* ) => {
+ <span class="kw">match </span><span class="macro-nonterminal">$self </span>{
+ <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+ </span>AnyBlockchain::Electrum(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
+ <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+ </span>AnyBlockchain::Esplora(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
+ <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+ </span>AnyBlockchain::CompactFilters(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
+ <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+ </span>AnyBlockchain::Rpc(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
}
}
}
-<span class="doccomment">/// Type that can contain any of the [`Blockchain`] types defined by the library</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// It allows switching backend at runtime</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [this module](crate::blockchain::any)'s documentation for a usage example.</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">AnyBlockchain</span> {
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)))]</span>
- <span class="doccomment">/// Electrum client</span>
- <span class="ident">Electrum</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident">electrum::ElectrumBlockchain</span><span class="op">></span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)))]</span>
- <span class="doccomment">/// Esplora client</span>
- <span class="ident">Esplora</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident">esplora::EsploraBlockchain</span><span class="op">></span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)))]</span>
- <span class="doccomment">/// Compact filters client</span>
- <span class="ident">CompactFilters</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident">compact_filters::CompactFiltersBlockchain</span><span class="op">></span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)))]</span>
- <span class="doccomment">/// RPC client</span>
- <span class="ident">Rpc</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident">rpc::RpcBlockchain</span><span class="op">></span>),
+<span class="doccomment">/// Type that can contain any of the [`Blockchain`] types defined by the library
+///
+/// It allows switching backend at runtime
+///
+/// See [this module](crate::blockchain::any)'s documentation for a usage example.
+</span><span class="kw">pub enum </span>AnyBlockchain {
+ <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"electrum"</span>)))]
+ </span><span class="doccomment">/// Electrum client
+ </span>Electrum(Box<electrum::ElectrumBlockchain>),
+ <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"esplora"</span>)))]
+ </span><span class="doccomment">/// Esplora client
+ </span>Esplora(Box<esplora::EsploraBlockchain>),
+ <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"compact_filters"</span>)))]
+ </span><span class="doccomment">/// Compact filters client
+ </span>CompactFilters(Box<compact_filters::CompactFiltersBlockchain>),
+ <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"rpc"</span>)))]
+ </span><span class="doccomment">/// RPC client
+ </span>Rpc(Box<rpc::RpcBlockchain>),
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span> <span class="ident">Blockchain</span> <span class="kw">for</span> <span class="ident">AnyBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, <span class="ident">get_capabilities</span>))
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl </span>Blockchain <span class="kw">for </span>AnyBlockchain {
+ <span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability> {
+ <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, get_capabilities))
}
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, <span class="ident">broadcast</span>, <span class="ident">tx</span>))
+ <span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, broadcast, tx))
}
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, <span class="ident">estimate_fee</span>, <span class="ident">target</span>))
+ <span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error> {
+ <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, estimate_fee, target))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span> <span class="ident">GetHeight</span> <span class="kw">for</span> <span class="ident">AnyBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, <span class="ident">get_height</span>))
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl </span>GetHeight <span class="kw">for </span>AnyBlockchain {
+ <span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, get_height))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">AnyBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, <span class="ident">get_tx</span>, <span class="ident">txid</span>))
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl </span>GetTx <span class="kw">for </span>AnyBlockchain {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, get_tx, txid))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span> <span class="ident">GetBlockHash</span> <span class="kw">for</span> <span class="ident">AnyBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, <span class="ident">get_block_hash</span>, <span class="ident">height</span>))
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl </span>GetBlockHash <span class="kw">for </span>AnyBlockchain {
+ <span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error> {
+ <span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(<span class="self">self</span>, get_block_hash, height))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span> <span class="ident">WalletSync</span> <span class="kw">for</span> <span class="ident">AnyBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">wallet_sync</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl </span>WalletSync <span class="kw">for </span>AnyBlockchain {
+ <span class="kw">fn </span>wallet_sync<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(
<span class="self">self</span>,
- <span class="ident">wallet_sync</span>,
- <span class="ident">database</span>,
- <span class="ident">progress_update</span>
+ wallet_sync,
+ database,
+ progress_update
))
}
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+ <span class="kw">fn </span>wallet_setup<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="macro">maybe_await!</span>(<span class="macro">impl_inner_method!</span>(
<span class="self">self</span>,
- <span class="ident">wallet_setup</span>,
- <span class="ident">database</span>,
- <span class="ident">progress_update</span>
+ wallet_setup,
+ database,
+ progress_update
))
}
}
-<span class="macro">impl_from!</span>(<span class="ident">boxed</span> <span class="ident">electrum::ElectrumBlockchain</span>, <span class="ident">AnyBlockchain</span>, <span class="ident">Electrum</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">boxed</span> <span class="ident">esplora::EsploraBlockchain</span>, <span class="ident">AnyBlockchain</span>, <span class="ident">Esplora</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">boxed</span> <span class="ident">compact_filters::CompactFiltersBlockchain</span>, <span class="ident">AnyBlockchain</span>, <span class="ident">CompactFilters</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">boxed</span> <span class="ident">rpc::RpcBlockchain</span>, <span class="ident">AnyBlockchain</span>, <span class="ident">Rpc</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>);
+<span class="macro">impl_from!</span>(boxed electrum::ElectrumBlockchain, AnyBlockchain, Electrum, <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]</span>);
+<span class="macro">impl_from!</span>(boxed esplora::EsploraBlockchain, AnyBlockchain, Esplora, <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]</span>);
+<span class="macro">impl_from!</span>(boxed compact_filters::CompactFiltersBlockchain, AnyBlockchain, CompactFilters, <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]</span>);
+<span class="macro">impl_from!</span>(boxed rpc::RpcBlockchain, AnyBlockchain, Rpc, <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]</span>);
-<span class="doccomment">/// Type that can contain any of the blockchain configurations defined by the library</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This allows storing a single configuration that can be loaded into an [`AnyBlockchain`]</span>
-<span class="doccomment">/// instance. Wallets that plan to offer users the ability to switch blockchain backend at runtime</span>
-<span class="doccomment">/// will find this particularly useful.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This type can be serialized from a JSON object like:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # #[cfg(feature = "electrum")]</span>
-<span class="doccomment">/// # {</span>
-<span class="doccomment">/// use bdk::blockchain::{electrum::ElectrumBlockchainConfig, AnyBlockchainConfig};</span>
-<span class="doccomment">/// let config: AnyBlockchainConfig = serde_json::from_str(</span>
-<span class="doccomment">/// r#"{</span>
-<span class="doccomment">/// "type" : "electrum",</span>
-<span class="doccomment">/// "url" : "ssl://electrum.blockstream.info:50002",</span>
-<span class="doccomment">/// "retry": 2,</span>
-<span class="doccomment">/// "stop_gap": 20</span>
-<span class="doccomment">/// }"#,</span>
-<span class="doccomment">/// )</span>
-<span class="doccomment">/// .unwrap();</span>
-<span class="doccomment">/// assert_eq!(</span>
-<span class="doccomment">/// config,</span>
-<span class="doccomment">/// AnyBlockchainConfig::Electrum(ElectrumBlockchainConfig {</span>
-<span class="doccomment">/// url: "ssl://electrum.blockstream.info:50002".into(),</span>
-<span class="doccomment">/// retry: 2,</span>
-<span class="doccomment">/// socks5: None,</span>
-<span class="doccomment">/// timeout: None,</span>
-<span class="doccomment">/// stop_gap: 20,</span>
-<span class="doccomment">/// })</span>
-<span class="doccomment">/// );</span>
-<span class="doccomment">/// # }</span>
-<span class="doccomment">/// ```</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Serialize</span>, <span class="ident">serde::Deserialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="attribute">#[<span class="ident">serde</span>(<span class="ident">tag</span> <span class="op">=</span> <span class="string">"type"</span>, <span class="ident">rename_all</span> <span class="op">=</span> <span class="string">"snake_case"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">AnyBlockchainConfig</span> {
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)))]</span>
- <span class="doccomment">/// Electrum client</span>
- <span class="ident">Electrum</span>(<span class="ident">electrum::ElectrumBlockchainConfig</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)))]</span>
- <span class="doccomment">/// Esplora client</span>
- <span class="ident">Esplora</span>(<span class="ident">esplora::EsploraBlockchainConfig</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)))]</span>
- <span class="doccomment">/// Compact filters client</span>
- <span class="ident">CompactFilters</span>(<span class="ident">compact_filters::CompactFiltersBlockchainConfig</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)))]</span>
- <span class="doccomment">/// RPC client configuration</span>
- <span class="ident">Rpc</span>(<span class="ident">rpc::RpcConfig</span>),
+<span class="doccomment">/// Type that can contain any of the blockchain configurations defined by the library
+///
+/// This allows storing a single configuration that can be loaded into an [`AnyBlockchain`]
+/// instance. Wallets that plan to offer users the ability to switch blockchain backend at runtime
+/// will find this particularly useful.
+///
+/// This type can be serialized from a JSON object like:
+///
+/// ```
+/// # #[cfg(feature = "electrum")]
+/// # {
+/// use bdk::blockchain::{electrum::ElectrumBlockchainConfig, AnyBlockchainConfig};
+/// let config: AnyBlockchainConfig = serde_json::from_str(
+/// r#"{
+/// "type" : "electrum",
+/// "url" : "ssl://electrum.blockstream.info:50002",
+/// "retry": 2,
+/// "stop_gap": 20
+/// }"#,
+/// )
+/// .unwrap();
+/// assert_eq!(
+/// config,
+/// AnyBlockchainConfig::Electrum(ElectrumBlockchainConfig {
+/// url: "ssl://electrum.blockstream.info:50002".into(),
+/// retry: 2,
+/// socks5: None,
+/// timeout: None,
+/// stop_gap: 20,
+/// })
+/// );
+/// # }
+/// ```
+</span><span class="attr">#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq)]
+#[serde(tag = <span class="string">"type"</span>, rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>AnyBlockchainConfig {
+ <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"electrum"</span>)))]
+ </span><span class="doccomment">/// Electrum client
+ </span>Electrum(electrum::ElectrumBlockchainConfig),
+ <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"esplora"</span>)))]
+ </span><span class="doccomment">/// Esplora client
+ </span>Esplora(esplora::EsploraBlockchainConfig),
+ <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"compact_filters"</span>)))]
+ </span><span class="doccomment">/// Compact filters client
+ </span>CompactFilters(compact_filters::CompactFiltersBlockchainConfig),
+ <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"rpc"</span>)))]
+ </span><span class="doccomment">/// RPC client configuration
+ </span>Rpc(rpc::RpcConfig),
}
-<span class="kw">impl</span> <span class="ident">ConfigurableBlockchain</span> <span class="kw">for</span> <span class="ident">AnyBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">AnyBlockchainConfig</span>;
+<span class="kw">impl </span>ConfigurableBlockchain <span class="kw">for </span>AnyBlockchain {
+ <span class="kw">type </span>Config = AnyBlockchainConfig;
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="kw">match</span> <span class="ident">config</span> {
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
- <span class="ident">AnyBlockchainConfig::Electrum</span>(<span class="ident">inner</span>) => {
- <span class="ident">AnyBlockchain::Electrum</span>(<span class="ident">Box::new</span>(<span class="ident">electrum::ElectrumBlockchain::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>))
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="kw">match </span>config {
+ <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+ </span>AnyBlockchainConfig::Electrum(inner) => {
+ AnyBlockchain::Electrum(Box::new(electrum::ElectrumBlockchain::from_config(inner)<span class="question-mark">?</span>))
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
- <span class="ident">AnyBlockchainConfig::Esplora</span>(<span class="ident">inner</span>) => {
- <span class="ident">AnyBlockchain::Esplora</span>(<span class="ident">Box::new</span>(<span class="ident">esplora::EsploraBlockchain::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>))
+ <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+ </span>AnyBlockchainConfig::Esplora(inner) => {
+ AnyBlockchain::Esplora(Box::new(esplora::EsploraBlockchain::from_config(inner)<span class="question-mark">?</span>))
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
- <span class="ident">AnyBlockchainConfig::CompactFilters</span>(<span class="ident">inner</span>) => <span class="ident">AnyBlockchain::CompactFilters</span>(<span class="ident">Box::new</span>(
- <span class="ident">compact_filters::CompactFiltersBlockchain::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>,
+ <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+ </span>AnyBlockchainConfig::CompactFilters(inner) => AnyBlockchain::CompactFilters(Box::new(
+ compact_filters::CompactFiltersBlockchain::from_config(inner)<span class="question-mark">?</span>,
)),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
- <span class="ident">AnyBlockchainConfig::Rpc</span>(<span class="ident">inner</span>) => {
- <span class="ident">AnyBlockchain::Rpc</span>(<span class="ident">Box::new</span>(<span class="ident">rpc::RpcBlockchain::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>))
+ <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+ </span>AnyBlockchainConfig::Rpc(inner) => {
+ AnyBlockchain::Rpc(Box::new(rpc::RpcBlockchain::from_config(inner)<span class="question-mark">?</span>))
}
})
}
}
-<span class="macro">impl_from!</span>(<span class="ident">electrum::ElectrumBlockchainConfig</span>, <span class="ident">AnyBlockchainConfig</span>, <span class="ident">Electrum</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">esplora::EsploraBlockchainConfig</span>, <span class="ident">AnyBlockchainConfig</span>, <span class="ident">Esplora</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">compact_filters::CompactFiltersBlockchainConfig</span>, <span class="ident">AnyBlockchainConfig</span>, <span class="ident">CompactFilters</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">rpc::RpcConfig</span>, <span class="ident">AnyBlockchainConfig</span>, <span class="ident">Rpc</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>);
+<span class="macro">impl_from!</span>(electrum::ElectrumBlockchainConfig, AnyBlockchainConfig, Electrum, <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]</span>);
+<span class="macro">impl_from!</span>(esplora::EsploraBlockchainConfig, AnyBlockchainConfig, Esplora, <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]</span>);
+<span class="macro">impl_from!</span>(compact_filters::CompactFiltersBlockchainConfig, AnyBlockchainConfig, CompactFilters, <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]</span>);
+<span class="macro">impl_from!</span>(rpc::RpcConfig, AnyBlockchainConfig, Rpc, <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]</span>);
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../../storage.js"></script><script src="../../../../crates.js"></script><script defer src="../../../../main.js"></script><script defer src="../../../../source-script.js"></script><script defer src="../../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Compact Filters</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module contains a multithreaded implementation of an [`Blockchain`] backend that</span>
-<span class="doccomment">//! uses BIP157 (aka "Neutrino") to populate the wallet's [database](crate::database::Database)</span>
-<span class="doccomment">//! by downloading compact filters from the P2P network.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Since there are currently very few peers "in the wild" that advertise the required service</span>
-<span class="doccomment">//! flag, this implementation requires that one or more known peers are provided by the user.</span>
-<span class="doccomment">//! No dns or other kinds of peer discovery are done internally.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Moreover, this module doesn't currently support detecting and resolving conflicts between</span>
-<span class="doccomment">//! messages received by different peers. Thus, it's recommended to use this module by only</span>
-<span class="doccomment">//! connecting to a single peer at a time, optionally by opening multiple connections if it's</span>
-<span class="doccomment">//! desirable to use multiple threads at once to sync in parallel.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This is an **EXPERIMENTAL** feature, API and other major changes are expected.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use std::sync::Arc;</span>
-<span class="doccomment">//! # use bitcoin::*;</span>
-<span class="doccomment">//! # use bdk::*;</span>
-<span class="doccomment">//! # use bdk::blockchain::compact_filters::*;</span>
-<span class="doccomment">//! let num_threads = 4;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let mempool = Arc::new(Mempool::default());</span>
-<span class="doccomment">//! let peers = (0..num_threads)</span>
-<span class="doccomment">//! .map(|_| {</span>
-<span class="doccomment">//! Peer::connect(</span>
-<span class="doccomment">//! "btcd-mainnet.lightning.computer:8333",</span>
-<span class="doccomment">//! Arc::clone(&mempool),</span>
-<span class="doccomment">//! Network::Bitcoin,</span>
-<span class="doccomment">//! )</span>
-<span class="doccomment">//! })</span>
-<span class="doccomment">//! .collect::<Result<_, _>>()?;</span>
-<span class="doccomment">//! let blockchain = CompactFiltersBlockchain::new(peers, "./wallet-filters", Some(500_000))?;</span>
-<span class="doccomment">//! # Ok::<(), CompactFiltersError>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident">std::collections::HashSet</span>;
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
-<span class="kw">use</span> <span class="ident">std::path::Path</span>;
-<span class="kw">use</span> <span class="ident">std::sync::atomic</span>::{<span class="ident">AtomicUsize</span>, <span class="ident">Ordering</span>};
-<span class="kw">use</span> <span class="ident">std::sync</span>::{<span class="ident">Arc</span>, <span class="ident">Mutex</span>};
-
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
-<span class="kw">use</span> <span class="ident">log</span>::{<span class="ident">debug</span>, <span class="ident">error</span>, <span class="ident">info</span>, <span class="ident">trace</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::network::message_blockdata::Inventory</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Network</span>, <span class="ident">OutPoint</span>, <span class="ident">Transaction</span>, <span class="ident">Txid</span>};
-
-<span class="kw">use</span> <span class="ident">rocksdb</span>::{<span class="ident">Options</span>, <span class="ident">SliceTransform</span>, <span class="ident">DB</span>};
-
-<span class="kw">mod</span> <span class="ident">peer</span>;
-<span class="kw">mod</span> <span class="ident">store</span>;
-<span class="kw">mod</span> <span class="ident">sync</span>;
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blockchain</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">DatabaseUtils</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::{<span class="ident">KeychainKind</span>, <span class="ident">LocalUtxo</span>, <span class="ident">TransactionDetails</span>};
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">BlockTime</span>, <span class="ident">FeeRate</span>};
-
-<span class="kw">use</span> <span class="ident">peer</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident">store</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident">sync</span>::<span class="kw-2">*</span>;
-
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">peer</span>::{<span class="ident">Mempool</span>, <span class="ident">Peer</span>};
-
-<span class="kw">const</span> <span class="ident">SYNC_HEADERS_COST</span>: <span class="ident">f32</span> <span class="op">=</span> <span class="number">1.0</span>;
-<span class="kw">const</span> <span class="ident">SYNC_FILTERS_COST</span>: <span class="ident">f32</span> <span class="op">=</span> <span class="number">11.6</span> <span class="op">*</span> <span class="number">1_000.0</span>;
-<span class="kw">const</span> <span class="ident">PROCESS_BLOCKS_COST</span>: <span class="ident">f32</span> <span class="op">=</span> <span class="number">20_000.0</span>;
-
-<span class="doccomment">/// Structure implementing the required blockchain traits</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">/// See the [`blockchain::compact_filters`](crate::blockchain::compact_filters) module for a usage example.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="ident">peers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">Peer</span><span class="op">></span><span class="op">></span>,
- <span class="ident">headers</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Full</span><span class="op">></span><span class="op">></span>,
- <span class="ident">skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../../source-files.js"></script><script defer src="../../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Compact Filters
+//!
+//! This module contains a multithreaded implementation of an [`Blockchain`] backend that
+//! uses BIP157 (aka "Neutrino") to populate the wallet's [database](crate::database::Database)
+//! by downloading compact filters from the P2P network.
+//!
+//! Since there are currently very few peers "in the wild" that advertise the required service
+//! flag, this implementation requires that one or more known peers are provided by the user.
+//! No dns or other kinds of peer discovery are done internally.
+//!
+//! Moreover, this module doesn't currently support detecting and resolving conflicts between
+//! messages received by different peers. Thus, it's recommended to use this module by only
+//! connecting to a single peer at a time, optionally by opening multiple connections if it's
+//! desirable to use multiple threads at once to sync in parallel.
+//!
+//! This is an **EXPERIMENTAL** feature, API and other major changes are expected.
+//!
+//! ## Example
+//!
+//! ```no_run
+//! # use std::sync::Arc;
+//! # use bitcoin::*;
+//! # use bdk::*;
+//! # use bdk::blockchain::compact_filters::*;
+//! let num_threads = 4;
+//!
+//! let mempool = Arc::new(Mempool::default());
+//! let peers = (0..num_threads)
+//! .map(|_| {
+//! Peer::connect(
+//! "btcd-mainnet.lightning.computer:8333",
+//! Arc::clone(&mempool),
+//! Network::Bitcoin,
+//! )
+//! })
+//! .collect::<Result<_, _>>()?;
+//! let blockchain = CompactFiltersBlockchain::new(peers, "./wallet-filters", Some(500_000))?;
+//! # Ok::<(), CompactFiltersError>(())
+//! ```
+
+</span><span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::fmt;
+<span class="kw">use </span>std::path::Path;
+<span class="kw">use </span>std::sync::atomic::{AtomicUsize, Ordering};
+<span class="kw">use </span>std::sync::{Arc, Mutex};
+
+<span class="attr">#[allow(unused_imports)]
+</span><span class="kw">use </span>log::{debug, error, info, trace};
+
+<span class="kw">use </span>bitcoin::network::message_blockdata::Inventory;
+<span class="kw">use </span>bitcoin::{Network, OutPoint, Transaction, Txid};
+
+<span class="kw">use </span>rocksdb::{Options, SliceTransform, DB};
+
+<span class="kw">mod </span>peer;
+<span class="kw">mod </span>store;
+<span class="kw">mod </span>sync;
+
+<span class="kw">use </span><span class="kw">crate</span>::blockchain::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::database::{BatchDatabase, BatchOperations, DatabaseUtils};
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::types::{KeychainKind, LocalUtxo, TransactionDetails};
+<span class="kw">use crate</span>::{BlockTime, FeeRate};
+
+<span class="kw">use </span>peer::<span class="kw-2">*</span>;
+<span class="kw">use </span>store::<span class="kw-2">*</span>;
+<span class="kw">use </span>sync::<span class="kw-2">*</span>;
+
+<span class="kw">pub use </span>peer::{Mempool, Peer};
+
+<span class="kw">const </span>SYNC_HEADERS_COST: f32 = <span class="number">1.0</span>;
+<span class="kw">const </span>SYNC_FILTERS_COST: f32 = <span class="number">11.6 </span>* <span class="number">1_000.0</span>;
+<span class="kw">const </span>PROCESS_BLOCKS_COST: f32 = <span class="number">20_000.0</span>;
+
+<span class="doccomment">/// Structure implementing the required blockchain traits
+///
+/// ## Example
+/// See the [`blockchain::compact_filters`](crate::blockchain::compact_filters) module for a usage example.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>CompactFiltersBlockchain {
+ peers: Vec<Arc<Peer>>,
+ headers: Arc<ChainStore<Full>>,
+ skip_blocks: <span class="prelude-ty">Option</span><usize>,
}
-<span class="kw">impl</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="doccomment">/// Construct a new instance given a list of peers, a path to store headers and block</span>
- <span class="doccomment">/// filters downloaded during the sync and optionally a number of blocks to ignore starting</span>
- <span class="doccomment">/// from the genesis while scanning for the wallet's outputs.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// For each [`Peer`] specified a new thread will be spawned to download and verify the filters</span>
- <span class="doccomment">/// in parallel. It's currently recommended to only connect to a single peer to avoid</span>
- <span class="doccomment">/// inconsistencies in the data returned, optionally with multiple connections in parallel to</span>
- <span class="doccomment">/// speed-up the sync process.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span><span class="op"><</span><span class="ident">P</span>: <span class="ident">AsRef</span><span class="op"><</span><span class="ident">Path</span><span class="op">></span><span class="op">></span>(
- <span class="ident">peers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Peer</span><span class="op">></span>,
- <span class="ident">storage_dir</span>: <span class="ident">P</span>,
- <span class="ident">skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">peers</span>.<span class="ident">is_empty</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::NoPeers</span>);
+<span class="kw">impl </span>CompactFiltersBlockchain {
+ <span class="doccomment">/// Construct a new instance given a list of peers, a path to store headers and block
+ /// filters downloaded during the sync and optionally a number of blocks to ignore starting
+ /// from the genesis while scanning for the wallet's outputs.
+ ///
+ /// For each [`Peer`] specified a new thread will be spawned to download and verify the filters
+ /// in parallel. It's currently recommended to only connect to a single peer to avoid
+ /// inconsistencies in the data returned, optionally with multiple connections in parallel to
+ /// speed-up the sync process.
+ </span><span class="kw">pub fn </span>new<P: AsRef<Path>>(
+ peers: Vec<Peer>,
+ storage_dir: P,
+ skip_blocks: <span class="prelude-ty">Option</span><usize>,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">if </span>peers.is_empty() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::NoPeers);
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">opts</span> <span class="op">=</span> <span class="ident">Options::default</span>();
- <span class="ident">opts</span>.<span class="ident">create_if_missing</span>(<span class="bool-val">true</span>);
- <span class="ident">opts</span>.<span class="ident">set_prefix_extractor</span>(<span class="ident">SliceTransform::create_fixed_prefix</span>(<span class="number">16</span>));
+ <span class="kw">let </span><span class="kw-2">mut </span>opts = Options::default();
+ opts.create_if_missing(<span class="bool-val">true</span>);
+ opts.set_prefix_extractor(SliceTransform::create_fixed_prefix(<span class="number">16</span>));
- <span class="kw">let</span> <span class="ident">network</span> <span class="op">=</span> <span class="ident">peers</span>[<span class="number">0</span>].<span class="ident">get_network</span>();
+ <span class="kw">let </span>network = peers[<span class="number">0</span>].get_network();
- <span class="kw">let</span> <span class="ident">cfs</span> <span class="op">=</span> <span class="ident">DB::list_cf</span>(<span class="kw-2">&</span><span class="ident">opts</span>, <span class="kw-2">&</span><span class="ident">storage_dir</span>).<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="macro">vec!</span>[<span class="string">"default"</span>.<span class="ident">to_string</span>()]);
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">DB::open_cf</span>(<span class="kw-2">&</span><span class="ident">opts</span>, <span class="kw-2">&</span><span class="ident">storage_dir</span>, <span class="kw-2">&</span><span class="ident">cfs</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">headers</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">ChainStore::new</span>(<span class="ident">db</span>, <span class="ident">network</span>)<span class="question-mark">?</span>);
+ <span class="kw">let </span>cfs = DB::list_cf(<span class="kw-2">&</span>opts, <span class="kw-2">&</span>storage_dir).unwrap_or_else(|<span class="kw">_</span>| <span class="macro">vec!</span>[<span class="string">"default"</span>.to_string()]);
+ <span class="kw">let </span>db = DB::open_cf(<span class="kw-2">&</span>opts, <span class="kw-2">&</span>storage_dir, <span class="kw-2">&</span>cfs)<span class="question-mark">?</span>;
+ <span class="kw">let </span>headers = Arc::new(ChainStore::new(db, network)<span class="question-mark">?</span>);
- <span class="comment">// try to recover partial snapshots</span>
- <span class="kw">for</span> <span class="ident">cf_name</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">cfs</span> {
- <span class="kw">if</span> <span class="op">!</span><span class="ident">cf_name</span>.<span class="ident">starts_with</span>(<span class="string">"_headers:"</span>) {
+ <span class="comment">// try to recover partial snapshots
+ </span><span class="kw">for </span>cf_name <span class="kw">in </span><span class="kw-2">&</span>cfs {
+ <span class="kw">if </span>!cf_name.starts_with(<span class="string">"_headers:"</span>) {
<span class="kw">continue</span>;
}
- <span class="macro">info!</span>(<span class="string">"Trying to recover: {:?}"</span>, <span class="ident">cf_name</span>);
- <span class="ident">headers</span>.<span class="ident">recover_snapshot</span>(<span class="ident">cf_name</span>)<span class="question-mark">?</span>;
+ <span class="macro">info!</span>(<span class="string">"Trying to recover: {:?}"</span>, cf_name);
+ headers.recover_snapshot(cf_name)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">CompactFiltersBlockchain</span> {
- <span class="ident">peers</span>: <span class="ident">peers</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="ident">Arc::new</span>).<span class="ident">collect</span>(),
- <span class="ident">headers</span>,
- <span class="ident">skip_blocks</span>,
+ <span class="prelude-val">Ok</span>(CompactFiltersBlockchain {
+ peers: peers.into_iter().map(Arc::new).collect(),
+ headers,
+ skip_blocks,
})
}
- <span class="doccomment">/// Process a transaction by looking for inputs that spend from a UTXO in the database or</span>
- <span class="doccomment">/// outputs that send funds to a know script_pubkey.</span>
- <span class="kw">fn</span> <span class="ident">process_tx</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+ <span class="doccomment">/// Process a transaction by looking for inputs that spend from a UTXO in the database or
+ /// outputs that send funds to a know script_pubkey.
+ </span><span class="kw">fn </span>process_tx<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>,
- <span class="ident">height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="ident">timestamp</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
- <span class="ident">internal_max_deriv</span>: <span class="kw-2">&mut</span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="ident">external_max_deriv</span>: <span class="kw-2">&mut</span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">updates</span> <span class="op">=</span> <span class="ident">database</span>.<span class="ident">begin_batch</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">incoming</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">outgoing</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">inputs_sum</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">outputs_sum</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
-
- <span class="comment">// look for our own inputs</span>
- <span class="kw">for</span> (<span class="ident">i</span>, <span class="ident">input</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">previous_output</span>) <span class="op">=</span> <span class="ident">database</span>.<span class="ident">get_previous_output</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>)<span class="question-mark">?</span> {
- <span class="ident">inputs_sum</span> <span class="op">+</span><span class="op">=</span> <span class="ident">previous_output</span>.<span class="ident">value</span>;
-
- <span class="comment">// this output is ours, we have a path to derive it</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="kw">_</span>)) <span class="op">=</span>
- <span class="ident">database</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">previous_output</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
- <span class="ident">outgoing</span> <span class="op">+</span><span class="op">=</span> <span class="ident">previous_output</span>.<span class="ident">value</span>;
-
- <span class="macro">debug!</span>(<span class="string">"{} input #{} is mine, setting utxo as spent"</span>, <span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="ident">i</span>);
- <span class="ident">updates</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">input</span>.<span class="ident">previous_output</span>,
- <span class="ident">txout</span>: <span class="ident">previous_output</span>.<span class="ident">clone</span>(),
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">true</span>,
+ database: <span class="kw-2">&mut </span>D,
+ tx: <span class="kw-2">&</span>Transaction,
+ height: <span class="prelude-ty">Option</span><u32>,
+ timestamp: <span class="prelude-ty">Option</span><u64>,
+ internal_max_deriv: <span class="kw-2">&mut </span><span class="prelude-ty">Option</span><u32>,
+ external_max_deriv: <span class="kw-2">&mut </span><span class="prelude-ty">Option</span><u32>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>updates = database.begin_batch();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>incoming: u64 = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>outgoing: u64 = <span class="number">0</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>inputs_sum: u64 = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>outputs_sum: u64 = <span class="number">0</span>;
+
+ <span class="comment">// look for our own inputs
+ </span><span class="kw">for </span>(i, input) <span class="kw">in </span>tx.input.iter().enumerate() {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(previous_output) = database.get_previous_output(<span class="kw-2">&</span>input.previous_output)<span class="question-mark">? </span>{
+ inputs_sum += previous_output.value;
+
+ <span class="comment">// this output is ours, we have a path to derive it
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>((keychain, <span class="kw">_</span>)) =
+ database.get_path_from_script_pubkey(<span class="kw-2">&</span>previous_output.script_pubkey)<span class="question-mark">?
+ </span>{
+ outgoing += previous_output.value;
+
+ <span class="macro">debug!</span>(<span class="string">"{} input #{} is mine, setting utxo as spent"</span>, tx.txid(), i);
+ updates.set_utxo(<span class="kw-2">&</span>LocalUtxo {
+ outpoint: input.previous_output,
+ txout: previous_output.clone(),
+ keychain,
+ is_spent: <span class="bool-val">true</span>,
})<span class="question-mark">?</span>;
}
}
}
- <span class="kw">for</span> (<span class="ident">i</span>, <span class="ident">output</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="comment">// to compute the fees later</span>
- <span class="ident">outputs_sum</span> <span class="op">+</span><span class="op">=</span> <span class="ident">output</span>.<span class="ident">value</span>;
-
- <span class="comment">// this output is ours, we have a path to derive it</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>)) <span class="op">=</span>
- <span class="ident">database</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">output</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
- <span class="macro">debug!</span>(<span class="string">"{} output #{} is mine, adding utxo"</span>, <span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="ident">i</span>);
- <span class="ident">updates</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::new</span>(<span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="ident">i</span> <span class="kw">as</span> <span class="ident">u32</span>),
- <span class="ident">txout</span>: <span class="ident">output</span>.<span class="ident">clone</span>(),
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ <span class="kw">for </span>(i, output) <span class="kw">in </span>tx.output.iter().enumerate() {
+ <span class="comment">// to compute the fees later
+ </span>outputs_sum += output.value;
+
+ <span class="comment">// this output is ours, we have a path to derive it
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>((keychain, child)) =
+ database.get_path_from_script_pubkey(<span class="kw-2">&</span>output.script_pubkey)<span class="question-mark">?
+ </span>{
+ <span class="macro">debug!</span>(<span class="string">"{} output #{} is mine, adding utxo"</span>, tx.txid(), i);
+ updates.set_utxo(<span class="kw-2">&</span>LocalUtxo {
+ outpoint: OutPoint::new(tx.txid(), i <span class="kw">as </span>u32),
+ txout: output.clone(),
+ keychain,
+ is_spent: <span class="bool-val">false</span>,
})<span class="question-mark">?</span>;
- <span class="ident">incoming</span> <span class="op">+</span><span class="op">=</span> <span class="ident">output</span>.<span class="ident">value</span>;
+ incoming += output.value;
- <span class="kw">if</span> <span class="ident">keychain</span> <span class="op">==</span> <span class="ident">KeychainKind::Internal</span>
- <span class="op">&&</span> (<span class="ident">internal_max_deriv</span>.<span class="ident">is_none</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">child</span> <span class="op">></span> <span class="ident">internal_max_deriv</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>))
+ <span class="kw">if </span>keychain == KeychainKind::Internal
+ && (internal_max_deriv.is_none() || child > internal_max_deriv.unwrap_or(<span class="number">0</span>))
{
- <span class="kw-2">*</span><span class="ident">internal_max_deriv</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">child</span>);
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">keychain</span> <span class="op">==</span> <span class="ident">KeychainKind::External</span>
- <span class="op">&&</span> (<span class="ident">external_max_deriv</span>.<span class="ident">is_none</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">child</span> <span class="op">></span> <span class="ident">external_max_deriv</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>))
+ <span class="kw-2">*</span>internal_max_deriv = <span class="prelude-val">Some</span>(child);
+ } <span class="kw">else if </span>keychain == KeychainKind::External
+ && (external_max_deriv.is_none() || child > external_max_deriv.unwrap_or(<span class="number">0</span>))
{
- <span class="kw-2">*</span><span class="ident">external_max_deriv</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">child</span>);
+ <span class="kw-2">*</span>external_max_deriv = <span class="prelude-val">Some</span>(child);
}
}
}
- <span class="kw">if</span> <span class="ident">incoming</span> <span class="op">></span> <span class="number">0</span> <span class="op">|</span><span class="op">|</span> <span class="ident">outgoing</span> <span class="op">></span> <span class="number">0</span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">txid</span>: <span class="ident">tx</span>.<span class="ident">txid</span>(),
- <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>.<span class="ident">clone</span>()),
- <span class="ident">received</span>: <span class="ident">incoming</span>,
- <span class="ident">sent</span>: <span class="ident">outgoing</span>,
- <span class="ident">confirmation_time</span>: <span class="ident">BlockTime::new</span>(<span class="ident">height</span>, <span class="ident">timestamp</span>),
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="ident">inputs_sum</span>.<span class="ident">saturating_sub</span>(<span class="ident">outputs_sum</span>)),
+ <span class="kw">if </span>incoming > <span class="number">0 </span>|| outgoing > <span class="number">0 </span>{
+ <span class="kw">let </span>tx = TransactionDetails {
+ txid: tx.txid(),
+ transaction: <span class="prelude-val">Some</span>(tx.clone()),
+ received: incoming,
+ sent: outgoing,
+ confirmation_time: BlockTime::new(height, timestamp),
+ fee: <span class="prelude-val">Some</span>(inputs_sum.saturating_sub(outputs_sum)),
};
- <span class="macro">info!</span>(<span class="string">"Saving tx {}"</span>, <span class="ident">tx</span>.<span class="ident">txid</span>);
- <span class="ident">updates</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>)<span class="question-mark">?</span>;
+ <span class="macro">info!</span>(<span class="string">"Saving tx {}"</span>, tx.txid);
+ updates.set_tx(<span class="kw-2">&</span>tx)<span class="question-mark">?</span>;
}
- <span class="ident">database</span>.<span class="ident">commit_batch</span>(<span class="ident">updates</span>)<span class="question-mark">?</span>;
+ database.commit_batch(updates)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">impl</span> <span class="ident">Blockchain</span> <span class="kw">for</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span> {
- <span class="macro">vec!</span>[<span class="ident">Capability::FullHistory</span>].<span class="ident">into_iter</span>().<span class="ident">collect</span>()
+<span class="kw">impl </span>Blockchain <span class="kw">for </span>CompactFiltersBlockchain {
+ <span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability> {
+ <span class="macro">vec!</span>[Capability::FullHistory].into_iter().collect()
}
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">peers</span>[<span class="number">0</span>].<span class="ident">broadcast_tx</span>(<span class="ident">tx</span>.<span class="ident">clone</span>())<span class="question-mark">?</span>;
+ <span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="self">self</span>.peers[<span class="number">0</span>].broadcast_tx(tx.clone())<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// TODO</span>
- <span class="prelude-val">Ok</span>(<span class="ident">FeeRate::default</span>())
+ <span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, _target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error> {
+ <span class="comment">// TODO
+ </span><span class="prelude-val">Ok</span>(FeeRate::default())
}
}
-<span class="kw">impl</span> <span class="ident">GetHeight</span> <span class="kw">for</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span> <span class="kw">as</span> <span class="ident">u32</span>)
+<span class="kw">impl </span>GetHeight <span class="kw">for </span>CompactFiltersBlockchain {
+ <span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.headers.get_height()<span class="question-mark">? </span><span class="kw">as </span>u32)
}
}
-<span class="kw">impl</span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">peers</span>[<span class="number">0</span>]
- .<span class="ident">get_mempool</span>()
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">Inventory::Transaction</span>(<span class="kw-2">*</span><span class="ident">txid</span>)))
+<span class="kw">impl </span>GetTx <span class="kw">for </span>CompactFiltersBlockchain {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.peers[<span class="number">0</span>]
+ .get_mempool()
+ .get_tx(<span class="kw-2">&</span>Inventory::Transaction(<span class="kw-2">*</span>txid)))
}
}
-<span class="kw">impl</span> <span class="ident">GetBlockHash</span> <span class="kw">for</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">headers</span>
- .<span class="ident">get_block_hash</span>(<span class="ident">height</span> <span class="kw">as</span> <span class="ident">usize</span>)<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">Error::CompactFilters</span>(
- <span class="ident">CompactFiltersError::BlockHashNotFound</span>,
+<span class="kw">impl </span>GetBlockHash <span class="kw">for </span>CompactFiltersBlockchain {
+ <span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error> {
+ <span class="self">self</span>.headers
+ .get_block_hash(height <span class="kw">as </span>usize)<span class="question-mark">?
+ </span>.ok_or(Error::CompactFilters(
+ CompactFiltersError::BlockHashNotFound,
))
}
}
-<span class="kw">impl</span> <span class="ident">WalletSync</span> <span class="kw">for</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::mutex_atomic</span>)]</span> <span class="comment">// Mutex is easier to understand than a CAS loop.</span>
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+<span class="kw">impl </span>WalletSync <span class="kw">for </span>CompactFiltersBlockchain {
+ <span class="attr">#[allow(clippy::mutex_atomic)] </span><span class="comment">// Mutex is easier to understand than a CAS loop.
+ </span><span class="kw">fn </span>wallet_setup<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">first_peer</span> <span class="op">=</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">peers</span>[<span class="number">0</span>];
-
- <span class="kw">let</span> <span class="ident">skip_blocks</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">skip_blocks</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>);
-
- <span class="kw">let</span> <span class="ident">cf_sync</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">CfSync::new</span>(<span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">headers</span>), <span class="ident">skip_blocks</span>, <span class="number">0x00</span>)<span class="question-mark">?</span>);
-
- <span class="kw">let</span> <span class="ident">initial_height</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">total_bundles</span> <span class="op">=</span> (<span class="ident">first_peer</span>.<span class="ident">get_version</span>().<span class="ident">start_height</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">checked_sub</span>(<span class="ident">skip_blocks</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">/</span> <span class="number">1000</span>)
- .<span class="ident">unwrap_or</span>(<span class="number">0</span>)
- <span class="op">+</span> <span class="number">1</span>;
- <span class="kw">let</span> <span class="ident">expected_bundles_to_sync</span> <span class="op">=</span> <span class="ident">total_bundles</span>.<span class="ident">saturating_sub</span>(<span class="ident">cf_sync</span>.<span class="ident">pruned_bundles</span>()<span class="question-mark">?</span>);
-
- <span class="kw">let</span> <span class="ident">headers_cost</span> <span class="op">=</span> (<span class="ident">first_peer</span>.<span class="ident">get_version</span>().<span class="ident">start_height</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">saturating_sub</span>(<span class="ident">initial_height</span>) <span class="kw">as</span> <span class="ident">f32</span>
- <span class="op">*</span> <span class="ident">SYNC_HEADERS_COST</span>;
- <span class="kw">let</span> <span class="ident">filters_cost</span> <span class="op">=</span> <span class="ident">expected_bundles_to_sync</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">SYNC_FILTERS_COST</span>;
-
- <span class="kw">let</span> <span class="ident">total_cost</span> <span class="op">=</span> <span class="ident">headers_cost</span> <span class="op">+</span> <span class="ident">filters_cost</span> <span class="op">+</span> <span class="ident">PROCESS_BLOCKS_COST</span>;
-
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">snapshot</span>) <span class="op">=</span> <span class="ident">sync::sync_headers</span>(
- <span class="ident">Arc::clone</span>(<span class="ident">first_peer</span>),
- <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">headers</span>),
- <span class="op">|</span><span class="ident">new_height</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">local_headers_cost</span> <span class="op">=</span>
- <span class="ident">new_height</span>.<span class="ident">saturating_sub</span>(<span class="ident">initial_height</span>) <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">SYNC_HEADERS_COST</span>;
- <span class="ident">progress_update</span>.<span class="ident">update</span>(
- <span class="ident">local_headers_cost</span> <span class="op">/</span> <span class="ident">total_cost</span> <span class="op">*</span> <span class="number">100.0</span>,
- <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"Synced headers to {}"</span>, <span class="ident">new_height</span>)),
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>first_peer = <span class="kw-2">&</span><span class="self">self</span>.peers[<span class="number">0</span>];
+
+ <span class="kw">let </span>skip_blocks = <span class="self">self</span>.skip_blocks.unwrap_or(<span class="number">0</span>);
+
+ <span class="kw">let </span>cf_sync = Arc::new(CfSync::new(Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.headers), skip_blocks, <span class="number">0x00</span>)<span class="question-mark">?</span>);
+
+ <span class="kw">let </span>initial_height = <span class="self">self</span>.headers.get_height()<span class="question-mark">?</span>;
+ <span class="kw">let </span>total_bundles = (first_peer.get_version().start_height <span class="kw">as </span>usize)
+ .checked_sub(skip_blocks)
+ .map(|x| x / <span class="number">1000</span>)
+ .unwrap_or(<span class="number">0</span>)
+ + <span class="number">1</span>;
+ <span class="kw">let </span>expected_bundles_to_sync = total_bundles.saturating_sub(cf_sync.pruned_bundles()<span class="question-mark">?</span>);
+
+ <span class="kw">let </span>headers_cost = (first_peer.get_version().start_height <span class="kw">as </span>usize)
+ .saturating_sub(initial_height) <span class="kw">as </span>f32
+ * SYNC_HEADERS_COST;
+ <span class="kw">let </span>filters_cost = expected_bundles_to_sync <span class="kw">as </span>f32 * SYNC_FILTERS_COST;
+
+ <span class="kw">let </span>total_cost = headers_cost + filters_cost + PROCESS_BLOCKS_COST;
+
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(snapshot) = sync::sync_headers(
+ Arc::clone(first_peer),
+ Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.headers),
+ |new_height| {
+ <span class="kw">let </span>local_headers_cost =
+ new_height.saturating_sub(initial_height) <span class="kw">as </span>f32 * SYNC_HEADERS_COST;
+ progress_update.update(
+ local_headers_cost / total_cost * <span class="number">100.0</span>,
+ <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"Synced headers to {}"</span>, new_height)),
)
},
- )<span class="question-mark">?</span> {
- <span class="kw">if</span> <span class="ident">snapshot</span>.<span class="ident">work</span>()<span class="question-mark">?</span> <span class="op">></span> <span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">work</span>()<span class="question-mark">?</span> {
- <span class="macro">info!</span>(<span class="string">"Applying snapshot with work: {}"</span>, <span class="ident">snapshot</span>.<span class="ident">work</span>()<span class="question-mark">?</span>);
- <span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">apply_snapshot</span>(<span class="ident">snapshot</span>)<span class="question-mark">?</span>;
+ )<span class="question-mark">? </span>{
+ <span class="kw">if </span>snapshot.work()<span class="question-mark">? </span>> <span class="self">self</span>.headers.work()<span class="question-mark">? </span>{
+ <span class="macro">info!</span>(<span class="string">"Applying snapshot with work: {}"</span>, snapshot.work()<span class="question-mark">?</span>);
+ <span class="self">self</span>.headers.apply_snapshot(snapshot)<span class="question-mark">?</span>;
}
}
- <span class="kw">let</span> <span class="ident">synced_height</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">buried_height</span> <span class="op">=</span> <span class="ident">synced_height</span>.<span class="ident">saturating_sub</span>(<span class="ident">sync::BURIED_CONFIRMATIONS</span>);
- <span class="macro">info!</span>(<span class="string">"Synced headers to height: {}"</span>, <span class="ident">synced_height</span>);
+ <span class="kw">let </span>synced_height = <span class="self">self</span>.headers.get_height()<span class="question-mark">?</span>;
+ <span class="kw">let </span>buried_height = synced_height.saturating_sub(sync::BURIED_CONFIRMATIONS);
+ <span class="macro">info!</span>(<span class="string">"Synced headers to height: {}"</span>, synced_height);
- <span class="ident">cf_sync</span>.<span class="ident">prepare_sync</span>(<span class="ident">Arc::clone</span>(<span class="ident">first_peer</span>))<span class="question-mark">?</span>;
+ cf_sync.prepare_sync(Arc::clone(first_peer))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">all_scripts</span> <span class="op">=</span> <span class="ident">Arc::new</span>(
- <span class="ident">database</span>
- .<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">None</span>)<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">to_bytes</span>())
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>(),
+ <span class="kw">let </span>all_scripts = Arc::new(
+ database
+ .iter_script_pubkeys(<span class="prelude-val">None</span>)<span class="question-mark">?
+ </span>.into_iter()
+ .map(|s| s.to_bytes())
+ .collect::<Vec<<span class="kw">_</span>>>(),
);
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::mutex_atomic</span>)]</span>
- <span class="kw">let</span> <span class="ident">last_synced_block</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">Mutex::new</span>(<span class="ident">synced_height</span>));
-
- <span class="kw">let</span> <span class="ident">synced_bundles</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">AtomicUsize::new</span>(<span class="number">0</span>));
- <span class="kw">let</span> <span class="ident">progress_update</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">Mutex::new</span>(<span class="ident">progress_update</span>));
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">threads</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="self">self</span>.<span class="ident">peers</span>.<span class="ident">len</span>());
- <span class="kw">for</span> <span class="ident">peer</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">peers</span> {
- <span class="kw">let</span> <span class="ident">cf_sync</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">cf_sync</span>);
- <span class="kw">let</span> <span class="ident">peer</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="ident">peer</span>);
- <span class="kw">let</span> <span class="ident">headers</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">headers</span>);
- <span class="kw">let</span> <span class="ident">all_scripts</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">all_scripts</span>);
- <span class="kw">let</span> <span class="ident">last_synced_block</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">last_synced_block</span>);
- <span class="kw">let</span> <span class="ident">progress_update</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">progress_update</span>);
- <span class="kw">let</span> <span class="ident">synced_bundles</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">synced_bundles</span>);
-
- <span class="kw">let</span> <span class="ident">thread</span> <span class="op">=</span> <span class="ident">std::thread::spawn</span>(<span class="kw">move</span> <span class="op">|</span><span class="op">|</span> {
- <span class="ident">cf_sync</span>.<span class="ident">capture_thread_for_sync</span>(
- <span class="ident">peer</span>,
- <span class="op">|</span><span class="ident">block_hash</span>, <span class="ident">filter</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="op">!</span><span class="ident">filter</span>
- .<span class="ident">match_any</span>(<span class="ident">block_hash</span>, <span class="kw-2">&mut</span> <span class="ident">all_scripts</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="ident">AsRef::as_ref</span>))<span class="question-mark">?</span>
- {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>);
+ <span class="attr">#[allow(clippy::mutex_atomic)]
+ </span><span class="kw">let </span>last_synced_block = Arc::new(Mutex::new(synced_height));
+
+ <span class="kw">let </span>synced_bundles = Arc::new(AtomicUsize::new(<span class="number">0</span>));
+ <span class="kw">let </span>progress_update = Arc::new(Mutex::new(progress_update));
+
+ <span class="kw">let </span><span class="kw-2">mut </span>threads = Vec::with_capacity(<span class="self">self</span>.peers.len());
+ <span class="kw">for </span>peer <span class="kw">in </span><span class="kw-2">&</span><span class="self">self</span>.peers {
+ <span class="kw">let </span>cf_sync = Arc::clone(<span class="kw-2">&</span>cf_sync);
+ <span class="kw">let </span>peer = Arc::clone(peer);
+ <span class="kw">let </span>headers = Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.headers);
+ <span class="kw">let </span>all_scripts = Arc::clone(<span class="kw-2">&</span>all_scripts);
+ <span class="kw">let </span>last_synced_block = Arc::clone(<span class="kw-2">&</span>last_synced_block);
+ <span class="kw">let </span>progress_update = Arc::clone(<span class="kw-2">&</span>progress_update);
+ <span class="kw">let </span>synced_bundles = Arc::clone(<span class="kw-2">&</span>synced_bundles);
+
+ <span class="kw">let </span>thread = std::thread::spawn(<span class="kw">move </span>|| {
+ cf_sync.capture_thread_for_sync(
+ peer,
+ |block_hash, filter| {
+ <span class="kw">if </span>!filter
+ .match_any(block_hash, <span class="kw-2">&mut </span>all_scripts.iter().map(AsRef::as_ref))<span class="question-mark">?
+ </span>{
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="bool-val">false</span>);
}
- <span class="kw">let</span> <span class="ident">block_height</span> <span class="op">=</span> <span class="ident">headers</span>.<span class="ident">get_height_for</span>(<span class="ident">block_hash</span>)<span class="question-mark">?</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">saved_correct_block</span> <span class="op">=</span> <span class="macro">matches!</span>(<span class="ident">headers</span>.<span class="ident">get_full_block</span>(<span class="ident">block_height</span>)<span class="question-mark">?</span>, <span class="prelude-val">Some</span>(<span class="ident">block</span>) <span class="kw">if</span> <span class="kw-2">&</span><span class="ident">block</span>.<span class="ident">block_hash</span>() <span class="op">==</span> <span class="ident">block_hash</span>);
+ <span class="kw">let </span>block_height = headers.get_height_for(block_hash)<span class="question-mark">?</span>.unwrap_or(<span class="number">0</span>);
+ <span class="kw">let </span>saved_correct_block = <span class="macro">matches!</span>(headers.get_full_block(block_height)<span class="question-mark">?</span>, <span class="prelude-val">Some</span>(block) <span class="kw">if </span><span class="kw-2">&</span>block.block_hash() == block_hash);
- <span class="kw">if</span> <span class="ident">saved_correct_block</span> {
+ <span class="kw">if </span>saved_correct_block {
<span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
- } <span class="kw">else</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">last_synced_block</span> <span class="op">=</span> <span class="ident">last_synced_block</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
+ } <span class="kw">else </span>{
+ <span class="kw">let </span><span class="kw-2">mut </span>last_synced_block = last_synced_block.lock().unwrap();
- <span class="comment">// If we download a block older than `last_synced_block`, we update it so that</span>
- <span class="comment">// we know to delete and re-process all txs starting from that height</span>
- <span class="kw">if</span> <span class="ident">block_height</span> <span class="op"><</span> <span class="kw-2">*</span><span class="ident">last_synced_block</span> {
- <span class="kw-2">*</span><span class="ident">last_synced_block</span> <span class="op">=</span> <span class="ident">block_height</span>;
+ <span class="comment">// If we download a block older than `last_synced_block`, we update it so that
+ // we know to delete and re-process all txs starting from that height
+ </span><span class="kw">if </span>block_height < <span class="kw-2">*</span>last_synced_block {
+ <span class="kw-2">*</span>last_synced_block = block_height;
}
<span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
}
},
- <span class="op">|</span><span class="ident">index</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">synced_bundles</span> <span class="op">=</span> <span class="ident">synced_bundles</span>.<span class="ident">fetch_add</span>(<span class="number">1</span>, <span class="ident">Ordering::SeqCst</span>);
- <span class="kw">let</span> <span class="ident">local_filters_cost</span> <span class="op">=</span> <span class="ident">synced_bundles</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">SYNC_FILTERS_COST</span>;
- <span class="ident">progress_update</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>().<span class="ident">update</span>(
- (<span class="ident">headers_cost</span> <span class="op">+</span> <span class="ident">local_filters_cost</span>) <span class="op">/</span> <span class="ident">total_cost</span> <span class="op">*</span> <span class="number">100.0</span>,
+ |index| {
+ <span class="kw">let </span>synced_bundles = synced_bundles.fetch_add(<span class="number">1</span>, Ordering::SeqCst);
+ <span class="kw">let </span>local_filters_cost = synced_bundles <span class="kw">as </span>f32 * SYNC_FILTERS_COST;
+ progress_update.lock().unwrap().update(
+ (headers_cost + local_filters_cost) / total_cost * <span class="number">100.0</span>,
<span class="prelude-val">Some</span>(<span class="macro">format!</span>(
<span class="string">"Synced filters {} - {}"</span>,
- <span class="ident">index</span> <span class="op">*</span> <span class="number">1000</span> <span class="op">+</span> <span class="number">1</span>,
- (<span class="ident">index</span> <span class="op">+</span> <span class="number">1</span>) <span class="op">*</span> <span class="number">1000</span>
- )),
+ index * <span class="number">1000 </span>+ <span class="number">1</span>,
+ (index + <span class="number">1</span>) * <span class="number">1000
+ </span>)),
)
},
)
});
- <span class="ident">threads</span>.<span class="ident">push</span>(<span class="ident">thread</span>);
+ threads.push(thread);
}
- <span class="kw">for</span> <span class="ident">t</span> <span class="kw">in</span> <span class="ident">threads</span> {
- <span class="ident">t</span>.<span class="ident">join</span>().<span class="ident">unwrap</span>()<span class="question-mark">?</span>;
+ <span class="kw">for </span>t <span class="kw">in </span>threads {
+ t.join().unwrap()<span class="question-mark">?</span>;
}
- <span class="ident">progress_update</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>().<span class="ident">update</span>(
- (<span class="ident">headers_cost</span> <span class="op">+</span> <span class="ident">filters_cost</span>) <span class="op">/</span> <span class="ident">total_cost</span> <span class="op">*</span> <span class="number">100.0</span>,
- <span class="prelude-val">Some</span>(<span class="string">"Processing downloaded blocks and mempool"</span>.<span class="ident">into</span>()),
+ progress_update.lock().unwrap().update(
+ (headers_cost + filters_cost) / total_cost * <span class="number">100.0</span>,
+ <span class="prelude-val">Some</span>(<span class="string">"Processing downloaded blocks and mempool"</span>.into()),
)<span class="question-mark">?</span>;
- <span class="comment">// delete all txs newer than last_synced_block</span>
- <span class="kw">let</span> <span class="ident">last_synced_block</span> <span class="op">=</span> <span class="kw-2">*</span><span class="ident">last_synced_block</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
+ <span class="comment">// delete all txs newer than last_synced_block
+ </span><span class="kw">let </span>last_synced_block = <span class="kw-2">*</span>last_synced_block.lock().unwrap();
<span class="macro">log::debug!</span>(
<span class="string">"Dropping transactions newer than `last_synced_block` = {}"</span>,
- <span class="ident">last_synced_block</span>
+ last_synced_block
);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">updates</span> <span class="op">=</span> <span class="ident">database</span>.<span class="ident">begin_batch</span>();
- <span class="kw">for</span> <span class="ident">details</span> <span class="kw">in</span> <span class="ident">database</span>.<span class="ident">iter_txs</span>(<span class="bool-val">false</span>)<span class="question-mark">?</span> {
- <span class="kw">match</span> <span class="ident">details</span>.<span class="ident">confirmation_time</span> {
- <span class="prelude-val">Some</span>(<span class="ident">c</span>) <span class="kw">if</span> (<span class="ident">c</span>.<span class="ident">height</span> <span class="kw">as</span> <span class="ident">usize</span>) <span class="op"><</span> <span class="ident">last_synced_block</span> => <span class="kw">continue</span>,
- <span class="kw">_</span> => <span class="ident">updates</span>.<span class="ident">del_tx</span>(<span class="kw-2">&</span><span class="ident">details</span>.<span class="ident">txid</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>,
+ <span class="kw">let </span><span class="kw-2">mut </span>updates = database.begin_batch();
+ <span class="kw">for </span>details <span class="kw">in </span>database.iter_txs(<span class="bool-val">false</span>)<span class="question-mark">? </span>{
+ <span class="kw">match </span>details.confirmation_time {
+ <span class="prelude-val">Some</span>(c) <span class="kw">if </span>(c.height <span class="kw">as </span>usize) < last_synced_block => <span class="kw">continue</span>,
+ <span class="kw">_ </span>=> updates.del_tx(<span class="kw-2">&</span>details.txid, <span class="bool-val">false</span>)<span class="question-mark">?</span>,
};
}
- <span class="ident">database</span>.<span class="ident">commit_batch</span>(<span class="ident">updates</span>)<span class="question-mark">?</span>;
+ database.commit_batch(updates)<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">first_peer</span>.<span class="ident">ask_for_mempool</span>() {
- <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::PeerBloomDisabled</span>) => {
+ <span class="kw">match </span>first_peer.ask_for_mempool() {
+ <span class="prelude-val">Err</span>(CompactFiltersError::PeerBloomDisabled) => {
<span class="macro">log::warn!</span>(<span class="string">"Peer has BLOOM disabled, we can't ask for the mempool"</span>)
}
- <span class="ident">e</span> => <span class="ident">e</span><span class="question-mark">?</span>,
+ e => e<span class="question-mark">?</span>,
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">internal_max_deriv</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">external_max_deriv</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>internal_max_deriv = <span class="prelude-val">None</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>external_max_deriv = <span class="prelude-val">None</span>;
- <span class="kw">for</span> (<span class="ident">height</span>, <span class="ident">block</span>) <span class="kw">in</span> <span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">iter_full_blocks</span>()<span class="question-mark">?</span> {
- <span class="kw">for</span> <span class="ident">tx</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">block</span>.<span class="ident">txdata</span> {
- <span class="self">self</span>.<span class="ident">process_tx</span>(
- <span class="ident">database</span>,
- <span class="ident">tx</span>,
- <span class="prelude-val">Some</span>(<span class="ident">height</span> <span class="kw">as</span> <span class="ident">u32</span>),
+ <span class="kw">for </span>(height, block) <span class="kw">in </span><span class="self">self</span>.headers.iter_full_blocks()<span class="question-mark">? </span>{
+ <span class="kw">for </span>tx <span class="kw">in </span><span class="kw-2">&</span>block.txdata {
+ <span class="self">self</span>.process_tx(
+ database,
+ tx,
+ <span class="prelude-val">Some</span>(height <span class="kw">as </span>u32),
<span class="prelude-val">None</span>,
- <span class="kw-2">&mut</span> <span class="ident">internal_max_deriv</span>,
- <span class="kw-2">&mut</span> <span class="ident">external_max_deriv</span>,
+ <span class="kw-2">&mut </span>internal_max_deriv,
+ <span class="kw-2">&mut </span>external_max_deriv,
)<span class="question-mark">?</span>;
}
}
- <span class="kw">for</span> <span class="ident">tx</span> <span class="kw">in</span> <span class="ident">first_peer</span>.<span class="ident">get_mempool</span>().<span class="ident">iter_txs</span>().<span class="ident">iter</span>() {
- <span class="self">self</span>.<span class="ident">process_tx</span>(
- <span class="ident">database</span>,
- <span class="ident">tx</span>,
+ <span class="kw">for </span>tx <span class="kw">in </span>first_peer.get_mempool().iter_txs().iter() {
+ <span class="self">self</span>.process_tx(
+ database,
+ tx,
<span class="prelude-val">None</span>,
<span class="prelude-val">None</span>,
- <span class="kw-2">&mut</span> <span class="ident">internal_max_deriv</span>,
- <span class="kw-2">&mut</span> <span class="ident">external_max_deriv</span>,
+ <span class="kw-2">&mut </span>internal_max_deriv,
+ <span class="kw-2">&mut </span>external_max_deriv,
)<span class="question-mark">?</span>;
}
- <span class="kw">let</span> <span class="ident">current_ext</span> <span class="op">=</span> <span class="ident">database</span>
- .<span class="ident">get_last_index</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>
- .<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">first_ext_new</span> <span class="op">=</span> <span class="ident">external_max_deriv</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">+</span> <span class="number">1</span>).<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="kw">if</span> <span class="ident">first_ext_new</span> <span class="op">></span> <span class="ident">current_ext</span> {
- <span class="macro">info!</span>(<span class="string">"Setting external index to {}"</span>, <span class="ident">first_ext_new</span>);
- <span class="ident">database</span>.<span class="ident">set_last_index</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">first_ext_new</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>current_ext = database
+ .get_last_index(KeychainKind::External)<span class="question-mark">?
+ </span>.unwrap_or(<span class="number">0</span>);
+ <span class="kw">let </span>first_ext_new = external_max_deriv.map(|x| x + <span class="number">1</span>).unwrap_or(<span class="number">0</span>);
+ <span class="kw">if </span>first_ext_new > current_ext {
+ <span class="macro">info!</span>(<span class="string">"Setting external index to {}"</span>, first_ext_new);
+ database.set_last_index(KeychainKind::External, first_ext_new)<span class="question-mark">?</span>;
}
- <span class="kw">let</span> <span class="ident">current_int</span> <span class="op">=</span> <span class="ident">database</span>
- .<span class="ident">get_last_index</span>(<span class="ident">KeychainKind::Internal</span>)<span class="question-mark">?</span>
- .<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">first_int_new</span> <span class="op">=</span> <span class="ident">internal_max_deriv</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">+</span> <span class="number">1</span>).<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="kw">if</span> <span class="ident">first_int_new</span> <span class="op">></span> <span class="ident">current_int</span> {
- <span class="macro">info!</span>(<span class="string">"Setting internal index to {}"</span>, <span class="ident">first_int_new</span>);
- <span class="ident">database</span>.<span class="ident">set_last_index</span>(<span class="ident">KeychainKind::Internal</span>, <span class="ident">first_int_new</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>current_int = database
+ .get_last_index(KeychainKind::Internal)<span class="question-mark">?
+ </span>.unwrap_or(<span class="number">0</span>);
+ <span class="kw">let </span>first_int_new = internal_max_deriv.map(|x| x + <span class="number">1</span>).unwrap_or(<span class="number">0</span>);
+ <span class="kw">if </span>first_int_new > current_int {
+ <span class="macro">info!</span>(<span class="string">"Setting internal index to {}"</span>, first_int_new);
+ database.set_last_index(KeychainKind::Internal, first_int_new)<span class="question-mark">?</span>;
}
- <span class="macro">info!</span>(<span class="string">"Dropping blocks until {}"</span>, <span class="ident">buried_height</span>);
- <span class="self">self</span>.<span class="ident">headers</span>.<span class="ident">delete_blocks_until</span>(<span class="ident">buried_height</span>)<span class="question-mark">?</span>;
+ <span class="macro">info!</span>(<span class="string">"Dropping blocks until {}"</span>, buried_height);
+ <span class="self">self</span>.headers.delete_blocks_until(buried_height)<span class="question-mark">?</span>;
- <span class="ident">progress_update</span>
- .<span class="ident">lock</span>()
- .<span class="ident">unwrap</span>()
- .<span class="ident">update</span>(<span class="number">100.0</span>, <span class="prelude-val">Some</span>(<span class="string">"Done"</span>.<span class="ident">into</span>()))<span class="question-mark">?</span>;
+ progress_update
+ .lock()
+ .unwrap()
+ .update(<span class="number">100.0</span>, <span class="prelude-val">Some</span>(<span class="string">"Done"</span>.into()))<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="doccomment">/// Data to connect to a Bitcoin P2P peer</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Deserialize</span>, <span class="ident">serde::Serialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">BitcoinPeerConfig</span> {
- <span class="doccomment">/// Peer address such as 127.0.0.1:18333</span>
- <span class="kw">pub</span> <span class="ident">address</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Optional socks5 proxy</span>
- <span class="kw">pub</span> <span class="ident">socks5</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
- <span class="doccomment">/// Optional socks5 proxy credentials</span>
- <span class="kw">pub</span> <span class="ident">socks5_credentials</span>: <span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">String</span>, <span class="ident">String</span>)<span class="op">></span>,
+<span class="doccomment">/// Data to connect to a Bitcoin P2P peer
+</span><span class="attr">#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>BitcoinPeerConfig {
+ <span class="doccomment">/// Peer address such as 127.0.0.1:18333
+ </span><span class="kw">pub </span>address: String,
+ <span class="doccomment">/// Optional socks5 proxy
+ </span><span class="kw">pub </span>socks5: <span class="prelude-ty">Option</span><String>,
+ <span class="doccomment">/// Optional socks5 proxy credentials
+ </span><span class="kw">pub </span>socks5_credentials: <span class="prelude-ty">Option</span><(String, String)>,
}
-<span class="doccomment">/// Configuration for a [`CompactFiltersBlockchain`]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Deserialize</span>, <span class="ident">serde::Serialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CompactFiltersBlockchainConfig</span> {
- <span class="doccomment">/// List of peers to try to connect to for asking headers and filters</span>
- <span class="kw">pub</span> <span class="ident">peers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">BitcoinPeerConfig</span><span class="op">></span>,
- <span class="doccomment">/// Network used</span>
- <span class="kw">pub</span> <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="doccomment">/// Storage dir to save partially downloaded headers and full blocks. Should be a separate directory per descriptor. Consider using [crate::wallet::wallet_name_from_descriptor] for this.</span>
- <span class="kw">pub</span> <span class="ident">storage_dir</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Optionally skip initial `skip_blocks` blocks (default: 0)</span>
- <span class="kw">pub</span> <span class="ident">skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>,
+<span class="doccomment">/// Configuration for a [`CompactFiltersBlockchain`]
+</span><span class="attr">#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>CompactFiltersBlockchainConfig {
+ <span class="doccomment">/// List of peers to try to connect to for asking headers and filters
+ </span><span class="kw">pub </span>peers: Vec<BitcoinPeerConfig>,
+ <span class="doccomment">/// Network used
+ </span><span class="kw">pub </span>network: Network,
+ <span class="doccomment">/// Storage dir to save partially downloaded headers and full blocks. Should be a separate directory per descriptor. Consider using [crate::wallet::wallet_name_from_descriptor] for this.
+ </span><span class="kw">pub </span>storage_dir: String,
+ <span class="doccomment">/// Optionally skip initial `skip_blocks` blocks (default: 0)
+ </span><span class="kw">pub </span>skip_blocks: <span class="prelude-ty">Option</span><usize>,
}
-<span class="kw">impl</span> <span class="ident">ConfigurableBlockchain</span> <span class="kw">for</span> <span class="ident">CompactFiltersBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">CompactFiltersBlockchainConfig</span>;
-
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">mempool</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">Mempool::default</span>());
- <span class="kw">let</span> <span class="ident">peers</span> <span class="op">=</span> <span class="ident">config</span>
- .<span class="ident">peers</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">peer_conf</span><span class="op">|</span> <span class="kw">match</span> <span class="kw-2">&</span><span class="ident">peer_conf</span>.<span class="ident">socks5</span> {
- <span class="prelude-val">None</span> => <span class="ident">Peer::connect</span>(<span class="kw-2">&</span><span class="ident">peer_conf</span>.<span class="ident">address</span>, <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">mempool</span>), <span class="ident">config</span>.<span class="ident">network</span>),
- <span class="prelude-val">Some</span>(<span class="ident">proxy</span>) => <span class="ident">Peer::connect_proxy</span>(
- <span class="ident">peer_conf</span>.<span class="ident">address</span>.<span class="ident">as_str</span>(),
- <span class="ident">proxy</span>,
- <span class="ident">peer_conf</span>
- .<span class="ident">socks5_credentials</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>)<span class="op">|</span> (<span class="ident">a</span>.<span class="ident">as_str</span>(), <span class="ident">b</span>.<span class="ident">as_str</span>())),
- <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">mempool</span>),
- <span class="ident">config</span>.<span class="ident">network</span>,
+<span class="kw">impl </span>ConfigurableBlockchain <span class="kw">for </span>CompactFiltersBlockchain {
+ <span class="kw">type </span>Config = CompactFiltersBlockchainConfig;
+
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="kw">let </span>mempool = Arc::new(Mempool::default());
+ <span class="kw">let </span>peers = config
+ .peers
+ .iter()
+ .map(|peer_conf| <span class="kw">match </span><span class="kw-2">&</span>peer_conf.socks5 {
+ <span class="prelude-val">None </span>=> Peer::connect(<span class="kw-2">&</span>peer_conf.address, Arc::clone(<span class="kw-2">&</span>mempool), config.network),
+ <span class="prelude-val">Some</span>(proxy) => Peer::connect_proxy(
+ peer_conf.address.as_str(),
+ proxy,
+ peer_conf
+ .socks5_credentials
+ .as_ref()
+ .map(|(a, b)| (a.as_str(), b.as_str())),
+ Arc::clone(<span class="kw-2">&</span>mempool),
+ config.network,
),
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">CompactFiltersBlockchain::new</span>(
- <span class="ident">peers</span>,
- <span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">storage_dir</span>,
- <span class="ident">config</span>.<span class="ident">skip_blocks</span>,
+ <span class="prelude-val">Ok</span>(CompactFiltersBlockchain::new(
+ peers,
+ <span class="kw-2">&</span>config.storage_dir,
+ config.skip_blocks,
)<span class="question-mark">?</span>)
}
}
-<span class="doccomment">/// An error that can occur during sync with a [`CompactFiltersBlockchain`]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">CompactFiltersError</span> {
- <span class="doccomment">/// A peer sent an invalid or unexpected response</span>
- <span class="ident">InvalidResponse</span>,
- <span class="doccomment">/// The headers returned are invalid</span>
- <span class="ident">InvalidHeaders</span>,
- <span class="doccomment">/// The compact filter headers returned are invalid</span>
- <span class="ident">InvalidFilterHeader</span>,
- <span class="doccomment">/// The compact filter returned is invalid</span>
- <span class="ident">InvalidFilter</span>,
- <span class="doccomment">/// The peer is missing a block in the valid chain</span>
- <span class="ident">MissingBlock</span>,
- <span class="doccomment">/// Block hash at specified height not found</span>
- <span class="ident">BlockHashNotFound</span>,
- <span class="doccomment">/// The data stored in the block filters storage are corrupted</span>
- <span class="ident">DataCorruption</span>,
-
- <span class="doccomment">/// A peer is not connected</span>
- <span class="ident">NotConnected</span>,
- <span class="doccomment">/// A peer took too long to reply to one of our messages</span>
- <span class="ident">Timeout</span>,
- <span class="doccomment">/// The peer doesn't advertise the [`BLOOM`](bitcoin::network::constants::ServiceFlags::BLOOM) service flag</span>
- <span class="ident">PeerBloomDisabled</span>,
-
- <span class="doccomment">/// No peers have been specified</span>
- <span class="ident">NoPeers</span>,
-
- <span class="doccomment">/// Internal database error</span>
- <span class="ident">Db</span>(<span class="ident">rocksdb::Error</span>),
- <span class="doccomment">/// Internal I/O error</span>
- <span class="ident">Io</span>(<span class="ident">std::io::Error</span>),
- <span class="doccomment">/// Invalid BIP158 filter</span>
- <span class="ident">Bip158</span>(<span class="ident">bitcoin::util::bip158::Error</span>),
- <span class="doccomment">/// Internal system time error</span>
- <span class="ident">Time</span>(<span class="ident">std::time::SystemTimeError</span>),
-
- <span class="doccomment">/// Wrapper for [`crate::error::Error`]</span>
- <span class="ident">Global</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::error::Error</span><span class="op">></span>),
+<span class="doccomment">/// An error that can occur during sync with a [`CompactFiltersBlockchain`]
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>CompactFiltersError {
+ <span class="doccomment">/// A peer sent an invalid or unexpected response
+ </span>InvalidResponse,
+ <span class="doccomment">/// The headers returned are invalid
+ </span>InvalidHeaders,
+ <span class="doccomment">/// The compact filter headers returned are invalid
+ </span>InvalidFilterHeader,
+ <span class="doccomment">/// The compact filter returned is invalid
+ </span>InvalidFilter,
+ <span class="doccomment">/// The peer is missing a block in the valid chain
+ </span>MissingBlock,
+ <span class="doccomment">/// Block hash at specified height not found
+ </span>BlockHashNotFound,
+ <span class="doccomment">/// The data stored in the block filters storage are corrupted
+ </span>DataCorruption,
+
+ <span class="doccomment">/// A peer is not connected
+ </span>NotConnected,
+ <span class="doccomment">/// A peer took too long to reply to one of our messages
+ </span>Timeout,
+ <span class="doccomment">/// The peer doesn't advertise the [`BLOOM`](bitcoin::network::constants::ServiceFlags::BLOOM) service flag
+ </span>PeerBloomDisabled,
+
+ <span class="doccomment">/// No peers have been specified
+ </span>NoPeers,
+
+ <span class="doccomment">/// Internal database error
+ </span>Db(rocksdb::Error),
+ <span class="doccomment">/// Internal I/O error
+ </span>Io(std::io::Error),
+ <span class="doccomment">/// Invalid BIP158 filter
+ </span>Bip158(bitcoin::util::bip158::Error),
+ <span class="doccomment">/// Internal system time error
+ </span>Time(std::time::SystemTimeError),
+
+ <span class="doccomment">/// Wrapper for [`crate::error::Error`]
+ </span>Global(Box<<span class="kw">crate</span>::error::Error>),
}
-<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">CompactFiltersError</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>fmt::Display <span class="kw">for </span>CompactFiltersError {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">CompactFiltersError</span> {}
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>CompactFiltersError {}
-<span class="macro">impl_error!</span>(<span class="ident">rocksdb::Error</span>, <span class="ident">Db</span>, <span class="ident">CompactFiltersError</span>);
-<span class="macro">impl_error!</span>(<span class="ident">std::io::Error</span>, <span class="ident">Io</span>, <span class="ident">CompactFiltersError</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::bip158::Error</span>, <span class="ident">Bip158</span>, <span class="ident">CompactFiltersError</span>);
-<span class="macro">impl_error!</span>(<span class="ident">std::time::SystemTimeError</span>, <span class="ident">Time</span>, <span class="ident">CompactFiltersError</span>);
+<span class="macro">impl_error!</span>(rocksdb::Error, Db, CompactFiltersError);
+<span class="macro">impl_error!</span>(std::io::Error, Io, CompactFiltersError);
+<span class="macro">impl_error!</span>(bitcoin::util::bip158::Error, Bip158, CompactFiltersError);
+<span class="macro">impl_error!</span>(std::time::SystemTimeError, Time, CompactFiltersError);
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::error::Error</span><span class="op">></span> <span class="kw">for</span> <span class="ident">CompactFiltersError</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">err</span>: <span class="ident"><span class="kw">crate</span>::error::Error</span>) -> <span class="self">Self</span> {
- <span class="ident">CompactFiltersError::Global</span>(<span class="ident">Box::new</span>(<span class="ident">err</span>))
+<span class="kw">impl </span>From<<span class="kw">crate</span>::error::Error> <span class="kw">for </span>CompactFiltersError {
+ <span class="kw">fn </span>from(err: <span class="kw">crate</span>::error::Error) -> <span class="self">Self </span>{
+ CompactFiltersError::Global(Box::new(err))
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/peer.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>peer.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../../storage.js"></script><script src="../../../../crates.js"></script><script defer src="../../../../main.js"></script><script defer src="../../../../source-script.js"></script><script defer src="../../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="kw">use</span> <span class="ident">std::collections::HashMap</span>;
-<span class="kw">use</span> <span class="ident">std::io::BufReader</span>;
-<span class="kw">use</span> <span class="ident">std::net</span>::{<span class="ident">TcpStream</span>, <span class="ident">ToSocketAddrs</span>};
-<span class="kw">use</span> <span class="ident">std::sync</span>::{<span class="ident">Arc</span>, <span class="ident">Condvar</span>, <span class="ident">Mutex</span>, <span class="ident">RwLock</span>};
-<span class="kw">use</span> <span class="ident">std::thread</span>;
-<span class="kw">use</span> <span class="ident">std::time</span>::{<span class="ident">Duration</span>, <span class="ident">SystemTime</span>, <span class="ident">UNIX_EPOCH</span>};
-
-<span class="kw">use</span> <span class="ident">socks</span>::{<span class="ident">Socks5Stream</span>, <span class="ident">ToTargetAddr</span>};
-
-<span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">thread_rng</span>, <span class="ident">Rng</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus</span>::{<span class="ident">Decodable</span>, <span class="ident">Encodable</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types::BlockHash</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::constants::ServiceFlags</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::message</span>::{<span class="ident">NetworkMessage</span>, <span class="ident">RawNetworkMessage</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::network::message_blockdata</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::message_filter</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::message_network::VersionMessage</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::Address</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Block</span>, <span class="ident">Network</span>, <span class="ident">Transaction</span>, <span class="ident">Txid</span>, <span class="ident">Wtxid</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::CompactFiltersError</span>;
-
-<span class="kw">type</span> <span class="ident">ResponsesMap</span> <span class="op">=</span> <span class="ident">HashMap</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>, <span class="ident">Arc</span><span class="op"><</span>(<span class="ident">Mutex</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">NetworkMessage</span><span class="op">></span><span class="op">></span>, <span class="ident">Condvar</span>)<span class="op">></span><span class="op">></span>;
-
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const</span> <span class="ident">TIMEOUT_SECS</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">30</span>;
-
-<span class="doccomment">/// Container for unconfirmed, but valid Bitcoin transactions</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// It is normally shared between [`Peer`]s with the use of [`Arc`], so that transactions are not</span>
-<span class="doccomment">/// duplicated in memory.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Mempool</span>(<span class="ident">RwLock</span><span class="op"><</span><span class="ident">InnerMempool</span><span class="op">></span>);
-
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>)]</span>
-<span class="kw">struct</span> <span class="ident">InnerMempool</span> {
- <span class="ident">txs</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">Txid</span>, <span class="ident">Transaction</span><span class="op">></span>,
- <span class="ident">wtxids</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">Wtxid</span>, <span class="ident">Txid</span><span class="op">></span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/peer.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>peer.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../../source-files.js"></script><script defer src="../../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::io::BufReader;
+<span class="kw">use </span>std::net::{TcpStream, ToSocketAddrs};
+<span class="kw">use </span>std::sync::{Arc, Condvar, Mutex, RwLock};
+<span class="kw">use </span>std::thread;
+<span class="kw">use </span>std::time::{Duration, SystemTime, UNIX_EPOCH};
+
+<span class="kw">use </span>socks::{Socks5Stream, ToTargetAddr};
+
+<span class="kw">use </span>rand::{thread_rng, Rng};
+
+<span class="kw">use </span>bitcoin::consensus::{Decodable, Encodable};
+<span class="kw">use </span>bitcoin::hash_types::BlockHash;
+<span class="kw">use </span>bitcoin::network::constants::ServiceFlags;
+<span class="kw">use </span>bitcoin::network::message::{NetworkMessage, RawNetworkMessage};
+<span class="kw">use </span>bitcoin::network::message_blockdata::<span class="kw-2">*</span>;
+<span class="kw">use </span>bitcoin::network::message_filter::<span class="kw-2">*</span>;
+<span class="kw">use </span>bitcoin::network::message_network::VersionMessage;
+<span class="kw">use </span>bitcoin::network::Address;
+<span class="kw">use </span>bitcoin::{Block, Network, Transaction, Txid, Wtxid};
+
+<span class="kw">use </span><span class="kw">super</span>::CompactFiltersError;
+
+<span class="kw">type </span>ResponsesMap = HashMap<<span class="kw-2">&</span><span class="lifetime">'static </span>str, Arc<(Mutex<Vec<NetworkMessage>>, Condvar)>>;
+
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const </span>TIMEOUT_SECS: u64 = <span class="number">30</span>;
+
+<span class="doccomment">/// Container for unconfirmed, but valid Bitcoin transactions
+///
+/// It is normally shared between [`Peer`]s with the use of [`Arc`], so that transactions are not
+/// duplicated in memory.
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">pub struct </span>Mempool(RwLock<InnerMempool>);
+
+<span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">struct </span>InnerMempool {
+ txs: HashMap<Txid, Transaction>,
+ wtxids: HashMap<Wtxid, Txid>,
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">enum</span> <span class="ident">TxIdentifier</span> {
- <span class="ident">Wtxid</span>(<span class="ident">Wtxid</span>),
- <span class="ident">Txid</span>(<span class="ident">Txid</span>),
+<span class="attr">#[derive(Debug, Clone, PartialEq, Eq)]
+</span><span class="kw">enum </span>TxIdentifier {
+ Wtxid(Wtxid),
+ Txid(Txid),
}
-<span class="kw">impl</span> <span class="ident">Mempool</span> {
- <span class="doccomment">/// Create a new empty mempool</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
- <span class="ident"><span class="self">Self</span>::default</span>()
+<span class="kw">impl </span>Mempool {
+ <span class="doccomment">/// Create a new empty mempool
+ </span><span class="kw">pub fn </span>new() -> <span class="self">Self </span>{
+ <span class="self">Self</span>::default()
}
- <span class="doccomment">/// Add a transaction to the mempool</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that this doesn't propagate the transaction to other</span>
- <span class="doccomment">/// peers. To do that, [`broadcast`](crate::blockchain::Blockchain::broadcast) should be used.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="ident">Transaction</span>) {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">guard</span> <span class="op">=</span> <span class="self">self</span>.<span class="number">0</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>();
+ <span class="doccomment">/// Add a transaction to the mempool
+ ///
+ /// Note that this doesn't propagate the transaction to other
+ /// peers. To do that, [`broadcast`](crate::blockchain::Blockchain::broadcast) should be used.
+ </span><span class="kw">pub fn </span>add_tx(<span class="kw-2">&</span><span class="self">self</span>, tx: Transaction) {
+ <span class="kw">let </span><span class="kw-2">mut </span>guard = <span class="self">self</span>.<span class="number">0</span>.write().unwrap();
- <span class="ident">guard</span>.<span class="ident">wtxids</span>.<span class="ident">insert</span>(<span class="ident">tx</span>.<span class="ident">wtxid</span>(), <span class="ident">tx</span>.<span class="ident">txid</span>());
- <span class="ident">guard</span>.<span class="ident">txs</span>.<span class="ident">insert</span>(<span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="ident">tx</span>);
+ guard.wtxids.insert(tx.wtxid(), tx.txid());
+ guard.txs.insert(tx.txid(), tx);
}
- <span class="doccomment">/// Look-up a transaction in the mempool given an [`Inventory`] request</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">inventory</span>: <span class="kw-2">&</span><span class="ident">Inventory</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">identifer</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">inventory</span> {
- <span class="ident">Inventory::Error</span>
- <span class="op">|</span> <span class="ident">Inventory::Block</span>(<span class="kw">_</span>)
- <span class="op">|</span> <span class="ident">Inventory::WitnessBlock</span>(<span class="kw">_</span>)
- <span class="op">|</span> <span class="ident">Inventory::CompactBlock</span>(<span class="kw">_</span>) => <span class="kw">return</span> <span class="prelude-val">None</span>,
- <span class="ident">Inventory::Transaction</span>(<span class="ident">txid</span>) => <span class="ident">TxIdentifier::Txid</span>(<span class="kw-2">*</span><span class="ident">txid</span>),
- <span class="ident">Inventory::WitnessTransaction</span>(<span class="ident">txid</span>) => <span class="ident">TxIdentifier::Txid</span>(<span class="kw-2">*</span><span class="ident">txid</span>),
- <span class="ident">Inventory::WTx</span>(<span class="ident">wtxid</span>) => <span class="ident">TxIdentifier::Wtxid</span>(<span class="kw-2">*</span><span class="ident">wtxid</span>),
- <span class="ident">Inventory::Unknown</span> { <span class="ident">inv_type</span>, <span class="ident">hash</span> } => {
+ <span class="doccomment">/// Look-up a transaction in the mempool given an [`Inventory`] request
+ </span><span class="kw">pub fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, inventory: <span class="kw-2">&</span>Inventory) -> <span class="prelude-ty">Option</span><Transaction> {
+ <span class="kw">let </span>identifer = <span class="kw">match </span>inventory {
+ Inventory::Error
+ | Inventory::Block(<span class="kw">_</span>)
+ | Inventory::WitnessBlock(<span class="kw">_</span>)
+ | Inventory::CompactBlock(<span class="kw">_</span>) => <span class="kw">return </span><span class="prelude-val">None</span>,
+ Inventory::Transaction(txid) => TxIdentifier::Txid(<span class="kw-2">*</span>txid),
+ Inventory::WitnessTransaction(txid) => TxIdentifier::Txid(<span class="kw-2">*</span>txid),
+ Inventory::WTx(wtxid) => TxIdentifier::Wtxid(<span class="kw-2">*</span>wtxid),
+ Inventory::Unknown { inv_type, hash } => {
<span class="macro">log::warn!</span>(
<span class="string">"Unknown inventory request type `{}`, hash `{:?}`"</span>,
- <span class="ident">inv_type</span>,
- <span class="ident">hash</span>
+ inv_type,
+ hash
);
- <span class="kw">return</span> <span class="prelude-val">None</span>;
+ <span class="kw">return </span><span class="prelude-val">None</span>;
}
};
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">identifer</span> {
- <span class="ident">TxIdentifier::Txid</span>(<span class="ident">txid</span>) => <span class="prelude-val">Some</span>(<span class="ident">txid</span>),
- <span class="ident">TxIdentifier::Wtxid</span>(<span class="ident">wtxid</span>) => <span class="self">self</span>.<span class="number">0</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>().<span class="ident">wtxids</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">wtxid</span>).<span class="ident">cloned</span>(),
+ <span class="kw">let </span>txid = <span class="kw">match </span>identifer {
+ TxIdentifier::Txid(txid) => <span class="prelude-val">Some</span>(txid),
+ TxIdentifier::Wtxid(wtxid) => <span class="self">self</span>.<span class="number">0</span>.read().unwrap().wtxids.get(<span class="kw-2">&</span>wtxid).cloned(),
};
- <span class="ident">txid</span>.<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> <span class="self">self</span>.<span class="number">0</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>().<span class="ident">txs</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">txid</span>).<span class="ident">cloned</span>())
+ txid.and_then(|txid| <span class="self">self</span>.<span class="number">0</span>.read().unwrap().txs.get(<span class="kw-2">&</span>txid).cloned())
}
- <span class="doccomment">/// Return whether or not the mempool contains a transaction with a given txid</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">has_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>().<span class="ident">txs</span>.<span class="ident">contains_key</span>(<span class="ident">txid</span>)
+ <span class="doccomment">/// Return whether or not the mempool contains a transaction with a given txid
+ </span><span class="kw">pub fn </span>has_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> bool {
+ <span class="self">self</span>.<span class="number">0</span>.read().unwrap().txs.contains_key(txid)
}
- <span class="doccomment">/// Return the list of transactions contained in the mempool</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">iter_txs</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>().<span class="ident">txs</span>.<span class="ident">values</span>().<span class="ident">cloned</span>().<span class="ident">collect</span>()
+ <span class="doccomment">/// Return the list of transactions contained in the mempool
+ </span><span class="kw">pub fn </span>iter_txs(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<Transaction> {
+ <span class="self">self</span>.<span class="number">0</span>.read().unwrap().txs.values().cloned().collect()
}
}
-<span class="doccomment">/// A Bitcoin peer</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">dead_code</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Peer</span> {
- <span class="ident">writer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mutex</span><span class="op"><</span><span class="ident">TcpStream</span><span class="op">></span><span class="op">></span>,
- <span class="ident">responses</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">ResponsesMap</span><span class="op">></span><span class="op">></span>,
+<span class="doccomment">/// A Bitcoin peer
+</span><span class="attr">#[derive(Debug)]
+#[allow(dead_code)]
+</span><span class="kw">pub struct </span>Peer {
+ writer: Arc<Mutex<TcpStream>>,
+ responses: Arc<RwLock<ResponsesMap>>,
- <span class="ident">reader_thread</span>: <span class="ident">thread::JoinHandle</span><span class="op"><</span>()<span class="op">></span>,
- <span class="ident">connected</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span><span class="op">></span>,
+ reader_thread: thread::JoinHandle<()>,
+ connected: Arc<RwLock<bool>>,
- <span class="ident">mempool</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mempool</span><span class="op">></span>,
+ mempool: Arc<Mempool>,
- <span class="ident">version</span>: <span class="ident">VersionMessage</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
+ version: VersionMessage,
+ network: Network,
}
-<span class="kw">impl</span> <span class="ident">Peer</span> {
- <span class="doccomment">/// Connect to a peer over a plaintext TCP connection</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This function internally spawns a new thread that will monitor incoming messages from the</span>
- <span class="doccomment">/// peer, and optionally reply to some of them transparently, like [pings](bitcoin::network::message::NetworkMessage::Ping)</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">connect</span><span class="op"><</span><span class="ident">A</span>: <span class="ident">ToSocketAddrs</span><span class="op">></span>(
- <span class="ident">address</span>: <span class="ident">A</span>,
- <span class="ident">mempool</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mempool</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">stream</span> <span class="op">=</span> <span class="ident">TcpStream::connect</span>(<span class="ident">address</span>)<span class="question-mark">?</span>;
-
- <span class="ident">Peer::from_stream</span>(<span class="ident">stream</span>, <span class="ident">mempool</span>, <span class="ident">network</span>)
+<span class="kw">impl </span>Peer {
+ <span class="doccomment">/// Connect to a peer over a plaintext TCP connection
+ ///
+ /// This function internally spawns a new thread that will monitor incoming messages from the
+ /// peer, and optionally reply to some of them transparently, like [pings](bitcoin::network::message::NetworkMessage::Ping)
+ </span><span class="kw">pub fn </span>connect<A: ToSocketAddrs>(
+ address: A,
+ mempool: Arc<Mempool>,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">let </span>stream = TcpStream::connect(address)<span class="question-mark">?</span>;
+
+ Peer::from_stream(stream, mempool, network)
}
- <span class="doccomment">/// Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified</span>
- <span class="doccomment">/// as a tuple of `(username, password)`</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This function internally spawns a new thread that will monitor incoming messages from the</span>
- <span class="doccomment">/// peer, and optionally reply to some of them transparently, like [pings](NetworkMessage::Ping)</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">connect_proxy</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">ToTargetAddr</span>, <span class="ident">P</span>: <span class="ident">ToSocketAddrs</span><span class="op">></span>(
- <span class="ident">target</span>: <span class="ident">T</span>,
- <span class="ident">proxy</span>: <span class="ident">P</span>,
- <span class="ident">credentials</span>: <span class="prelude-ty">Option</span><span class="op"><</span>(<span class="kw-2">&</span><span class="ident">str</span>, <span class="kw-2">&</span><span class="ident">str</span>)<span class="op">></span>,
- <span class="ident">mempool</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mempool</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">socks_stream</span> <span class="op">=</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">username</span>, <span class="ident">password</span>)) <span class="op">=</span> <span class="ident">credentials</span> {
- <span class="ident">Socks5Stream::connect_with_password</span>(<span class="ident">proxy</span>, <span class="ident">target</span>, <span class="ident">username</span>, <span class="ident">password</span>)<span class="question-mark">?</span>
- } <span class="kw">else</span> {
- <span class="ident">Socks5Stream::connect</span>(<span class="ident">proxy</span>, <span class="ident">target</span>)<span class="question-mark">?</span>
- };
-
- <span class="ident">Peer::from_stream</span>(<span class="ident">socks_stream</span>.<span class="ident">into_inner</span>(), <span class="ident">mempool</span>, <span class="ident">network</span>)
+ <span class="doccomment">/// Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified
+ /// as a tuple of `(username, password)`
+ ///
+ /// This function internally spawns a new thread that will monitor incoming messages from the
+ /// peer, and optionally reply to some of them transparently, like [pings](NetworkMessage::Ping)
+ </span><span class="kw">pub fn </span>connect_proxy<T: ToTargetAddr, P: ToSocketAddrs>(
+ target: T,
+ proxy: P,
+ credentials: <span class="prelude-ty">Option</span><(<span class="kw-2">&</span>str, <span class="kw-2">&</span>str)>,
+ mempool: Arc<Mempool>,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">let </span>socks_stream = <span class="kw">if let </span><span class="prelude-val">Some</span>((username, password)) = credentials {
+ Socks5Stream::connect_with_password(proxy, target, username, password)<span class="question-mark">?
+ </span>} <span class="kw">else </span>{
+ Socks5Stream::connect(proxy, target)<span class="question-mark">?
+ </span>};
+
+ Peer::from_stream(socks_stream.into_inner(), mempool, network)
}
- <span class="doccomment">/// Create a [`Peer`] from an already connected TcpStream</span>
- <span class="kw">fn</span> <span class="ident">from_stream</span>(
- <span class="ident">stream</span>: <span class="ident">TcpStream</span>,
- <span class="ident">mempool</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mempool</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">writer</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">Mutex::new</span>(<span class="ident">stream</span>.<span class="ident">try_clone</span>()<span class="question-mark">?</span>));
- <span class="kw">let</span> <span class="ident">responses</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">ResponsesMap</span><span class="op">></span><span class="op">></span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">RwLock::new</span>(<span class="ident">HashMap::new</span>()));
- <span class="kw">let</span> <span class="ident">connected</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">RwLock::new</span>(<span class="bool-val">true</span>));
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">locked_writer</span> <span class="op">=</span> <span class="ident">writer</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">reader_thread_responses</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">responses</span>);
- <span class="kw">let</span> <span class="ident">reader_thread_writer</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">writer</span>);
- <span class="kw">let</span> <span class="ident">reader_thread_mempool</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">mempool</span>);
- <span class="kw">let</span> <span class="ident">reader_thread_connected</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">connected</span>);
- <span class="kw">let</span> <span class="ident">reader_thread</span> <span class="op">=</span> <span class="ident">thread::spawn</span>(<span class="kw">move</span> <span class="op">|</span><span class="op">|</span> {
- <span class="ident"><span class="self">Self</span>::reader_thread</span>(
- <span class="ident">network</span>,
- <span class="ident">stream</span>,
- <span class="ident">reader_thread_responses</span>,
- <span class="ident">reader_thread_writer</span>,
- <span class="ident">reader_thread_mempool</span>,
- <span class="ident">reader_thread_connected</span>,
+ <span class="doccomment">/// Create a [`Peer`] from an already connected TcpStream
+ </span><span class="kw">fn </span>from_stream(
+ stream: TcpStream,
+ mempool: Arc<Mempool>,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">let </span>writer = Arc::new(Mutex::new(stream.try_clone()<span class="question-mark">?</span>));
+ <span class="kw">let </span>responses: Arc<RwLock<ResponsesMap>> = Arc::new(RwLock::new(HashMap::new()));
+ <span class="kw">let </span>connected = Arc::new(RwLock::new(<span class="bool-val">true</span>));
+
+ <span class="kw">let </span><span class="kw-2">mut </span>locked_writer = writer.lock().unwrap();
+
+ <span class="kw">let </span>reader_thread_responses = Arc::clone(<span class="kw-2">&</span>responses);
+ <span class="kw">let </span>reader_thread_writer = Arc::clone(<span class="kw-2">&</span>writer);
+ <span class="kw">let </span>reader_thread_mempool = Arc::clone(<span class="kw-2">&</span>mempool);
+ <span class="kw">let </span>reader_thread_connected = Arc::clone(<span class="kw-2">&</span>connected);
+ <span class="kw">let </span>reader_thread = thread::spawn(<span class="kw">move </span>|| {
+ <span class="self">Self</span>::reader_thread(
+ network,
+ stream,
+ reader_thread_responses,
+ reader_thread_writer,
+ reader_thread_mempool,
+ reader_thread_connected,
)
});
- <span class="kw">let</span> <span class="ident">timestamp</span> <span class="op">=</span> <span class="ident">SystemTime::now</span>().<span class="ident">duration_since</span>(<span class="ident">UNIX_EPOCH</span>)<span class="question-mark">?</span>.<span class="ident">as_secs</span>() <span class="kw">as</span> <span class="ident">i64</span>;
- <span class="kw">let</span> <span class="ident">nonce</span> <span class="op">=</span> <span class="ident">thread_rng</span>().<span class="ident">gen</span>();
- <span class="kw">let</span> <span class="ident">receiver</span> <span class="op">=</span> <span class="ident">Address::new</span>(<span class="kw-2">&</span><span class="ident">locked_writer</span>.<span class="ident">peer_addr</span>()<span class="question-mark">?</span>, <span class="ident">ServiceFlags::NONE</span>);
- <span class="kw">let</span> <span class="ident">sender</span> <span class="op">=</span> <span class="ident">Address</span> {
- <span class="ident">services</span>: <span class="ident">ServiceFlags::NONE</span>,
- <span class="ident">address</span>: [<span class="number">0u16</span>; <span class="number">8</span>],
- <span class="ident">port</span>: <span class="number">0</span>,
+ <span class="kw">let </span>timestamp = SystemTime::now().duration_since(UNIX_EPOCH)<span class="question-mark">?</span>.as_secs() <span class="kw">as </span>i64;
+ <span class="kw">let </span>nonce = thread_rng().gen();
+ <span class="kw">let </span>receiver = Address::new(<span class="kw-2">&</span>locked_writer.peer_addr()<span class="question-mark">?</span>, ServiceFlags::NONE);
+ <span class="kw">let </span>sender = Address {
+ services: ServiceFlags::NONE,
+ address: [<span class="number">0u16</span>; <span class="number">8</span>],
+ port: <span class="number">0</span>,
};
- <span class="ident"><span class="self">Self</span>::_send</span>(
- <span class="kw-2">&mut</span> <span class="ident">locked_writer</span>,
- <span class="ident">network</span>.<span class="ident">magic</span>(),
- <span class="ident">NetworkMessage::Version</span>(<span class="ident">VersionMessage::new</span>(
- <span class="ident">ServiceFlags::WITNESS</span>,
- <span class="ident">timestamp</span>,
- <span class="ident">receiver</span>,
- <span class="ident">sender</span>,
- <span class="ident">nonce</span>,
- <span class="string">"MagicalBitcoinWallet"</span>.<span class="ident">into</span>(),
+ <span class="self">Self</span>::_send(
+ <span class="kw-2">&mut </span>locked_writer,
+ network.magic(),
+ NetworkMessage::Version(VersionMessage::new(
+ ServiceFlags::WITNESS,
+ timestamp,
+ receiver,
+ sender,
+ nonce,
+ <span class="string">"MagicalBitcoinWallet"</span>.into(),
<span class="number">0</span>,
)),
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">version</span> <span class="op">=</span> <span class="kw">if</span> <span class="kw">let</span> <span class="ident">NetworkMessage::Version</span>(<span class="ident">version</span>) <span class="op">=</span>
- <span class="ident"><span class="self">Self</span>::_recv</span>(<span class="kw-2">&</span><span class="ident">responses</span>, <span class="string">"version"</span>, <span class="prelude-val">None</span>).<span class="ident">unwrap</span>()
+ <span class="kw">let </span>version = <span class="kw">if let </span>NetworkMessage::Version(version) =
+ <span class="self">Self</span>::_recv(<span class="kw-2">&</span>responses, <span class="string">"version"</span>, <span class="prelude-val">None</span>).unwrap()
{
- <span class="ident">version</span>
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ version
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
};
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">NetworkMessage::Verack</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::_recv</span>(<span class="kw-2">&</span><span class="ident">responses</span>, <span class="string">"verack"</span>, <span class="prelude-val">None</span>).<span class="ident">unwrap</span>() {
- <span class="ident"><span class="self">Self</span>::_send</span>(<span class="kw-2">&mut</span> <span class="ident">locked_writer</span>, <span class="ident">network</span>.<span class="ident">magic</span>(), <span class="ident">NetworkMessage::Verack</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ <span class="kw">if let </span>NetworkMessage::Verack = <span class="self">Self</span>::_recv(<span class="kw-2">&</span>responses, <span class="string">"verack"</span>, <span class="prelude-val">None</span>).unwrap() {
+ <span class="self">Self</span>::_send(<span class="kw-2">&mut </span>locked_writer, network.magic(), NetworkMessage::Verack)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
}
- <span class="ident">std::mem::drop</span>(<span class="ident">locked_writer</span>);
+ std::mem::drop(locked_writer);
- <span class="prelude-val">Ok</span>(<span class="ident">Peer</span> {
- <span class="ident">writer</span>,
- <span class="ident">responses</span>,
- <span class="ident">reader_thread</span>,
- <span class="ident">connected</span>,
- <span class="ident">mempool</span>,
- <span class="ident">version</span>,
- <span class="ident">network</span>,
+ <span class="prelude-val">Ok</span>(Peer {
+ writer,
+ responses,
+ reader_thread,
+ connected,
+ mempool,
+ version,
+ network,
})
}
- <span class="doccomment">/// Send a Bitcoin network message</span>
- <span class="kw">fn</span> <span class="ident">_send</span>(
- <span class="ident">writer</span>: <span class="kw-2">&mut</span> <span class="ident">TcpStream</span>,
- <span class="ident">magic</span>: <span class="ident">u32</span>,
- <span class="ident">payload</span>: <span class="ident">NetworkMessage</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="macro">log::trace!</span>(<span class="string">"==> {:?}"</span>, <span class="ident">payload</span>);
+ <span class="doccomment">/// Send a Bitcoin network message
+ </span><span class="kw">fn </span>_send(
+ writer: <span class="kw-2">&mut </span>TcpStream,
+ magic: u32,
+ payload: NetworkMessage,
+ ) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="macro">log::trace!</span>(<span class="string">"==> {:?}"</span>, payload);
- <span class="kw">let</span> <span class="ident">raw_message</span> <span class="op">=</span> <span class="ident">RawNetworkMessage</span> { <span class="ident">magic</span>, <span class="ident">payload</span> };
+ <span class="kw">let </span>raw_message = RawNetworkMessage { magic, payload };
- <span class="ident">raw_message</span>
- .<span class="ident">consensus_encode</span>(<span class="ident">writer</span>)
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>;
+ raw_message
+ .consensus_encode(writer)
+ .map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="doccomment">/// Wait for a specific incoming Bitcoin message, optionally with a timeout</span>
- <span class="kw">fn</span> <span class="ident">_recv</span>(
- <span class="ident">responses</span>: <span class="kw-2">&</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">ResponsesMap</span><span class="op">></span><span class="op">></span>,
- <span class="ident">wait_for</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
- <span class="ident">timeout</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Duration</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">NetworkMessage</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">message_resp</span> <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">lock</span> <span class="op">=</span> <span class="ident">responses</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">message_resp</span> <span class="op">=</span> <span class="ident">lock</span>.<span class="ident">entry</span>(<span class="ident">wait_for</span>).<span class="ident">or_default</span>();
- <span class="ident">Arc::clone</span>(<span class="ident">message_resp</span>)
+ <span class="doccomment">/// Wait for a specific incoming Bitcoin message, optionally with a timeout
+ </span><span class="kw">fn </span>_recv(
+ responses: <span class="kw-2">&</span>Arc<RwLock<ResponsesMap>>,
+ wait_for: <span class="kw-2">&</span><span class="lifetime">'static </span>str,
+ timeout: <span class="prelude-ty">Option</span><Duration>,
+ ) -> <span class="prelude-ty">Option</span><NetworkMessage> {
+ <span class="kw">let </span>message_resp = {
+ <span class="kw">let </span><span class="kw-2">mut </span>lock = responses.write().unwrap();
+ <span class="kw">let </span>message_resp = lock.entry(wait_for).or_default();
+ Arc::clone(message_resp)
};
- <span class="kw">let</span> (<span class="ident">lock</span>, <span class="ident">cvar</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="kw-2">*</span><span class="ident">message_resp</span>;
+ <span class="kw">let </span>(lock, cvar) = <span class="kw-2">&*</span>message_resp;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">messages</span> <span class="op">=</span> <span class="ident">lock</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
- <span class="kw">while</span> <span class="ident">messages</span>.<span class="ident">is_empty</span>() {
- <span class="kw">match</span> <span class="ident">timeout</span> {
- <span class="prelude-val">None</span> => <span class="ident">messages</span> <span class="op">=</span> <span class="ident">cvar</span>.<span class="ident">wait</span>(<span class="ident">messages</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">t</span>) => {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">cvar</span>.<span class="ident">wait_timeout</span>(<span class="ident">messages</span>, <span class="ident">t</span>).<span class="ident">unwrap</span>();
- <span class="kw">if</span> <span class="ident">result</span>.<span class="number">1</span>.<span class="ident">timed_out</span>() {
- <span class="kw">return</span> <span class="prelude-val">None</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>messages = lock.lock().unwrap();
+ <span class="kw">while </span>messages.is_empty() {
+ <span class="kw">match </span>timeout {
+ <span class="prelude-val">None </span>=> messages = cvar.wait(messages).unwrap(),
+ <span class="prelude-val">Some</span>(t) => {
+ <span class="kw">let </span>result = cvar.wait_timeout(messages, t).unwrap();
+ <span class="kw">if </span>result.<span class="number">1</span>.timed_out() {
+ <span class="kw">return </span><span class="prelude-val">None</span>;
}
- <span class="ident">messages</span> <span class="op">=</span> <span class="ident">result</span>.<span class="number">0</span>;
+ messages = result.<span class="number">0</span>;
}
}
}
- <span class="ident">messages</span>.<span class="ident">pop</span>()
+ messages.pop()
}
- <span class="doccomment">/// Return the [`VersionMessage`] sent by the peer</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_version</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident">VersionMessage</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">version</span>
+ <span class="doccomment">/// Return the [`VersionMessage`] sent by the peer
+ </span><span class="kw">pub fn </span>get_version(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span>VersionMessage {
+ <span class="kw-2">&</span><span class="self">self</span>.version
}
- <span class="doccomment">/// Return the Bitcoin [`Network`] in use</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_network</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Network</span> {
- <span class="self">self</span>.<span class="ident">network</span>
+ <span class="doccomment">/// Return the Bitcoin [`Network`] in use
+ </span><span class="kw">pub fn </span>get_network(<span class="kw-2">&</span><span class="self">self</span>) -> Network {
+ <span class="self">self</span>.network
}
- <span class="doccomment">/// Return the mempool used by this peer</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_mempool</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mempool</span><span class="op">></span> {
- <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">mempool</span>)
+ <span class="doccomment">/// Return the mempool used by this peer
+ </span><span class="kw">pub fn </span>get_mempool(<span class="kw-2">&</span><span class="self">self</span>) -> Arc<Mempool> {
+ Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.mempool)
}
- <span class="doccomment">/// Return whether or not the peer is still connected</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_connected</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="kw-2">*</span><span class="self">self</span>.<span class="ident">connected</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>()
+ <span class="doccomment">/// Return whether or not the peer is still connected
+ </span><span class="kw">pub fn </span>is_connected(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="kw-2">*</span><span class="self">self</span>.connected.read().unwrap()
}
- <span class="doccomment">/// Internal function called once the `reader_thread` is spawned</span>
- <span class="kw">fn</span> <span class="ident">reader_thread</span>(
- <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="ident">connection</span>: <span class="ident">TcpStream</span>,
- <span class="ident">reader_thread_responses</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">ResponsesMap</span><span class="op">></span><span class="op">></span>,
- <span class="ident">reader_thread_writer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mutex</span><span class="op"><</span><span class="ident">TcpStream</span><span class="op">></span><span class="op">></span>,
- <span class="ident">reader_thread_mempool</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Mempool</span><span class="op">></span>,
- <span class="ident">reader_thread_connected</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span><span class="op">></span>,
+ <span class="doccomment">/// Internal function called once the `reader_thread` is spawned
+ </span><span class="kw">fn </span>reader_thread(
+ network: Network,
+ connection: TcpStream,
+ reader_thread_responses: Arc<RwLock<ResponsesMap>>,
+ reader_thread_writer: Arc<Mutex<TcpStream>>,
+ reader_thread_mempool: Arc<Mempool>,
+ reader_thread_connected: Arc<RwLock<bool>>,
) {
- <span class="macro">macro_rules!</span> <span class="ident">check_disconnect</span> {
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">call</span>:<span class="ident">expr</span>) => {
- <span class="kw">match</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">call</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">good</span>) => <span class="ident">good</span>,
- <span class="prelude-val">Err</span>(<span class="ident">e</span>) => {
- <span class="macro">log::debug!</span>(<span class="string">"Error {:?}"</span>, <span class="ident">e</span>);
- <span class="kw-2">*</span><span class="ident">reader_thread_connected</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>() <span class="op">=</span> <span class="bool-val">false</span>;
+ <span class="macro">macro_rules! </span>check_disconnect {
+ (<span class="macro-nonterminal">$call</span>:expr) => {
+ <span class="kw">match </span><span class="macro-nonterminal">$call </span>{
+ <span class="prelude-val">Ok</span>(good) => good,
+ <span class="prelude-val">Err</span>(e) => {
+ <span class="macro">log::debug!</span>(<span class="string">"Error {:?}"</span>, e);
+ <span class="kw-2">*</span>reader_thread_connected.write().unwrap() = <span class="bool-val">false</span>;
<span class="kw">break</span>;
}
};
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">reader</span> <span class="op">=</span> <span class="ident">BufReader::new</span>(<span class="ident">connection</span>);
- <span class="kw">loop</span> {
- <span class="kw">let</span> <span class="ident">raw_message</span>: <span class="ident">RawNetworkMessage</span> <span class="op">=</span>
- <span class="macro">check_disconnect!</span>(<span class="ident">Decodable::consensus_decode</span>(<span class="kw-2">&mut</span> <span class="ident">reader</span>));
+ <span class="kw">let </span><span class="kw-2">mut </span>reader = BufReader::new(connection);
+ <span class="kw">loop </span>{
+ <span class="kw">let </span>raw_message: RawNetworkMessage =
+ <span class="macro">check_disconnect!</span>(Decodable::consensus_decode(<span class="kw-2">&mut </span>reader));
- <span class="kw">let</span> <span class="ident">in_message</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">raw_message</span>.<span class="ident">magic</span> <span class="op">!</span><span class="op">=</span> <span class="ident">network</span>.<span class="ident">magic</span>() {
+ <span class="kw">let </span>in_message = <span class="kw">if </span>raw_message.magic != network.magic() {
<span class="kw">continue</span>;
- } <span class="kw">else</span> {
- <span class="ident">raw_message</span>.<span class="ident">payload</span>
+ } <span class="kw">else </span>{
+ raw_message.payload
};
- <span class="macro">log::trace!</span>(<span class="string">"<== {:?}"</span>, <span class="ident">in_message</span>);
+ <span class="macro">log::trace!</span>(<span class="string">"<== {:?}"</span>, in_message);
- <span class="kw">match</span> <span class="ident">in_message</span> {
- <span class="ident">NetworkMessage::Ping</span>(<span class="ident">nonce</span>) => {
- <span class="macro">check_disconnect!</span>(<span class="ident"><span class="self">Self</span>::_send</span>(
- <span class="kw-2">&mut</span> <span class="ident">reader_thread_writer</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>(),
- <span class="ident">network</span>.<span class="ident">magic</span>(),
- <span class="ident">NetworkMessage::Pong</span>(<span class="ident">nonce</span>),
+ <span class="kw">match </span>in_message {
+ NetworkMessage::Ping(nonce) => {
+ <span class="macro">check_disconnect!</span>(<span class="self">Self</span>::_send(
+ <span class="kw-2">&mut </span>reader_thread_writer.lock().unwrap(),
+ network.magic(),
+ NetworkMessage::Pong(nonce),
));
<span class="kw">continue</span>;
}
- <span class="ident">NetworkMessage::Alert</span>(<span class="kw">_</span>) => <span class="kw">continue</span>,
- <span class="ident">NetworkMessage::GetData</span>(<span class="kw-2">ref</span> <span class="ident">inv</span>) => {
- <span class="kw">let</span> (<span class="ident">found</span>, <span class="ident">not_found</span>): (<span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>) <span class="op">=</span> <span class="ident">inv</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">item</span><span class="op">|</span> (<span class="kw-2">*</span><span class="ident">item</span>, <span class="ident">reader_thread_mempool</span>.<span class="ident">get_tx</span>(<span class="ident">item</span>)))
- .<span class="ident">partition</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">d</span>)<span class="op">|</span> <span class="ident">d</span>.<span class="ident">is_some</span>());
- <span class="kw">for</span> (<span class="kw">_</span>, <span class="ident">found_tx</span>) <span class="kw">in</span> <span class="ident">found</span> {
- <span class="macro">check_disconnect!</span>(<span class="ident"><span class="self">Self</span>::_send</span>(
- <span class="kw-2">&mut</span> <span class="ident">reader_thread_writer</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>(),
- <span class="ident">network</span>.<span class="ident">magic</span>(),
- <span class="ident">NetworkMessage::Tx</span>(<span class="ident">found_tx</span>.<span class="ident">unwrap</span>()),
+ NetworkMessage::Alert(<span class="kw">_</span>) => <span class="kw">continue</span>,
+ NetworkMessage::GetData(<span class="kw-2">ref </span>inv) => {
+ <span class="kw">let </span>(found, not_found): (Vec<<span class="kw">_</span>>, Vec<<span class="kw">_</span>>) = inv
+ .iter()
+ .map(|item| (<span class="kw-2">*</span>item, reader_thread_mempool.get_tx(item)))
+ .partition(|(<span class="kw">_</span>, d)| d.is_some());
+ <span class="kw">for </span>(<span class="kw">_</span>, found_tx) <span class="kw">in </span>found {
+ <span class="macro">check_disconnect!</span>(<span class="self">Self</span>::_send(
+ <span class="kw-2">&mut </span>reader_thread_writer.lock().unwrap(),
+ network.magic(),
+ NetworkMessage::Tx(found_tx.unwrap()),
));
}
- <span class="kw">if</span> <span class="op">!</span><span class="ident">not_found</span>.<span class="ident">is_empty</span>() {
- <span class="macro">check_disconnect!</span>(<span class="ident"><span class="self">Self</span>::_send</span>(
- <span class="kw-2">&mut</span> <span class="ident">reader_thread_writer</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>(),
- <span class="ident">network</span>.<span class="ident">magic</span>(),
- <span class="ident">NetworkMessage::NotFound</span>(
- <span class="ident">not_found</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">i</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">i</span>).<span class="ident">collect</span>(),
+ <span class="kw">if </span>!not_found.is_empty() {
+ <span class="macro">check_disconnect!</span>(<span class="self">Self</span>::_send(
+ <span class="kw-2">&mut </span>reader_thread_writer.lock().unwrap(),
+ network.magic(),
+ NetworkMessage::NotFound(
+ not_found.into_iter().map(|(i, <span class="kw">_</span>)| i).collect(),
),
));
}
}
- <span class="kw">_</span> => {}
+ <span class="kw">_ </span>=> {}
}
- <span class="kw">let</span> <span class="ident">message_resp</span> <span class="op">=</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">lock</span> <span class="op">=</span> <span class="ident">reader_thread_responses</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">message_resp</span> <span class="op">=</span> <span class="ident">lock</span>.<span class="ident">entry</span>(<span class="ident">in_message</span>.<span class="ident">cmd</span>()).<span class="ident">or_default</span>();
- <span class="ident">Arc::clone</span>(<span class="ident">message_resp</span>)
+ <span class="kw">let </span>message_resp = {
+ <span class="kw">let </span><span class="kw-2">mut </span>lock = reader_thread_responses.write().unwrap();
+ <span class="kw">let </span>message_resp = lock.entry(in_message.cmd()).or_default();
+ Arc::clone(message_resp)
};
- <span class="kw">let</span> (<span class="ident">lock</span>, <span class="ident">cvar</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="kw-2">*</span><span class="ident">message_resp</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">messages</span> <span class="op">=</span> <span class="ident">lock</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
- <span class="ident">messages</span>.<span class="ident">push</span>(<span class="ident">in_message</span>);
- <span class="ident">cvar</span>.<span class="ident">notify_all</span>();
+ <span class="kw">let </span>(lock, cvar) = <span class="kw-2">&*</span>message_resp;
+ <span class="kw">let </span><span class="kw-2">mut </span>messages = lock.lock().unwrap();
+ messages.push(in_message);
+ cvar.notify_all();
}
}
- <span class="doccomment">/// Send a raw Bitcoin message to the peer</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">send</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">payload</span>: <span class="ident">NetworkMessage</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">writer</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">writer</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
- <span class="ident"><span class="self">Self</span>::_send</span>(<span class="kw-2">&mut</span> <span class="ident">writer</span>, <span class="self">self</span>.<span class="ident">network</span>.<span class="ident">magic</span>(), <span class="ident">payload</span>)
+ <span class="doccomment">/// Send a raw Bitcoin message to the peer
+ </span><span class="kw">pub fn </span>send(<span class="kw-2">&</span><span class="self">self</span>, payload: NetworkMessage) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>writer = <span class="self">self</span>.writer.lock().unwrap();
+ <span class="self">Self</span>::_send(<span class="kw-2">&mut </span>writer, <span class="self">self</span>.network.magic(), payload)
}
- <span class="doccomment">/// Waits for a specific incoming Bitcoin message, optionally with a timeout</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">recv</span>(
+ <span class="doccomment">/// Waits for a specific incoming Bitcoin message, optionally with a timeout
+ </span><span class="kw">pub fn </span>recv(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">wait_for</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
- <span class="ident">timeout</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Duration</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">NetworkMessage</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident"><span class="self">Self</span>::_recv</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">responses</span>, <span class="ident">wait_for</span>, <span class="ident">timeout</span>))
+ wait_for: <span class="kw-2">&</span><span class="lifetime">'static </span>str,
+ timeout: <span class="prelude-ty">Option</span><Duration>,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><NetworkMessage>, CompactFiltersError> {
+ <span class="prelude-val">Ok</span>(<span class="self">Self</span>::_recv(<span class="kw-2">&</span><span class="self">self</span>.responses, wait_for, timeout))
}
}
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CompactFiltersPeer</span> {
- <span class="kw">fn</span> <span class="ident">get_cf_checkpt</span>(
+<span class="kw">pub trait </span>CompactFiltersPeer {
+ <span class="kw">fn </span>get_cf_checkpt(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- <span class="ident">stop_hash</span>: <span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CFCheckpt</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">get_cf_headers</span>(
+ filter_type: u8,
+ stop_hash: BlockHash,
+ ) -> <span class="prelude-ty">Result</span><CFCheckpt, CompactFiltersError>;
+ <span class="kw">fn </span>get_cf_headers(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- <span class="ident">start_height</span>: <span class="ident">u32</span>,
- <span class="ident">stop_hash</span>: <span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CFHeaders</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">get_cf_filters</span>(
+ filter_type: u8,
+ start_height: u32,
+ stop_hash: BlockHash,
+ ) -> <span class="prelude-ty">Result</span><CFHeaders, CompactFiltersError>;
+ <span class="kw">fn </span>get_cf_filters(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- <span class="ident">start_height</span>: <span class="ident">u32</span>,
- <span class="ident">stop_hash</span>: <span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">pop_cf_filter_resp</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CFilter</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>;
+ filter_type: u8,
+ start_height: u32,
+ stop_hash: BlockHash,
+ ) -> <span class="prelude-ty">Result</span><(), CompactFiltersError>;
+ <span class="kw">fn </span>pop_cf_filter_resp(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><CFilter, CompactFiltersError>;
}
-<span class="kw">impl</span> <span class="ident">CompactFiltersPeer</span> <span class="kw">for</span> <span class="ident">Peer</span> {
- <span class="kw">fn</span> <span class="ident">get_cf_checkpt</span>(
+<span class="kw">impl </span>CompactFiltersPeer <span class="kw">for </span>Peer {
+ <span class="kw">fn </span>get_cf_checkpt(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- <span class="ident">stop_hash</span>: <span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CFCheckpt</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetCFCheckpt</span>(<span class="ident">GetCFCheckpt</span> {
- <span class="ident">filter_type</span>,
- <span class="ident">stop_hash</span>,
+ filter_type: u8,
+ stop_hash: BlockHash,
+ ) -> <span class="prelude-ty">Result</span><CFCheckpt, CompactFiltersError> {
+ <span class="self">self</span>.send(NetworkMessage::GetCFCheckpt(GetCFCheckpt {
+ filter_type,
+ stop_hash,
}))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">response</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">recv</span>(<span class="string">"cfcheckpt"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::Timeout</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">response</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">response</span> {
- <span class="ident">NetworkMessage::CFCheckpt</span>(<span class="ident">response</span>) => <span class="ident">response</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ <span class="kw">let </span>response = <span class="self">self
+ </span>.recv(<span class="string">"cfcheckpt"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::Timeout)<span class="question-mark">?</span>;
+ <span class="kw">let </span>response = <span class="kw">match </span>response {
+ NetworkMessage::CFCheckpt(response) => response,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
};
- <span class="kw">if</span> <span class="ident">response</span>.<span class="ident">filter_type</span> <span class="op">!</span><span class="op">=</span> <span class="ident">filter_type</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ <span class="kw">if </span>response.filter_type != filter_type {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
}
- <span class="prelude-val">Ok</span>(<span class="ident">response</span>)
+ <span class="prelude-val">Ok</span>(response)
}
- <span class="kw">fn</span> <span class="ident">get_cf_headers</span>(
+ <span class="kw">fn </span>get_cf_headers(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- <span class="ident">start_height</span>: <span class="ident">u32</span>,
- <span class="ident">stop_hash</span>: <span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CFHeaders</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetCFHeaders</span>(<span class="ident">GetCFHeaders</span> {
- <span class="ident">filter_type</span>,
- <span class="ident">start_height</span>,
- <span class="ident">stop_hash</span>,
+ filter_type: u8,
+ start_height: u32,
+ stop_hash: BlockHash,
+ ) -> <span class="prelude-ty">Result</span><CFHeaders, CompactFiltersError> {
+ <span class="self">self</span>.send(NetworkMessage::GetCFHeaders(GetCFHeaders {
+ filter_type,
+ start_height,
+ stop_hash,
}))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">response</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">recv</span>(<span class="string">"cfheaders"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::Timeout</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">response</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">response</span> {
- <span class="ident">NetworkMessage::CFHeaders</span>(<span class="ident">response</span>) => <span class="ident">response</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ <span class="kw">let </span>response = <span class="self">self
+ </span>.recv(<span class="string">"cfheaders"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::Timeout)<span class="question-mark">?</span>;
+ <span class="kw">let </span>response = <span class="kw">match </span>response {
+ NetworkMessage::CFHeaders(response) => response,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
};
- <span class="kw">if</span> <span class="ident">response</span>.<span class="ident">filter_type</span> <span class="op">!</span><span class="op">=</span> <span class="ident">filter_type</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ <span class="kw">if </span>response.filter_type != filter_type {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
}
- <span class="prelude-val">Ok</span>(<span class="ident">response</span>)
+ <span class="prelude-val">Ok</span>(response)
}
- <span class="kw">fn</span> <span class="ident">pop_cf_filter_resp</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CFilter</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">response</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">recv</span>(<span class="string">"cfilter"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::Timeout</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">response</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">response</span> {
- <span class="ident">NetworkMessage::CFilter</span>(<span class="ident">response</span>) => <span class="ident">response</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ <span class="kw">fn </span>pop_cf_filter_resp(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><CFilter, CompactFiltersError> {
+ <span class="kw">let </span>response = <span class="self">self
+ </span>.recv(<span class="string">"cfilter"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::Timeout)<span class="question-mark">?</span>;
+ <span class="kw">let </span>response = <span class="kw">match </span>response {
+ NetworkMessage::CFilter(response) => response,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
};
- <span class="prelude-val">Ok</span>(<span class="ident">response</span>)
+ <span class="prelude-val">Ok</span>(response)
}
- <span class="kw">fn</span> <span class="ident">get_cf_filters</span>(
+ <span class="kw">fn </span>get_cf_filters(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- <span class="ident">start_height</span>: <span class="ident">u32</span>,
- <span class="ident">stop_hash</span>: <span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetCFilters</span>(<span class="ident">GetCFilters</span> {
- <span class="ident">filter_type</span>,
- <span class="ident">start_height</span>,
- <span class="ident">stop_hash</span>,
+ filter_type: u8,
+ start_height: u32,
+ stop_hash: BlockHash,
+ ) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="self">self</span>.send(NetworkMessage::GetCFilters(GetCFilters {
+ filter_type,
+ start_height,
+ stop_hash,
}))<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">InvPeer</span> {
- <span class="kw">fn</span> <span class="ident">get_block</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">block_hash</span>: <span class="ident">BlockHash</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Block</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">ask_for_mempool</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">broadcast_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span>;
+<span class="kw">pub trait </span>InvPeer {
+ <span class="kw">fn </span>get_block(<span class="kw-2">&</span><span class="self">self</span>, block_hash: BlockHash) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Block>, CompactFiltersError>;
+ <span class="kw">fn </span>ask_for_mempool(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><(), CompactFiltersError>;
+ <span class="kw">fn </span>broadcast_tx(<span class="kw-2">&</span><span class="self">self</span>, tx: Transaction) -> <span class="prelude-ty">Result</span><(), CompactFiltersError>;
}
-<span class="kw">impl</span> <span class="ident">InvPeer</span> <span class="kw">for</span> <span class="ident">Peer</span> {
- <span class="kw">fn</span> <span class="ident">get_block</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">block_hash</span>: <span class="ident">BlockHash</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Block</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetData</span>(<span class="macro">vec!</span>[<span class="ident">Inventory::WitnessBlock</span>(
- <span class="ident">block_hash</span>,
+<span class="kw">impl </span>InvPeer <span class="kw">for </span>Peer {
+ <span class="kw">fn </span>get_block(<span class="kw-2">&</span><span class="self">self</span>, block_hash: BlockHash) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Block>, CompactFiltersError> {
+ <span class="self">self</span>.send(NetworkMessage::GetData(<span class="macro">vec!</span>[Inventory::WitnessBlock(
+ block_hash,
)]))<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">recv</span>(<span class="string">"block"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">NetworkMessage::Block</span>(<span class="ident">response</span>)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">response</span>)),
- <span class="kw">_</span> => <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ <span class="kw">match </span><span class="self">self</span>.recv(<span class="string">"block"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">? </span>{
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(NetworkMessage::Block(response)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(response)),
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
}
}
- <span class="kw">fn</span> <span class="ident">ask_for_mempool</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">version</span>.<span class="ident">services</span>.<span class="ident">has</span>(<span class="ident">ServiceFlags::BLOOM</span>) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::PeerBloomDisabled</span>);
+ <span class="kw">fn </span>ask_for_mempool(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">if </span>!<span class="self">self</span>.version.services.has(ServiceFlags::BLOOM) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::PeerBloomDisabled);
}
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::MemPool</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">inv</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">recv</span>(<span class="string">"inv"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="number">5</span>)))<span class="question-mark">?</span> {
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Ok</span>(()), <span class="comment">// empty mempool</span>
- <span class="prelude-val">Some</span>(<span class="ident">NetworkMessage::Inv</span>(<span class="ident">inv</span>)) => <span class="ident">inv</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ <span class="self">self</span>.send(NetworkMessage::MemPool)<span class="question-mark">?</span>;
+ <span class="kw">let </span>inv = <span class="kw">match </span><span class="self">self</span>.recv(<span class="string">"inv"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(<span class="number">5</span>)))<span class="question-mark">? </span>{
+ <span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Ok</span>(()), <span class="comment">// empty mempool
+ </span><span class="prelude-val">Some</span>(NetworkMessage::Inv(inv)) => inv,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
};
- <span class="kw">let</span> <span class="ident">getdata</span> <span class="op">=</span> <span class="ident">inv</span>
- .<span class="ident">iter</span>()
- .<span class="ident">cloned</span>()
- .<span class="ident">filter</span>(
- <span class="op">|</span><span class="ident">item</span><span class="op">|</span> <span class="macro">matches!</span>(<span class="ident">item</span>, <span class="ident">Inventory::Transaction</span>(<span class="ident">txid</span>) <span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">mempool</span>.<span class="ident">has_tx</span>(<span class="ident">txid</span>)),
+ <span class="kw">let </span>getdata = inv
+ .iter()
+ .cloned()
+ .filter(
+ |item| <span class="macro">matches!</span>(item, Inventory::Transaction(txid) <span class="kw">if </span>!<span class="self">self</span>.mempool.has_tx(txid)),
)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">let</span> <span class="ident">num_txs</span> <span class="op">=</span> <span class="ident">getdata</span>.<span class="ident">len</span>();
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetData</span>(<span class="ident">getdata</span>))<span class="question-mark">?</span>;
-
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">num_txs</span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">recv</span>(<span class="string">"tx"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::Timeout</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">tx</span> {
- <span class="ident">NetworkMessage::Tx</span>(<span class="ident">tx</span>) => <span class="ident">tx</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ .collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">let </span>num_txs = getdata.len();
+ <span class="self">self</span>.send(NetworkMessage::GetData(getdata))<span class="question-mark">?</span>;
+
+ <span class="kw">for _ in </span><span class="number">0</span>..num_txs {
+ <span class="kw">let </span>tx = <span class="self">self
+ </span>.recv(<span class="string">"tx"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::Timeout)<span class="question-mark">?</span>;
+ <span class="kw">let </span>tx = <span class="kw">match </span>tx {
+ NetworkMessage::Tx(tx) => tx,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
};
- <span class="self">self</span>.<span class="ident">mempool</span>.<span class="ident">add_tx</span>(<span class="ident">tx</span>);
+ <span class="self">self</span>.mempool.add_tx(tx);
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">broadcast_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">mempool</span>.<span class="ident">add_tx</span>(<span class="ident">tx</span>.<span class="ident">clone</span>());
- <span class="self">self</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::Tx</span>(<span class="ident">tx</span>))<span class="question-mark">?</span>;
+ <span class="kw">fn </span>broadcast_tx(<span class="kw-2">&</span><span class="self">self</span>, tx: Transaction) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="self">self</span>.mempool.add_tx(tx.clone());
+ <span class="self">self</span>.send(NetworkMessage::Tx(tx))<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/store.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>store.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../../storage.js"></script><script src="../../../../crates.js"></script><script defer src="../../../../main.js"></script><script defer src="../../../../source-script.js"></script><script defer src="../../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-<span id="658">658</span>
-<span id="659">659</span>
-<span id="660">660</span>
-<span id="661">661</span>
-<span id="662">662</span>
-<span id="663">663</span>
-<span id="664">664</span>
-<span id="665">665</span>
-<span id="666">666</span>
-<span id="667">667</span>
-<span id="668">668</span>
-<span id="669">669</span>
-<span id="670">670</span>
-<span id="671">671</span>
-<span id="672">672</span>
-<span id="673">673</span>
-<span id="674">674</span>
-<span id="675">675</span>
-<span id="676">676</span>
-<span id="677">677</span>
-<span id="678">678</span>
-<span id="679">679</span>
-<span id="680">680</span>
-<span id="681">681</span>
-<span id="682">682</span>
-<span id="683">683</span>
-<span id="684">684</span>
-<span id="685">685</span>
-<span id="686">686</span>
-<span id="687">687</span>
-<span id="688">688</span>
-<span id="689">689</span>
-<span id="690">690</span>
-<span id="691">691</span>
-<span id="692">692</span>
-<span id="693">693</span>
-<span id="694">694</span>
-<span id="695">695</span>
-<span id="696">696</span>
-<span id="697">697</span>
-<span id="698">698</span>
-<span id="699">699</span>
-<span id="700">700</span>
-<span id="701">701</span>
-<span id="702">702</span>
-<span id="703">703</span>
-<span id="704">704</span>
-<span id="705">705</span>
-<span id="706">706</span>
-<span id="707">707</span>
-<span id="708">708</span>
-<span id="709">709</span>
-<span id="710">710</span>
-<span id="711">711</span>
-<span id="712">712</span>
-<span id="713">713</span>
-<span id="714">714</span>
-<span id="715">715</span>
-<span id="716">716</span>
-<span id="717">717</span>
-<span id="718">718</span>
-<span id="719">719</span>
-<span id="720">720</span>
-<span id="721">721</span>
-<span id="722">722</span>
-<span id="723">723</span>
-<span id="724">724</span>
-<span id="725">725</span>
-<span id="726">726</span>
-<span id="727">727</span>
-<span id="728">728</span>
-<span id="729">729</span>
-<span id="730">730</span>
-<span id="731">731</span>
-<span id="732">732</span>
-<span id="733">733</span>
-<span id="734">734</span>
-<span id="735">735</span>
-<span id="736">736</span>
-<span id="737">737</span>
-<span id="738">738</span>
-<span id="739">739</span>
-<span id="740">740</span>
-<span id="741">741</span>
-<span id="742">742</span>
-<span id="743">743</span>
-<span id="744">744</span>
-<span id="745">745</span>
-<span id="746">746</span>
-<span id="747">747</span>
-<span id="748">748</span>
-<span id="749">749</span>
-<span id="750">750</span>
-<span id="751">751</span>
-<span id="752">752</span>
-<span id="753">753</span>
-<span id="754">754</span>
-<span id="755">755</span>
-<span id="756">756</span>
-<span id="757">757</span>
-<span id="758">758</span>
-<span id="759">759</span>
-<span id="760">760</span>
-<span id="761">761</span>
-<span id="762">762</span>
-<span id="763">763</span>
-<span id="764">764</span>
-<span id="765">765</span>
-<span id="766">766</span>
-<span id="767">767</span>
-<span id="768">768</span>
-<span id="769">769</span>
-<span id="770">770</span>
-<span id="771">771</span>
-<span id="772">772</span>
-<span id="773">773</span>
-<span id="774">774</span>
-<span id="775">775</span>
-<span id="776">776</span>
-<span id="777">777</span>
-<span id="778">778</span>
-<span id="779">779</span>
-<span id="780">780</span>
-<span id="781">781</span>
-<span id="782">782</span>
-<span id="783">783</span>
-<span id="784">784</span>
-<span id="785">785</span>
-<span id="786">786</span>
-<span id="787">787</span>
-<span id="788">788</span>
-<span id="789">789</span>
-<span id="790">790</span>
-<span id="791">791</span>
-<span id="792">792</span>
-<span id="793">793</span>
-<span id="794">794</span>
-<span id="795">795</span>
-<span id="796">796</span>
-<span id="797">797</span>
-<span id="798">798</span>
-<span id="799">799</span>
-<span id="800">800</span>
-<span id="801">801</span>
-<span id="802">802</span>
-<span id="803">803</span>
-<span id="804">804</span>
-<span id="805">805</span>
-<span id="806">806</span>
-<span id="807">807</span>
-<span id="808">808</span>
-<span id="809">809</span>
-<span id="810">810</span>
-<span id="811">811</span>
-<span id="812">812</span>
-<span id="813">813</span>
-<span id="814">814</span>
-<span id="815">815</span>
-<span id="816">816</span>
-<span id="817">817</span>
-<span id="818">818</span>
-<span id="819">819</span>
-<span id="820">820</span>
-<span id="821">821</span>
-<span id="822">822</span>
-<span id="823">823</span>
-<span id="824">824</span>
-<span id="825">825</span>
-<span id="826">826</span>
-<span id="827">827</span>
-<span id="828">828</span>
-<span id="829">829</span>
-<span id="830">830</span>
-<span id="831">831</span>
-<span id="832">832</span>
-<span id="833">833</span>
-<span id="834">834</span>
-<span id="835">835</span>
-<span id="836">836</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="kw">use</span> <span class="ident">std::convert::TryInto</span>;
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
-<span class="kw">use</span> <span class="ident">std::io</span>::{<span class="ident">Read</span>, <span class="ident">Write</span>};
-<span class="kw">use</span> <span class="ident">std::marker::PhantomData</span>;
-<span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
-<span class="kw">use</span> <span class="ident">std::sync::RwLock</span>;
-
-<span class="kw">use</span> <span class="ident">rand::distributions::Alphanumeric</span>;
-<span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">thread_rng</span>, <span class="ident">Rng</span>};
-
-<span class="kw">use</span> <span class="ident">rocksdb</span>::{<span class="ident">Direction</span>, <span class="ident">IteratorMode</span>, <span class="ident">ReadOptions</span>, <span class="ident">WriteBatch</span>, <span class="ident">DB</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::blockdata::constants::genesis_block</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::consensus</span>::{<span class="ident">deserialize</span>, <span class="ident">encode::VarInt</span>, <span class="ident">serialize</span>, <span class="ident">Decodable</span>, <span class="ident">Encodable</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types</span>::{<span class="ident">FilterHash</span>, <span class="ident">FilterHeader</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hashes::Hash</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip158::BlockFilter</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::uint::Uint256</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::Block</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::BlockHash</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::BlockHeader</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::Network</span>;
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::CompactFiltersError</span>;
-
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">StoreType</span>: <span class="ident">Default</span> <span class="op">+</span> <span class="ident">fmt::Debug</span> {}
-
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Full</span>;
-<span class="kw">impl</span> <span class="ident">StoreType</span> <span class="kw">for</span> <span class="ident">Full</span> {}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Snapshot</span>;
-<span class="kw">impl</span> <span class="ident">StoreType</span> <span class="kw">for</span> <span class="ident">Snapshot</span> {}
-
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">StoreEntry</span> {
- <span class="ident">BlockHeader</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>),
- <span class="ident">Block</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>),
- <span class="ident">BlockHeaderIndex</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BlockHash</span><span class="op">></span>),
- <span class="ident">CFilterTable</span>((<span class="ident">u8</span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>)),
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/store.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>store.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../../source-files.js"></script><script defer src="../../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="kw">use </span>std::convert::TryInto;
+<span class="kw">use </span>std::fmt;
+<span class="kw">use </span>std::io::{Read, Write};
+<span class="kw">use </span>std::marker::PhantomData;
+<span class="kw">use </span>std::sync::Arc;
+<span class="kw">use </span>std::sync::RwLock;
+
+<span class="kw">use </span>rand::distributions::Alphanumeric;
+<span class="kw">use </span>rand::{thread_rng, Rng};
+
+<span class="kw">use </span>rocksdb::{Direction, IteratorMode, ReadOptions, WriteBatch, DB};
+
+<span class="kw">use </span>bitcoin::blockdata::constants::genesis_block;
+<span class="kw">use </span>bitcoin::consensus::{deserialize, encode::VarInt, serialize, Decodable, Encodable};
+<span class="kw">use </span>bitcoin::hash_types::{FilterHash, FilterHeader};
+<span class="kw">use </span>bitcoin::hashes::Hash;
+<span class="kw">use </span>bitcoin::util::bip158::BlockFilter;
+<span class="kw">use </span>bitcoin::util::uint::Uint256;
+<span class="kw">use </span>bitcoin::Block;
+<span class="kw">use </span>bitcoin::BlockHash;
+<span class="kw">use </span>bitcoin::BlockHeader;
+<span class="kw">use </span>bitcoin::Network;
+
+<span class="kw">use </span><span class="kw">super</span>::CompactFiltersError;
+
+<span class="kw">pub trait </span>StoreType: Default + fmt::Debug {}
+
+<span class="attr">#[derive(Default, Debug)]
+</span><span class="kw">pub struct </span>Full;
+<span class="kw">impl </span>StoreType <span class="kw">for </span>Full {}
+<span class="attr">#[derive(Default, Debug)]
+</span><span class="kw">pub struct </span>Snapshot;
+<span class="kw">impl </span>StoreType <span class="kw">for </span>Snapshot {}
+
+<span class="kw">pub enum </span>StoreEntry {
+ BlockHeader(<span class="prelude-ty">Option</span><usize>),
+ Block(<span class="prelude-ty">Option</span><usize>),
+ BlockHeaderIndex(<span class="prelude-ty">Option</span><BlockHash>),
+ CFilterTable((u8, <span class="prelude-ty">Option</span><usize>)),
}
-<span class="kw">impl</span> <span class="ident">StoreEntry</span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_prefix</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">StoreEntry::BlockHeader</span>(<span class="kw">_</span>) => <span class="string">b"z"</span>,
- <span class="ident">StoreEntry::Block</span>(<span class="kw">_</span>) => <span class="string">b"x"</span>,
- <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="kw">_</span>) => <span class="string">b"i"</span>,
- <span class="ident">StoreEntry::CFilterTable</span>(<span class="kw">_</span>) => <span class="string">b"t"</span>,
+<span class="kw">impl </span>StoreEntry {
+ <span class="kw">pub fn </span>get_prefix(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8> {
+ <span class="kw">match </span><span class="self">self </span>{
+ StoreEntry::BlockHeader(<span class="kw">_</span>) => <span class="string">b"z"</span>,
+ StoreEntry::Block(<span class="kw">_</span>) => <span class="string">b"x"</span>,
+ StoreEntry::BlockHeaderIndex(<span class="kw">_</span>) => <span class="string">b"i"</span>,
+ StoreEntry::CFilterTable(<span class="kw">_</span>) => <span class="string">b"t"</span>,
}
- .<span class="ident">to_vec</span>()
+ .to_vec()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_key</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_prefix</span>();
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)) => {
- <span class="ident">prefix</span>.<span class="ident">extend_from_slice</span>(<span class="kw-2">&</span><span class="ident">height</span>.<span class="ident">to_be_bytes</span>())
+ <span class="kw">pub fn </span>get_key(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8> {
+ <span class="kw">let </span><span class="kw-2">mut </span>prefix = <span class="self">self</span>.get_prefix();
+ <span class="kw">match </span><span class="self">self </span>{
+ StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(height)) => {
+ prefix.extend_from_slice(<span class="kw-2">&</span>height.to_be_bytes())
}
- <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)) => <span class="ident">prefix</span>.<span class="ident">extend_from_slice</span>(<span class="kw-2">&</span><span class="ident">height</span>.<span class="ident">to_be_bytes</span>()),
- <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="prelude-val">Some</span>(<span class="ident">hash</span>)) => {
- <span class="ident">prefix</span>.<span class="ident">extend_from_slice</span>(<span class="kw-2">&</span><span class="ident">hash</span>.<span class="ident">into_inner</span>())
+ StoreEntry::Block(<span class="prelude-val">Some</span>(height)) => prefix.extend_from_slice(<span class="kw-2">&</span>height.to_be_bytes()),
+ StoreEntry::BlockHeaderIndex(<span class="prelude-val">Some</span>(hash)) => {
+ prefix.extend_from_slice(<span class="kw-2">&</span>hash.into_inner())
}
- <span class="ident">StoreEntry::CFilterTable</span>((<span class="ident">filter_type</span>, <span class="ident">bundle_index</span>)) => {
- <span class="ident">prefix</span>.<span class="ident">push</span>(<span class="kw-2">*</span><span class="ident">filter_type</span>);
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">bundle_index</span>) <span class="op">=</span> <span class="ident">bundle_index</span> {
- <span class="ident">prefix</span>.<span class="ident">extend_from_slice</span>(<span class="kw-2">&</span><span class="ident">bundle_index</span>.<span class="ident">to_be_bytes</span>());
+ StoreEntry::CFilterTable((filter_type, bundle_index)) => {
+ prefix.push(<span class="kw-2">*</span>filter_type);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(bundle_index) = bundle_index {
+ prefix.extend_from_slice(<span class="kw-2">&</span>bundle_index.to_be_bytes());
}
}
- <span class="kw">_</span> => {}
+ <span class="kw">_ </span>=> {}
}
- <span class="ident">prefix</span>
+ prefix
}
}
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">SerializeDb</span>: <span class="ident">Sized</span> {
- <span class="kw">fn</span> <span class="ident">serialize</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">deserialize</span>(<span class="ident">data</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>;
+<span class="kw">pub trait </span>SerializeDb: Sized {
+ <span class="kw">fn </span>serialize(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8>;
+ <span class="kw">fn </span>deserialize(data: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError>;
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> <span class="ident">SerializeDb</span> <span class="kw">for</span> <span class="ident">T</span>
-<span class="kw">where</span>
- <span class="ident">T</span>: <span class="ident">Encodable</span> <span class="op">+</span> <span class="ident">Decodable</span>,
+<span class="kw">impl</span><T> SerializeDb <span class="kw">for </span>T
+<span class="kw">where
+ </span>T: Encodable + Decodable,
{
- <span class="kw">fn</span> <span class="ident">serialize</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="ident">serialize</span>(<span class="self">self</span>)
+ <span class="kw">fn </span>serialize(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8> {
+ serialize(<span class="self">self</span>)
}
- <span class="kw">fn</span> <span class="ident">deserialize</span>(<span class="ident">data</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="ident">deserialize</span>(<span class="ident">data</span>).<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)
+ <span class="kw">fn </span>deserialize(data: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ deserialize(data).map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)
}
}
-<span class="kw">impl</span> <span class="ident">Encodable</span> <span class="kw">for</span> <span class="ident">BundleStatus</span> {
- <span class="kw">fn</span> <span class="ident">consensus_encode</span><span class="op"><</span><span class="ident">W</span>: <span class="ident">Write</span> <span class="op">+</span> <span class="question-mark">?</span><span class="ident">Sized</span><span class="op">></span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">e</span>: <span class="kw-2">&mut</span> <span class="ident">W</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">usize</span>, <span class="ident">std::io::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">written</span> <span class="op">=</span> <span class="number">0</span>;
+<span class="kw">impl </span>Encodable <span class="kw">for </span>BundleStatus {
+ <span class="kw">fn </span>consensus_encode<W: Write + <span class="question-mark">?</span>Sized>(<span class="kw-2">&</span><span class="self">self</span>, e: <span class="kw-2">&mut </span>W) -> <span class="prelude-ty">Result</span><usize, std::io::Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>written = <span class="number">0</span>;
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">BundleStatus::Init</span> => {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="number">0x00u8</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
+ <span class="kw">match </span><span class="self">self </span>{
+ BundleStatus::Init => {
+ written += <span class="number">0x00u8</span>.consensus_encode(e)<span class="question-mark">?</span>;
}
- <span class="ident">BundleStatus::CfHeaders</span> { <span class="ident">cf_headers</span> } => {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="number">0x01u8</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">VarInt</span>(<span class="ident">cf_headers</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u64</span>).<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="kw">for</span> <span class="ident">header</span> <span class="kw">in</span> <span class="ident">cf_headers</span> {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">header</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
+ BundleStatus::CfHeaders { cf_headers } => {
+ written += <span class="number">0x01u8</span>.consensus_encode(e)<span class="question-mark">?</span>;
+ written += VarInt(cf_headers.len() <span class="kw">as </span>u64).consensus_encode(e)<span class="question-mark">?</span>;
+ <span class="kw">for </span>header <span class="kw">in </span>cf_headers {
+ written += header.consensus_encode(e)<span class="question-mark">?</span>;
}
}
- <span class="ident">BundleStatus::CFilters</span> { <span class="ident">cf_filters</span> } => {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="number">0x02u8</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">VarInt</span>(<span class="ident">cf_filters</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u64</span>).<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="kw">for</span> <span class="ident">filter</span> <span class="kw">in</span> <span class="ident">cf_filters</span> {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">filter</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
+ BundleStatus::CFilters { cf_filters } => {
+ written += <span class="number">0x02u8</span>.consensus_encode(e)<span class="question-mark">?</span>;
+ written += VarInt(cf_filters.len() <span class="kw">as </span>u64).consensus_encode(e)<span class="question-mark">?</span>;
+ <span class="kw">for </span>filter <span class="kw">in </span>cf_filters {
+ written += filter.consensus_encode(e)<span class="question-mark">?</span>;
}
}
- <span class="ident">BundleStatus::Processed</span> { <span class="ident">cf_filters</span> } => {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="number">0x03u8</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">VarInt</span>(<span class="ident">cf_filters</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u64</span>).<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="kw">for</span> <span class="ident">filter</span> <span class="kw">in</span> <span class="ident">cf_filters</span> {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">filter</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
+ BundleStatus::Processed { cf_filters } => {
+ written += <span class="number">0x03u8</span>.consensus_encode(e)<span class="question-mark">?</span>;
+ written += VarInt(cf_filters.len() <span class="kw">as </span>u64).consensus_encode(e)<span class="question-mark">?</span>;
+ <span class="kw">for </span>filter <span class="kw">in </span>cf_filters {
+ written += filter.consensus_encode(e)<span class="question-mark">?</span>;
}
}
- <span class="ident">BundleStatus::Pruned</span> => {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="number">0x04u8</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
+ BundleStatus::Pruned => {
+ written += <span class="number">0x04u8</span>.consensus_encode(e)<span class="question-mark">?</span>;
}
- <span class="ident">BundleStatus::Tip</span> { <span class="ident">cf_filters</span> } => {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="number">0x05u8</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">VarInt</span>(<span class="ident">cf_filters</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u64</span>).<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
- <span class="kw">for</span> <span class="ident">filter</span> <span class="kw">in</span> <span class="ident">cf_filters</span> {
- <span class="ident">written</span> <span class="op">+</span><span class="op">=</span> <span class="ident">filter</span>.<span class="ident">consensus_encode</span>(<span class="ident">e</span>)<span class="question-mark">?</span>;
+ BundleStatus::Tip { cf_filters } => {
+ written += <span class="number">0x05u8</span>.consensus_encode(e)<span class="question-mark">?</span>;
+ written += VarInt(cf_filters.len() <span class="kw">as </span>u64).consensus_encode(e)<span class="question-mark">?</span>;
+ <span class="kw">for </span>filter <span class="kw">in </span>cf_filters {
+ written += filter.consensus_encode(e)<span class="question-mark">?</span>;
}
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">written</span>)
+ <span class="prelude-val">Ok</span>(written)
}
}
-<span class="kw">impl</span> <span class="ident">Decodable</span> <span class="kw">for</span> <span class="ident">BundleStatus</span> {
- <span class="kw">fn</span> <span class="ident">consensus_decode</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Read</span> <span class="op">+</span> <span class="question-mark">?</span><span class="ident">Sized</span><span class="op">></span>(
- <span class="ident">d</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">bitcoin::consensus::encode::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">byte_type</span> <span class="op">=</span> <span class="ident">u8::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">byte_type</span> {
- <span class="number">0x00</span> => <span class="prelude-val">Ok</span>(<span class="ident">BundleStatus::Init</span>),
- <span class="number">0x01</span> => {
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">VarInt::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">num</span>.<span class="number">0</span> <span class="kw">as</span> <span class="ident">usize</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cf_headers</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">num</span>);
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">num</span> {
- <span class="ident">cf_headers</span>.<span class="ident">push</span>(<span class="ident">FilterHeader::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>);
+<span class="kw">impl </span>Decodable <span class="kw">for </span>BundleStatus {
+ <span class="kw">fn </span>consensus_decode<D: Read + <span class="question-mark">?</span>Sized>(
+ d: <span class="kw-2">&mut </span>D,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, bitcoin::consensus::encode::Error> {
+ <span class="kw">let </span>byte_type = u8::consensus_decode(d)<span class="question-mark">?</span>;
+ <span class="kw">match </span>byte_type {
+ <span class="number">0x00 </span>=> <span class="prelude-val">Ok</span>(BundleStatus::Init),
+ <span class="number">0x01 </span>=> {
+ <span class="kw">let </span>num = VarInt::consensus_decode(d)<span class="question-mark">?</span>;
+ <span class="kw">let </span>num = num.<span class="number">0 </span><span class="kw">as </span>usize;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>cf_headers = Vec::with_capacity(num);
+ <span class="kw">for _ in </span><span class="number">0</span>..num {
+ cf_headers.push(FilterHeader::consensus_decode(d)<span class="question-mark">?</span>);
}
- <span class="prelude-val">Ok</span>(<span class="ident">BundleStatus::CfHeaders</span> { <span class="ident">cf_headers</span> })
+ <span class="prelude-val">Ok</span>(BundleStatus::CfHeaders { cf_headers })
}
- <span class="number">0x02</span> => {
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">VarInt::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">num</span>.<span class="number">0</span> <span class="kw">as</span> <span class="ident">usize</span>;
+ <span class="number">0x02 </span>=> {
+ <span class="kw">let </span>num = VarInt::consensus_decode(d)<span class="question-mark">?</span>;
+ <span class="kw">let </span>num = num.<span class="number">0 </span><span class="kw">as </span>usize;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cf_filters</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">num</span>);
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">num</span> {
- <span class="ident">cf_filters</span>.<span class="ident">push</span>(<span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>cf_filters = Vec::with_capacity(num);
+ <span class="kw">for _ in </span><span class="number">0</span>..num {
+ cf_filters.push(Vec::<u8>::consensus_decode(d)<span class="question-mark">?</span>);
}
- <span class="prelude-val">Ok</span>(<span class="ident">BundleStatus::CFilters</span> { <span class="ident">cf_filters</span> })
+ <span class="prelude-val">Ok</span>(BundleStatus::CFilters { cf_filters })
}
- <span class="number">0x03</span> => {
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">VarInt::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">num</span>.<span class="number">0</span> <span class="kw">as</span> <span class="ident">usize</span>;
+ <span class="number">0x03 </span>=> {
+ <span class="kw">let </span>num = VarInt::consensus_decode(d)<span class="question-mark">?</span>;
+ <span class="kw">let </span>num = num.<span class="number">0 </span><span class="kw">as </span>usize;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cf_filters</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">num</span>);
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">num</span> {
- <span class="ident">cf_filters</span>.<span class="ident">push</span>(<span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>cf_filters = Vec::with_capacity(num);
+ <span class="kw">for _ in </span><span class="number">0</span>..num {
+ cf_filters.push(Vec::<u8>::consensus_decode(d)<span class="question-mark">?</span>);
}
- <span class="prelude-val">Ok</span>(<span class="ident">BundleStatus::Processed</span> { <span class="ident">cf_filters</span> })
+ <span class="prelude-val">Ok</span>(BundleStatus::Processed { cf_filters })
}
- <span class="number">0x04</span> => <span class="prelude-val">Ok</span>(<span class="ident">BundleStatus::Pruned</span>),
- <span class="number">0x05</span> => {
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">VarInt::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">num</span> <span class="op">=</span> <span class="ident">num</span>.<span class="number">0</span> <span class="kw">as</span> <span class="ident">usize</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cf_filters</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">num</span>);
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">num</span> {
- <span class="ident">cf_filters</span>.<span class="ident">push</span>(<span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::consensus_decode</span>(<span class="ident">d</span>)<span class="question-mark">?</span>);
+ <span class="number">0x04 </span>=> <span class="prelude-val">Ok</span>(BundleStatus::Pruned),
+ <span class="number">0x05 </span>=> {
+ <span class="kw">let </span>num = VarInt::consensus_decode(d)<span class="question-mark">?</span>;
+ <span class="kw">let </span>num = num.<span class="number">0 </span><span class="kw">as </span>usize;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>cf_filters = Vec::with_capacity(num);
+ <span class="kw">for _ in </span><span class="number">0</span>..num {
+ cf_filters.push(Vec::<u8>::consensus_decode(d)<span class="question-mark">?</span>);
}
- <span class="prelude-val">Ok</span>(<span class="ident">BundleStatus::Tip</span> { <span class="ident">cf_filters</span> })
+ <span class="prelude-val">Ok</span>(BundleStatus::Tip { cf_filters })
}
- <span class="kw">_</span> => <span class="prelude-val">Err</span>(<span class="ident">bitcoin::consensus::encode::Error::ParseFailed</span>(
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(bitcoin::consensus::encode::Error::ParseFailed(
<span class="string">"Invalid byte type"</span>,
)),
}
}
}
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ChainStore</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">StoreType</span><span class="op">></span> {
- <span class="ident">store</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">DB</span><span class="op">></span><span class="op">></span>,
- <span class="ident">cf_name</span>: <span class="ident">String</span>,
- <span class="ident">min_height</span>: <span class="ident">usize</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">T</span><span class="op">></span>,
+<span class="kw">pub struct </span>ChainStore<T: StoreType> {
+ store: Arc<RwLock<DB>>,
+ cf_name: String,
+ min_height: usize,
+ network: Network,
+ phantom: PhantomData<T>,
}
-<span class="kw">impl</span> <span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Full</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">store</span>: <span class="ident">DB</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">genesis</span> <span class="op">=</span> <span class="ident">genesis_block</span>(<span class="ident">network</span>);
+<span class="kw">impl </span>ChainStore<Full> {
+ <span class="kw">pub fn </span>new(store: DB, network: Network) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">let </span>genesis = genesis_block(network);
- <span class="kw">let</span> <span class="ident">cf_name</span> <span class="op">=</span> <span class="string">"default"</span>.<span class="ident">to_string</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>cf_name = <span class="string">"default"</span>.to_string();
+ <span class="kw">let </span>cf_handle = store.cf_handle(<span class="kw-2">&</span>cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">genesis_key</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>)).<span class="ident">get_key</span>();
+ <span class="kw">let </span>genesis_key = StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(<span class="number">0</span>)).get_key();
- <span class="kw">if</span> <span class="ident">store</span>.<span class="ident">get_pinned_cf</span>(<span class="ident">cf_handle</span>, <span class="kw-2">&</span><span class="ident">genesis_key</span>)<span class="question-mark">?</span>.<span class="ident">is_none</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">WriteBatch::default</span>();
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(
- <span class="ident">cf_handle</span>,
- <span class="ident">genesis_key</span>,
- (<span class="ident">genesis</span>.<span class="ident">header</span>, <span class="ident">genesis</span>.<span class="ident">header</span>.<span class="ident">work</span>()).<span class="ident">serialize</span>(),
+ <span class="kw">if </span>store.get_pinned_cf(cf_handle, <span class="kw-2">&</span>genesis_key)<span class="question-mark">?</span>.is_none() {
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = WriteBatch::default();
+ batch.put_cf(
+ cf_handle,
+ genesis_key,
+ (genesis.header, genesis.header.work()).serialize(),
);
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(
- <span class="ident">cf_handle</span>,
- <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="prelude-val">Some</span>(<span class="ident">genesis</span>.<span class="ident">block_hash</span>())).<span class="ident">get_key</span>(),
- <span class="kw-2">&</span><span class="number">0usize</span>.<span class="ident">to_be_bytes</span>(),
+ batch.put_cf(
+ cf_handle,
+ StoreEntry::BlockHeaderIndex(<span class="prelude-val">Some</span>(genesis.block_hash())).get_key(),
+ <span class="kw-2">&</span><span class="number">0usize</span>.to_be_bytes(),
);
- <span class="ident">store</span>.<span class="ident">write</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>;
+ store.write(batch)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">ChainStore</span> {
- <span class="ident">store</span>: <span class="ident">Arc::new</span>(<span class="ident">RwLock::new</span>(<span class="ident">store</span>)),
- <span class="ident">cf_name</span>,
- <span class="ident">min_height</span>: <span class="number">0</span>,
- <span class="ident">network</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span>,
+ <span class="prelude-val">Ok</span>(ChainStore {
+ store: Arc::new(RwLock::new(store)),
+ cf_name,
+ min_height: <span class="number">0</span>,
+ network,
+ phantom: PhantomData,
})
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_locators</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span>(<span class="ident">BlockHash</span>, <span class="ident">usize</span>)<span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">step</span> <span class="op">=</span> <span class="number">1</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">index</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">answer</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
+ <span class="kw">pub fn </span>get_locators(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<(BlockHash, usize)>, CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>step = <span class="number">1</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>index = <span class="self">self</span>.get_height()<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>answer = Vec::new();
- <span class="kw">let</span> <span class="ident">store_read</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">store_read</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>store_read = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = store_read.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
- <span class="kw">loop</span> {
- <span class="kw">if</span> <span class="ident">answer</span>.<span class="ident">len</span>() <span class="op">></span> <span class="number">10</span> {
- <span class="ident">step</span> <span class="kw-2">*</span><span class="op">=</span> <span class="number">2</span>;
+ <span class="kw">loop </span>{
+ <span class="kw">if </span>answer.len() > <span class="number">10 </span>{
+ step <span class="kw-2">*</span>= <span class="number">2</span>;
}
- <span class="kw">let</span> (<span class="ident">header</span>, <span class="kw">_</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(
- <span class="kw-2">&</span><span class="ident">store_read</span>
- .<span class="ident">get_pinned_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">index</span>)).<span class="ident">get_key</span>())<span class="question-mark">?</span>
- .<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>(header, <span class="kw">_</span>): (BlockHeader, Uint256) = SerializeDb::deserialize(
+ <span class="kw-2">&</span>store_read
+ .get_pinned_cf(cf_handle, StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(index)).get_key())<span class="question-mark">?
+ </span>.unwrap(),
)<span class="question-mark">?</span>;
- <span class="ident">answer</span>.<span class="ident">push</span>((<span class="ident">header</span>.<span class="ident">block_hash</span>(), <span class="ident">index</span>));
+ answer.push((header.block_hash(), index));
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">new_index</span>) <span class="op">=</span> <span class="ident">index</span>.<span class="ident">checked_sub</span>(<span class="ident">step</span>) {
- <span class="ident">index</span> <span class="op">=</span> <span class="ident">new_index</span>;
- } <span class="kw">else</span> {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(new_index) = index.checked_sub(step) {
+ index = new_index;
+ } <span class="kw">else </span>{
<span class="kw">break</span>;
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">answer</span>)
+ <span class="prelude-val">Ok</span>(answer)
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">start_snapshot</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">from</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Snapshot</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">new_cf_name</span>: <span class="ident">String</span> <span class="op">=</span> <span class="ident">thread_rng</span>()
- .<span class="ident">sample_iter</span>(<span class="kw-2">&</span><span class="ident">Alphanumeric</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">byte</span><span class="op">|</span> <span class="ident">byte</span> <span class="kw">as</span> <span class="ident">char</span>)
- .<span class="ident">take</span>(<span class="number">16</span>)
- .<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="ident">new_cf_name</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">"_headers:{}"</span>, <span class="ident">new_cf_name</span>);
+ <span class="kw">pub fn </span>start_snapshot(<span class="kw-2">&</span><span class="self">self</span>, from: usize) -> <span class="prelude-ty">Result</span><ChainStore<Snapshot>, CompactFiltersError> {
+ <span class="kw">let </span>new_cf_name: String = thread_rng()
+ .sample_iter(<span class="kw-2">&</span>Alphanumeric)
+ .map(|byte| byte <span class="kw">as </span>char)
+ .take(<span class="number">16</span>)
+ .collect();
+ <span class="kw">let </span>new_cf_name = <span class="macro">format!</span>(<span class="string">"_headers:{}"</span>, new_cf_name);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">write_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>write_store = <span class="self">self</span>.store.write().unwrap();
- <span class="ident">write_store</span>.<span class="ident">create_cf</span>(<span class="kw-2">&</span><span class="ident">new_cf_name</span>, <span class="kw-2">&</span><span class="ident">Default::default</span>())<span class="question-mark">?</span>;
+ write_store.create_cf(<span class="kw-2">&</span>new_cf_name, <span class="kw-2">&</span>Default::default())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">write_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">new_cf_handle</span> <span class="op">=</span> <span class="ident">write_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="ident">new_cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>cf_handle = write_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
+ <span class="kw">let </span>new_cf_handle = write_store.cf_handle(<span class="kw-2">&</span>new_cf_name).unwrap();
- <span class="kw">let</span> (<span class="ident">header</span>, <span class="ident">work</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(
- <span class="kw-2">&</span><span class="ident">write_store</span>
- .<span class="ident">get_pinned_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">from</span>)).<span class="ident">get_key</span>())<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>,
+ <span class="kw">let </span>(header, work): (BlockHeader, Uint256) = SerializeDb::deserialize(
+ <span class="kw-2">&</span>write_store
+ .get_pinned_cf(cf_handle, StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(from)).get_key())<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::DataCorruption)<span class="question-mark">?</span>,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">WriteBatch::default</span>();
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(
- <span class="ident">new_cf_handle</span>,
- <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="prelude-val">Some</span>(<span class="ident">header</span>.<span class="ident">block_hash</span>())).<span class="ident">get_key</span>(),
- <span class="kw-2">&</span><span class="ident">from</span>.<span class="ident">to_be_bytes</span>(),
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = WriteBatch::default();
+ batch.put_cf(
+ new_cf_handle,
+ StoreEntry::BlockHeaderIndex(<span class="prelude-val">Some</span>(header.block_hash())).get_key(),
+ <span class="kw-2">&</span>from.to_be_bytes(),
);
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(
- <span class="ident">new_cf_handle</span>,
- <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">from</span>)).<span class="ident">get_key</span>(),
- (<span class="ident">header</span>, <span class="ident">work</span>).<span class="ident">serialize</span>(),
+ batch.put_cf(
+ new_cf_handle,
+ StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(from)).get_key(),
+ (header, work).serialize(),
);
- <span class="ident">write_store</span>.<span class="ident">write</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">store</span> <span class="op">=</span> <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">store</span>);
- <span class="prelude-val">Ok</span>(<span class="ident">ChainStore</span> {
- <span class="ident">store</span>,
- <span class="ident">cf_name</span>: <span class="ident">new_cf_name</span>,
- <span class="ident">min_height</span>: <span class="ident">from</span>,
- <span class="ident">network</span>: <span class="self">self</span>.<span class="ident">network</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span>,
+ write_store.write(batch)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>store = Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.store);
+ <span class="prelude-val">Ok</span>(ChainStore {
+ store,
+ cf_name: new_cf_name,
+ min_height: from,
+ network: <span class="self">self</span>.network,
+ phantom: PhantomData,
})
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">recover_snapshot</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">cf_name</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">write_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">snapshot_cf_handle</span> <span class="op">=</span> <span class="ident">write_store</span>.<span class="ident">cf_handle</span>(<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>recover_snapshot(<span class="kw-2">&</span><span class="self">self</span>, cf_name: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>write_store = <span class="self">self</span>.store.write().unwrap();
+ <span class="kw">let </span>snapshot_cf_handle = write_store.cf_handle(cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">None</span>).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">write_store</span>.<span class="ident">prefix_iterator_cf</span>(<span class="ident">snapshot_cf_handle</span>, <span class="ident">prefix</span>);
+ <span class="kw">let </span>prefix = StoreEntry::BlockHeader(<span class="prelude-val">None</span>).get_key();
+ <span class="kw">let </span><span class="kw-2">mut </span>iterator = write_store.prefix_iterator_cf(snapshot_cf_handle, prefix);
- <span class="kw">let</span> <span class="ident">min_height</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">iterator</span>
- .<span class="ident">next</span>()
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">k</span>[<span class="number">1</span>..].<span class="ident">try_into</span>().<span class="ident">ok</span>())
- .<span class="ident">map</span>(<span class="ident">usize::from_be_bytes</span>)
+ <span class="kw">let </span>min_height = <span class="kw">match </span>iterator
+ .next()
+ .and_then(|(k, <span class="kw">_</span>)| k[<span class="number">1</span>..].try_into().ok())
+ .map(usize::from_be_bytes)
{
- <span class="prelude-val">None</span> => {
- <span class="ident">std::mem::drop</span>(<span class="ident">iterator</span>);
- <span class="ident">write_store</span>.<span class="ident">drop_cf</span>(<span class="ident">cf_name</span>).<span class="ident">ok</span>();
+ <span class="prelude-val">None </span>=> {
+ std::mem::drop(iterator);
+ write_store.drop_cf(cf_name).ok();
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="prelude-val">Some</span>(<span class="ident">x</span>) => <span class="ident">x</span>,
+ <span class="prelude-val">Some</span>(x) => x,
};
- <span class="ident">std::mem::drop</span>(<span class="ident">iterator</span>);
- <span class="ident">std::mem::drop</span>(<span class="ident">write_store</span>);
-
- <span class="kw">let</span> <span class="ident">snapshot</span> <span class="op">=</span> <span class="ident">ChainStore</span> {
- <span class="ident">store</span>: <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">store</span>),
- <span class="ident">cf_name</span>: <span class="ident">cf_name</span>.<span class="ident">into</span>(),
- <span class="ident">min_height</span>,
- <span class="ident">network</span>: <span class="self">self</span>.<span class="ident">network</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span>,
+ std::mem::drop(iterator);
+ std::mem::drop(write_store);
+
+ <span class="kw">let </span>snapshot = ChainStore {
+ store: Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.store),
+ cf_name: cf_name.into(),
+ min_height,
+ network: <span class="self">self</span>.network,
+ phantom: PhantomData,
};
- <span class="kw">if</span> <span class="ident">snapshot</span>.<span class="ident">work</span>()<span class="question-mark">?</span> <span class="op">></span> <span class="self">self</span>.<span class="ident">work</span>()<span class="question-mark">?</span> {
- <span class="self">self</span>.<span class="ident">apply_snapshot</span>(<span class="ident">snapshot</span>)<span class="question-mark">?</span>;
+ <span class="kw">if </span>snapshot.work()<span class="question-mark">? </span>> <span class="self">self</span>.work()<span class="question-mark">? </span>{
+ <span class="self">self</span>.apply_snapshot(snapshot)<span class="question-mark">?</span>;
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">apply_snapshot</span>(
+ <span class="kw">pub fn </span>apply_snapshot(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">snaphost</span>: <span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Snapshot</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">WriteBatch::default</span>();
+ snaphost: ChainStore<Snapshot>,
+ ) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = WriteBatch::default();
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">snapshot_cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="ident">snaphost</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
+ <span class="kw">let </span>snapshot_cf_handle = read_store.cf_handle(<span class="kw-2">&</span>snaphost.cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">from_key</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">snaphost</span>.<span class="ident">min_height</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">to_key</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">usize::MAX</span>)).<span class="ident">get_key</span>();
+ <span class="kw">let </span>from_key = StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(snaphost.min_height)).get_key();
+ <span class="kw">let </span>to_key = StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(usize::MAX)).get_key();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">opts</span> <span class="op">=</span> <span class="ident">ReadOptions::default</span>();
- <span class="ident">opts</span>.<span class="ident">set_iterate_upper_bound</span>(<span class="ident">to_key</span>.<span class="ident">clone</span>());
+ <span class="kw">let </span><span class="kw-2">mut </span>opts = ReadOptions::default();
+ opts.set_iterate_upper_bound(to_key.clone());
<span class="macro">log::debug!</span>(<span class="string">"Removing items"</span>);
- <span class="ident">batch</span>.<span class="ident">delete_range_cf</span>(<span class="ident">cf_handle</span>, <span class="kw-2">&</span><span class="ident">from_key</span>, <span class="kw-2">&</span><span class="ident">to_key</span>);
- <span class="kw">for</span> (<span class="kw">_</span>, <span class="ident">v</span>) <span class="kw">in</span> <span class="ident">read_store</span>.<span class="ident">iterator_cf_opt</span>(
- <span class="ident">cf_handle</span>,
- <span class="ident">opts</span>,
- <span class="ident">IteratorMode::From</span>(<span class="kw-2">&</span><span class="ident">from_key</span>, <span class="ident">Direction::Forward</span>),
+ batch.delete_range_cf(cf_handle, <span class="kw-2">&</span>from_key, <span class="kw-2">&</span>to_key);
+ <span class="kw">for </span>(<span class="kw">_</span>, v) <span class="kw">in </span>read_store.iterator_cf_opt(
+ cf_handle,
+ opts,
+ IteratorMode::From(<span class="kw-2">&</span>from_key, Direction::Forward),
) {
- <span class="kw">let</span> (<span class="ident">header</span>, <span class="kw">_</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>(header, <span class="kw">_</span>): (BlockHeader, Uint256) = SerializeDb::deserialize(<span class="kw-2">&</span>v)<span class="question-mark">?</span>;
- <span class="ident">batch</span>.<span class="ident">delete_cf</span>(
- <span class="ident">cf_handle</span>,
- <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="prelude-val">Some</span>(<span class="ident">header</span>.<span class="ident">block_hash</span>())).<span class="ident">get_key</span>(),
+ batch.delete_cf(
+ cf_handle,
+ StoreEntry::BlockHeaderIndex(<span class="prelude-val">Some</span>(header.block_hash())).get_key(),
);
}
- <span class="comment">// Delete full blocks overridden by snapshot</span>
- <span class="kw">let</span> <span class="ident">from_key</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="ident">snaphost</span>.<span class="ident">min_height</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">to_key</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="ident">usize::MAX</span>)).<span class="ident">get_key</span>();
- <span class="ident">batch</span>.<span class="ident">delete_range</span>(<span class="kw-2">&</span><span class="ident">from_key</span>, <span class="kw-2">&</span><span class="ident">to_key</span>);
+ <span class="comment">// Delete full blocks overridden by snapshot
+ </span><span class="kw">let </span>from_key = StoreEntry::Block(<span class="prelude-val">Some</span>(snaphost.min_height)).get_key();
+ <span class="kw">let </span>to_key = StoreEntry::Block(<span class="prelude-val">Some</span>(usize::MAX)).get_key();
+ batch.delete_range(<span class="kw-2">&</span>from_key, <span class="kw-2">&</span>to_key);
<span class="macro">log::debug!</span>(<span class="string">"Copying over new items"</span>);
- <span class="kw">for</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="kw">in</span> <span class="ident">read_store</span>.<span class="ident">iterator_cf</span>(<span class="ident">snapshot_cf_handle</span>, <span class="ident">IteratorMode::Start</span>) {
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">k</span>, <span class="ident">v</span>);
+ <span class="kw">for </span>(k, v) <span class="kw">in </span>read_store.iterator_cf(snapshot_cf_handle, IteratorMode::Start) {
+ batch.put_cf(cf_handle, k, v);
}
- <span class="ident">read_store</span>.<span class="ident">write</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>;
- <span class="ident">std::mem::drop</span>(<span class="ident">read_store</span>);
+ read_store.write(batch)<span class="question-mark">?</span>;
+ std::mem::drop(read_store);
- <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>().<span class="ident">drop_cf</span>(<span class="kw-2">&</span><span class="ident">snaphost</span>.<span class="ident">cf_name</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.store.write().unwrap().drop_cf(<span class="kw-2">&</span>snaphost.cf_name)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_height_for</span>(
+ <span class="kw">pub fn </span>get_height_for(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">block_hash</span>: <span class="kw-2">&</span><span class="ident">BlockHash</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">block_hash</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">get_pinned_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">key</span>)<span class="question-mark">?</span>;
- <span class="ident">data</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> {
- <span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>(<span class="ident">usize::from_be_bytes</span>(
- <span class="ident">data</span>.<span class="ident">as_ref</span>()
- .<span class="ident">try_into</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>,
+ block_hash: <span class="kw-2">&</span>BlockHash,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><usize>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
+
+ <span class="kw">let </span>key = StoreEntry::BlockHeaderIndex(<span class="prelude-val">Some</span>(<span class="kw-2">*</span>block_hash)).get_key();
+ <span class="kw">let </span>data = read_store.get_pinned_cf(cf_handle, key)<span class="question-mark">?</span>;
+ data.map(|data| {
+ <span class="prelude-val">Ok</span>::<<span class="kw">_</span>, CompactFiltersError>(usize::from_be_bytes(
+ data.as_ref()
+ .try_into()
+ .map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)<span class="question-mark">?</span>,
))
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BlockHash</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: usize) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><BlockHash>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">get_pinned_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">key</span>)<span class="question-mark">?</span>;
- <span class="ident">data</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> {
- <span class="kw">let</span> (<span class="ident">header</span>, <span class="kw">_</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span>
- <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>(<span class="ident">header</span>.<span class="ident">block_hash</span>())
+ <span class="kw">let </span>key = StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(height)).get_key();
+ <span class="kw">let </span>data = read_store.get_pinned_cf(cf_handle, key)<span class="question-mark">?</span>;
+ data.map(|data| {
+ <span class="kw">let </span>(header, <span class="kw">_</span>): (BlockHeader, Uint256) =
+ deserialize(<span class="kw-2">&</span>data).map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>::<<span class="kw">_</span>, CompactFiltersError>(header.block_hash())
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">save_full_block</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">block</span>: <span class="kw-2">&</span><span class="ident">Block</span>, <span class="ident">height</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)).<span class="ident">get_key</span>();
- <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>().<span class="ident">put</span>(<span class="ident">key</span>, <span class="ident">block</span>.<span class="ident">serialize</span>())<span class="question-mark">?</span>;
+ <span class="kw">pub fn </span>save_full_block(<span class="kw-2">&</span><span class="self">self</span>, block: <span class="kw-2">&</span>Block, height: usize) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span>key = StoreEntry::Block(<span class="prelude-val">Some</span>(height)).get_key();
+ <span class="self">self</span>.store.read().unwrap().put(key, block.serialize())<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_full_block</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Block</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>get_full_block(<span class="kw-2">&</span><span class="self">self</span>, height: usize) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Block>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">opt_block</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">get_pinned</span>(<span class="ident">key</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>key = StoreEntry::Block(<span class="prelude-val">Some</span>(height)).get_key();
+ <span class="kw">let </span>opt_block = read_store.get_pinned(key)<span class="question-mark">?</span>;
- <span class="ident">opt_block</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">data</span>))
- .<span class="ident">transpose</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)
+ opt_block
+ .map(|data| deserialize(<span class="kw-2">&</span>data))
+ .transpose()
+ .map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">delete_blocks_until</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">from_key</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">to_key</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)).<span class="ident">get_key</span>();
+ <span class="kw">pub fn </span>delete_blocks_until(<span class="kw-2">&</span><span class="self">self</span>, height: usize) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span>from_key = StoreEntry::Block(<span class="prelude-val">Some</span>(<span class="number">0</span>)).get_key();
+ <span class="kw">let </span>to_key = StoreEntry::Block(<span class="prelude-val">Some</span>(height)).get_key();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">WriteBatch::default</span>();
- <span class="ident">batch</span>.<span class="ident">delete_range</span>(<span class="kw-2">&</span><span class="ident">from_key</span>, <span class="kw-2">&</span><span class="ident">to_key</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = WriteBatch::default();
+ batch.delete_range(<span class="kw-2">&</span>from_key, <span class="kw-2">&</span>to_key);
- <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>().<span class="ident">write</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.store.read().unwrap().write(batch)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">iter_full_blocks</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span>(<span class="ident">usize</span>, <span class="ident">Block</span>)<span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::Block</span>(<span class="prelude-val">None</span>).<span class="ident">get_key</span>();
-
- <span class="kw">let</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">prefix_iterator</span>(<span class="kw-2">&</span><span class="ident">prefix</span>);
- <span class="comment">// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't</span>
- <span class="comment">// have the right prefix</span>
- <span class="ident">iterator</span>
- .<span class="ident">filter</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">k</span>.<span class="ident">starts_with</span>(<span class="kw-2">&</span><span class="ident">prefix</span>))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="ident">v</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">height</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="ident">usize::from_be_bytes</span>(
- <span class="ident">k</span>[<span class="number">1</span>..]
- .<span class="ident">try_into</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>,
+ <span class="kw">pub fn </span>iter_full_blocks(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<(usize, Block)>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+
+ <span class="kw">let </span>prefix = StoreEntry::Block(<span class="prelude-val">None</span>).get_key();
+
+ <span class="kw">let </span>iterator = read_store.prefix_iterator(<span class="kw-2">&</span>prefix);
+ <span class="comment">// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't
+ // have the right prefix
+ </span>iterator
+ .filter(|(k, <span class="kw">_</span>)| k.starts_with(<span class="kw-2">&</span>prefix))
+ .map(|(k, v)| {
+ <span class="kw">let </span>height: usize = usize::from_be_bytes(
+ k[<span class="number">1</span>..]
+ .try_into()
+ .map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)<span class="question-mark">?</span>,
);
- <span class="kw">let</span> <span class="ident">block</span> <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>block = SerializeDb::deserialize(<span class="kw-2">&</span>v)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">height</span>, <span class="ident">block</span>))
+ <span class="prelude-val">Ok</span>((height, block))
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">StoreType</span><span class="op">></span> <span class="ident">ChainStore</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">work</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Uint256</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+<span class="kw">impl</span><T: StoreType> ChainStore<T> {
+ <span class="kw">pub fn </span>work(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Uint256, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">None</span>).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">prefix_iterator_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">prefix</span>);
+ <span class="kw">let </span>prefix = StoreEntry::BlockHeader(<span class="prelude-val">None</span>).get_key();
+ <span class="kw">let </span>iterator = read_store.prefix_iterator_cf(cf_handle, prefix);
- <span class="prelude-val">Ok</span>(<span class="ident">iterator</span>
- .<span class="ident">last</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">v</span>)<span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">work</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(iterator
+ .last()
+ .map(|(<span class="kw">_</span>, v)| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, CompactFiltersError> {
+ <span class="kw">let </span>(<span class="kw">_</span>, work): (BlockHeader, Uint256) = SerializeDb::deserialize(<span class="kw-2">&</span>v)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">work</span>)
+ <span class="prelude-val">Ok</span>(work)
})
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>
- .<span class="ident">unwrap_or_default</span>())
+ .transpose()<span class="question-mark">?
+ </span>.unwrap_or_default())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">usize</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><usize, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">None</span>).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">prefix_iterator_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">prefix</span>);
+ <span class="kw">let </span>prefix = StoreEntry::BlockHeader(<span class="prelude-val">None</span>).get_key();
+ <span class="kw">let </span>iterator = read_store.prefix_iterator_cf(cf_handle, prefix);
- <span class="prelude-val">Ok</span>(<span class="ident">iterator</span>
- .<span class="ident">last</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="kw">_</span>)<span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">height</span> <span class="op">=</span> <span class="ident">usize::from_be_bytes</span>(
- <span class="ident">k</span>[<span class="number">1</span>..]
- .<span class="ident">try_into</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>,
+ <span class="prelude-val">Ok</span>(iterator
+ .last()
+ .map(|(k, <span class="kw">_</span>)| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, CompactFiltersError> {
+ <span class="kw">let </span>height = usize::from_be_bytes(
+ k[<span class="number">1</span>..]
+ .try_into()
+ .map_err(|<span class="kw">_</span>| CompactFiltersError::DataCorruption)<span class="question-mark">?</span>,
);
- <span class="prelude-val">Ok</span>(<span class="ident">height</span>)
+ <span class="prelude-val">Ok</span>(height)
})
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>
- .<span class="ident">unwrap_or_default</span>())
+ .transpose()<span class="question-mark">?
+ </span>.unwrap_or_default())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_tip_hash</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BlockHash</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>get_tip_hash(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><BlockHash>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">None</span>).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">prefix_iterator_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">prefix</span>);
+ <span class="kw">let </span>prefix = StoreEntry::BlockHeader(<span class="prelude-val">None</span>).get_key();
+ <span class="kw">let </span>iterator = read_store.prefix_iterator_cf(cf_handle, prefix);
- <span class="ident">iterator</span>
- .<span class="ident">last</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">v</span>)<span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">header</span>, <span class="kw">_</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>;
+ iterator
+ .last()
+ .map(|(<span class="kw">_</span>, v)| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, CompactFiltersError> {
+ <span class="kw">let </span>(header, <span class="kw">_</span>): (BlockHeader, Uint256) = SerializeDb::deserialize(<span class="kw-2">&</span>v)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">header</span>.<span class="ident">block_hash</span>())
+ <span class="prelude-val">Ok</span>(header.block_hash())
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">apply</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">from</span>: <span class="ident">usize</span>,
- <span class="ident">headers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">BlockHeader</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">WriteBatch::default</span>();
-
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">cf_handle</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">cf_handle</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">last_hash</span>, <span class="kw-2">mut</span> <span class="ident">accumulated_work</span>) <span class="op">=</span> <span class="ident">read_store</span>
- .<span class="ident">get_pinned_cf</span>(<span class="ident">cf_handle</span>, <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">from</span>)).<span class="ident">get_key</span>())<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">result</span><span class="op">|</span> {
- <span class="kw">let</span> (<span class="ident">header</span>, <span class="ident">work</span>): (<span class="ident">BlockHeader</span>, <span class="ident">Uint256</span>) <span class="op">=</span> <span class="ident">SerializeDb::deserialize</span>(<span class="kw-2">&</span><span class="ident">result</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>((<span class="ident">header</span>.<span class="ident">block_hash</span>(), <span class="ident">work</span>))
+ <span class="kw">pub fn </span>apply(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ from: usize,
+ headers: Vec<BlockHeader>,
+ ) -> <span class="prelude-ty">Result</span><BlockHash, CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = WriteBatch::default();
+
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span>cf_handle = read_store.cf_handle(<span class="kw-2">&</span><span class="self">self</span>.cf_name).unwrap();
+
+ <span class="kw">let </span>(<span class="kw-2">mut </span>last_hash, <span class="kw-2">mut </span>accumulated_work) = read_store
+ .get_pinned_cf(cf_handle, StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(from)).get_key())<span class="question-mark">?
+ </span>.map(|result| {
+ <span class="kw">let </span>(header, work): (BlockHeader, Uint256) = SerializeDb::deserialize(<span class="kw-2">&</span>result)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>::<<span class="kw">_</span>, CompactFiltersError>((header.block_hash(), work))
})
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::DataCorruption</span>)<span class="question-mark">?</span>;
+ .transpose()<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::DataCorruption)<span class="question-mark">?</span>;
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">header</span>) <span class="kw">in</span> <span class="ident">headers</span>.<span class="ident">into_iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">if</span> <span class="ident">header</span>.<span class="ident">prev_blockhash</span> <span class="op">!</span><span class="op">=</span> <span class="ident">last_hash</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidHeaders</span>);
+ <span class="kw">for </span>(index, header) <span class="kw">in </span>headers.into_iter().enumerate() {
+ <span class="kw">if </span>header.prev_blockhash != last_hash {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidHeaders);
}
- <span class="ident">last_hash</span> <span class="op">=</span> <span class="ident">header</span>.<span class="ident">block_hash</span>();
- <span class="ident">accumulated_work</span> <span class="op">=</span> <span class="ident">accumulated_work</span> <span class="op">+</span> <span class="ident">header</span>.<span class="ident">work</span>();
+ last_hash = header.block_hash();
+ accumulated_work = accumulated_work + header.work();
- <span class="kw">let</span> <span class="ident">height</span> <span class="op">=</span> <span class="ident">from</span> <span class="op">+</span> <span class="ident">index</span> <span class="op">+</span> <span class="number">1</span>;
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(
- <span class="ident">cf_handle</span>,
- <span class="ident">StoreEntry::BlockHeaderIndex</span>(<span class="prelude-val">Some</span>(<span class="ident">header</span>.<span class="ident">block_hash</span>())).<span class="ident">get_key</span>(),
- <span class="kw-2">&</span>(<span class="ident">height</span>).<span class="ident">to_be_bytes</span>(),
+ <span class="kw">let </span>height = from + index + <span class="number">1</span>;
+ batch.put_cf(
+ cf_handle,
+ StoreEntry::BlockHeaderIndex(<span class="prelude-val">Some</span>(header.block_hash())).get_key(),
+ <span class="kw-2">&</span>(height).to_be_bytes(),
);
- <span class="ident">batch</span>.<span class="ident">put_cf</span>(
- <span class="ident">cf_handle</span>,
- <span class="ident">StoreEntry::BlockHeader</span>(<span class="prelude-val">Some</span>(<span class="ident">height</span>)).<span class="ident">get_key</span>(),
- (<span class="ident">header</span>, <span class="ident">accumulated_work</span>).<span class="ident">serialize</span>(),
+ batch.put_cf(
+ cf_handle,
+ StoreEntry::BlockHeader(<span class="prelude-val">Some</span>(height)).get_key(),
+ (header, accumulated_work).serialize(),
);
}
- <span class="ident">std::mem::drop</span>(<span class="ident">read_store</span>);
+ std::mem::drop(read_store);
- <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">write</span>().<span class="ident">unwrap</span>().<span class="ident">write</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">last_hash</span>)
+ <span class="self">self</span>.store.write().unwrap().write(batch)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(last_hash)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">StoreType</span><span class="op">></span> <span class="ident">fmt::Debug</span> <span class="kw">for</span> <span class="ident">ChainStore</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="ident">f</span>.<span class="ident">debug_struct</span>(<span class="kw-2">&</span><span class="macro">format!</span>(<span class="string">"ChainStore<{:?}>"</span>, <span class="ident">T::default</span>()))
- .<span class="ident">field</span>(<span class="string">"cf_name"</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">cf_name</span>)
- .<span class="ident">field</span>(<span class="string">"min_height"</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">min_height</span>)
- .<span class="ident">field</span>(<span class="string">"network"</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">network</span>)
- .<span class="ident">field</span>(<span class="string">"headers_height"</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">get_height</span>())
- .<span class="ident">field</span>(<span class="string">"tip_hash"</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">get_tip_hash</span>())
- .<span class="ident">finish</span>()
+<span class="kw">impl</span><T: StoreType> fmt::Debug <span class="kw">for </span>ChainStore<T> {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ f.debug_struct(<span class="kw-2">&</span><span class="macro">format!</span>(<span class="string">"ChainStore<{:?}>"</span>, T::default()))
+ .field(<span class="string">"cf_name"</span>, <span class="kw-2">&</span><span class="self">self</span>.cf_name)
+ .field(<span class="string">"min_height"</span>, <span class="kw-2">&</span><span class="self">self</span>.min_height)
+ .field(<span class="string">"network"</span>, <span class="kw-2">&</span><span class="self">self</span>.network)
+ .field(<span class="string">"headers_height"</span>, <span class="kw-2">&</span><span class="self">self</span>.get_height())
+ .field(<span class="string">"tip_hash"</span>, <span class="kw-2">&</span><span class="self">self</span>.get_tip_hash())
+ .finish()
}
}
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">BundleStatus</span> {
- <span class="ident">Init</span>,
- <span class="ident">CfHeaders</span> { <span class="ident">cf_headers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">FilterHeader</span><span class="op">></span> },
- <span class="ident">CFilters</span> { <span class="ident">cf_filters</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span> },
- <span class="ident">Processed</span> { <span class="ident">cf_filters</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span> },
- <span class="ident">Tip</span> { <span class="ident">cf_filters</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span> },
- <span class="ident">Pruned</span>,
+<span class="kw">pub enum </span>BundleStatus {
+ Init,
+ CfHeaders { cf_headers: Vec<FilterHeader> },
+ CFilters { cf_filters: Vec<Vec<u8>> },
+ Processed { cf_filters: Vec<Vec<u8>> },
+ Tip { cf_filters: Vec<Vec<u8>> },
+ Pruned,
}
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CfStore</span> {
- <span class="ident">store</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">RwLock</span><span class="op"><</span><span class="ident">DB</span><span class="op">></span><span class="op">></span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
+<span class="kw">pub struct </span>CfStore {
+ store: Arc<RwLock<DB>>,
+ filter_type: u8,
}
-<span class="kw">type</span> <span class="ident">BundleEntry</span> <span class="op">=</span> (<span class="ident">BundleStatus</span>, <span class="ident">FilterHeader</span>);
+<span class="kw">type </span>BundleEntry = (BundleStatus, FilterHeader);
-<span class="kw">impl</span> <span class="ident">CfStore</span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(
- <span class="ident">headers_store</span>: <span class="kw-2">&</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Full</span><span class="op">></span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">cf_store</span> <span class="op">=</span> <span class="ident">CfStore</span> {
- <span class="ident">store</span>: <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="ident">headers_store</span>.<span class="ident">store</span>),
- <span class="ident">filter_type</span>,
+<span class="kw">impl </span>CfStore {
+ <span class="kw">pub fn </span>new(
+ headers_store: <span class="kw-2">&</span>ChainStore<Full>,
+ filter_type: u8,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">let </span>cf_store = CfStore {
+ store: Arc::clone(<span class="kw-2">&</span>headers_store.store),
+ filter_type,
};
- <span class="kw">let</span> <span class="ident">genesis</span> <span class="op">=</span> <span class="ident">genesis_block</span>(<span class="ident">headers_store</span>.<span class="ident">network</span>);
+ <span class="kw">let </span>genesis = genesis_block(headers_store.network);
- <span class="kw">let</span> <span class="ident">filter</span> <span class="op">=</span> <span class="ident">BlockFilter::new_script_filter</span>(<span class="kw-2">&</span><span class="ident">genesis</span>, <span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> {
- <span class="prelude-val">Err</span>(<span class="ident">bitcoin::util::bip158::Error::UtxoMissing</span>(<span class="kw-2">*</span><span class="ident">utxo</span>))
+ <span class="kw">let </span>filter = BlockFilter::new_script_filter(<span class="kw-2">&</span>genesis, |utxo| {
+ <span class="prelude-val">Err</span>(bitcoin::util::bip158::Error::UtxoMissing(<span class="kw-2">*</span>utxo))
})<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">first_key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>))).<span class="ident">get_key</span>();
-
- <span class="comment">// Add the genesis' filter</span>
- {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="ident">cf_store</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">if</span> <span class="ident">read_store</span>.<span class="ident">get_pinned</span>(<span class="kw-2">&</span><span class="ident">first_key</span>)<span class="question-mark">?</span>.<span class="ident">is_none</span>() {
- <span class="ident">read_store</span>.<span class="ident">put</span>(
- <span class="kw-2">&</span><span class="ident">first_key</span>,
+ <span class="kw">let </span>first_key = StoreEntry::CFilterTable((filter_type, <span class="prelude-val">Some</span>(<span class="number">0</span>))).get_key();
+
+ <span class="comment">// Add the genesis' filter
+ </span>{
+ <span class="kw">let </span>read_store = cf_store.store.read().unwrap();
+ <span class="kw">if </span>read_store.get_pinned(<span class="kw-2">&</span>first_key)<span class="question-mark">?</span>.is_none() {
+ read_store.put(
+ <span class="kw-2">&</span>first_key,
(
- <span class="ident">BundleStatus::Init</span>,
- <span class="ident">filter</span>.<span class="ident">filter_header</span>(<span class="kw-2">&</span><span class="ident">FilterHeader::from_hash</span>(<span class="ident">Hash::all_zeros</span>())),
+ BundleStatus::Init,
+ filter.filter_header(<span class="kw-2">&</span>FilterHeader::from_hash(Hash::all_zeros())),
)
- .<span class="ident">serialize</span>(),
+ .serialize(),
)<span class="question-mark">?</span>;
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">cf_store</span>)
+ <span class="prelude-val">Ok</span>(cf_store)
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_filter_type</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">u8</span> {
- <span class="self">self</span>.<span class="ident">filter_type</span>
+ <span class="kw">pub fn </span>get_filter_type(<span class="kw-2">&</span><span class="self">self</span>) -> u8 {
+ <span class="self">self</span>.filter_type
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_bundles</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">BundleEntry</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>get_bundles(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<BundleEntry>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">None</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">prefix_iterator</span>(<span class="kw-2">&</span><span class="ident">prefix</span>);
+ <span class="kw">let </span>prefix = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">None</span>)).get_key();
+ <span class="kw">let </span>iterator = read_store.prefix_iterator(<span class="kw-2">&</span>prefix);
- <span class="comment">// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't</span>
- <span class="comment">// have the right prefix</span>
- <span class="ident">iterator</span>
- .<span class="ident">filter</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">k</span>.<span class="ident">starts_with</span>(<span class="kw-2">&</span><span class="ident">prefix</span>))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">data</span>)<span class="op">|</span> <span class="ident">BundleEntry::deserialize</span>(<span class="kw-2">&</span><span class="ident">data</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
+ <span class="comment">// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't
+ // have the right prefix
+ </span>iterator
+ .filter(|(k, <span class="kw">_</span>)| k.starts_with(<span class="kw-2">&</span>prefix))
+ .map(|(<span class="kw">_</span>, data)| BundleEntry::deserialize(<span class="kw-2">&</span>data))
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_checkpoints</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">FilterHeader</span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>get_checkpoints(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<FilterHeader>, CompactFiltersError> {
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
- <span class="kw">let</span> <span class="ident">prefix</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">None</span>)).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">iterator</span> <span class="op">=</span> <span class="ident">read_store</span>.<span class="ident">prefix_iterator</span>(<span class="kw-2">&</span><span class="ident">prefix</span>);
+ <span class="kw">let </span>prefix = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">None</span>)).get_key();
+ <span class="kw">let </span>iterator = read_store.prefix_iterator(<span class="kw-2">&</span>prefix);
- <span class="comment">// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't</span>
- <span class="comment">// have the right prefix</span>
- <span class="ident">iterator</span>
- .<span class="ident">filter</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">k</span>.<span class="ident">starts_with</span>(<span class="kw-2">&</span><span class="ident">prefix</span>))
- .<span class="ident">skip</span>(<span class="number">1</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">data</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>(<span class="ident">BundleEntry::deserialize</span>(<span class="kw-2">&</span><span class="ident">data</span>)<span class="question-mark">?</span>.<span class="number">1</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
+ <span class="comment">// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't
+ // have the right prefix
+ </span>iterator
+ .filter(|(k, <span class="kw">_</span>)| k.starts_with(<span class="kw-2">&</span>prefix))
+ .skip(<span class="number">1</span>)
+ .map(|(<span class="kw">_</span>, data)| <span class="prelude-val">Ok</span>::<<span class="kw">_</span>, CompactFiltersError>(BundleEntry::deserialize(<span class="kw-2">&</span>data)<span class="question-mark">?</span>.<span class="number">1</span>))
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">replace_checkpoints</span>(
+ <span class="kw">pub fn </span>replace_checkpoints(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">checkpoints</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">FilterHeader</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">current_checkpoints</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_checkpoints</span>()<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">equal_bundles</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">for</span> (<span class="ident">index</span>, (<span class="ident">our</span>, <span class="ident">their</span>)) <span class="kw">in</span> <span class="ident">current_checkpoints</span>
- .<span class="ident">iter</span>()
- .<span class="ident">zip</span>(<span class="ident">checkpoints</span>.<span class="ident">iter</span>())
- .<span class="ident">enumerate</span>()
+ checkpoints: Vec<FilterHeader>,
+ ) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span>current_checkpoints = <span class="self">self</span>.get_checkpoints()<span class="question-mark">?</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>equal_bundles = <span class="number">0</span>;
+ <span class="kw">for </span>(index, (our, their)) <span class="kw">in </span>current_checkpoints
+ .iter()
+ .zip(checkpoints.iter())
+ .enumerate()
{
- <span class="ident">equal_bundles</span> <span class="op">=</span> <span class="ident">index</span>;
+ equal_bundles = index;
- <span class="kw">if</span> <span class="ident">our</span> <span class="op">!</span><span class="op">=</span> <span class="ident">their</span> {
+ <span class="kw">if </span>our != their {
<span class="kw">break</span>;
}
}
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">WriteBatch::default</span>();
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = WriteBatch::default();
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">filter_hash</span>) <span class="kw">in</span> <span class="ident">checkpoints</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>().<span class="ident">skip</span>(<span class="ident">equal_bundles</span>) {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="ident">index</span> <span class="op">+</span> <span class="number">1</span>))).<span class="ident">get_key</span>(); <span class="comment">// +1 to skip the genesis' filter</span>
+ <span class="kw">for </span>(index, filter_hash) <span class="kw">in </span>checkpoints.iter().enumerate().skip(equal_bundles) {
+ <span class="kw">let </span>key = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">Some</span>(index + <span class="number">1</span>))).get_key(); <span class="comment">// +1 to skip the genesis' filter
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">BundleStatus::Tip</span> { .. }, <span class="kw">_</span>)) <span class="op">=</span> <span class="ident">read_store</span>
- .<span class="ident">get_pinned</span>(<span class="kw-2">&</span><span class="ident">key</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> <span class="ident">BundleEntry::deserialize</span>(<span class="kw-2">&</span><span class="ident">data</span>))
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>
- {
- <span class="macro">println!</span>(<span class="string">"Keeping bundle #{} as Tip"</span>, <span class="ident">index</span>);
- } <span class="kw">else</span> {
- <span class="ident">batch</span>.<span class="ident">put</span>(<span class="kw-2">&</span><span class="ident">key</span>, (<span class="ident">BundleStatus::Init</span>, <span class="kw-2">*</span><span class="ident">filter_hash</span>).<span class="ident">serialize</span>());
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>((BundleStatus::Tip { .. }, <span class="kw">_</span>)) = read_store
+ .get_pinned(<span class="kw-2">&</span>key)<span class="question-mark">?
+ </span>.map(|data| BundleEntry::deserialize(<span class="kw-2">&</span>data))
+ .transpose()<span class="question-mark">?
+ </span>{
+ <span class="macro">println!</span>(<span class="string">"Keeping bundle #{} as Tip"</span>, index);
+ } <span class="kw">else </span>{
+ batch.put(<span class="kw-2">&</span>key, (BundleStatus::Init, <span class="kw-2">*</span>filter_hash).serialize());
}
}
- <span class="ident">read_store</span>.<span class="ident">write</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>;
+ read_store.write(batch)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">advance_to_cf_headers</span>(
+ <span class="kw">pub fn </span>advance_to_cf_headers(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">bundle</span>: <span class="ident">usize</span>,
- <span class="ident">checkpoint</span>: <span class="ident">FilterHeader</span>,
- <span class="ident">filter_hashes</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">FilterHash</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BundleStatus</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">cf_headers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">FilterHeader</span><span class="op">></span> <span class="op">=</span> <span class="ident">filter_hashes</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">scan</span>(<span class="ident">checkpoint</span>, <span class="op">|</span><span class="ident">prev_header</span>, <span class="ident">filter_hash</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">filter_header</span> <span class="op">=</span> <span class="ident">filter_hash</span>.<span class="ident">filter_header</span>(<span class="ident">prev_header</span>);
- <span class="kw-2">*</span><span class="ident">prev_header</span> <span class="op">=</span> <span class="ident">filter_header</span>;
-
- <span class="prelude-val">Some</span>(<span class="ident">filter_header</span>)
+ bundle: usize,
+ checkpoint: FilterHeader,
+ filter_hashes: Vec<FilterHash>,
+ ) -> <span class="prelude-ty">Result</span><BundleStatus, CompactFiltersError> {
+ <span class="kw">let </span>cf_headers: Vec<FilterHeader> = filter_hashes
+ .into_iter()
+ .scan(checkpoint, |prev_header, filter_hash| {
+ <span class="kw">let </span>filter_header = filter_hash.filter_header(prev_header);
+ <span class="kw-2">*</span>prev_header = filter_header;
+
+ <span class="prelude-val">Some</span>(filter_header)
})
- .<span class="ident">collect</span>();
-
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">next_key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="ident">bundle</span> <span class="op">+</span> <span class="number">1</span>))).<span class="ident">get_key</span>(); <span class="comment">// +1 to skip the genesis' filter</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="kw">_</span>, <span class="ident">next_checkpoint</span>)) <span class="op">=</span> <span class="ident">read_store</span>
- .<span class="ident">get_pinned</span>(<span class="kw-2">&</span><span class="ident">next_key</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> <span class="ident">BundleEntry::deserialize</span>(<span class="kw-2">&</span><span class="ident">data</span>))
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>
- {
- <span class="comment">// check connection with the next bundle if present</span>
- <span class="kw">if</span> <span class="ident">cf_headers</span>.<span class="ident">iter</span>().<span class="ident">last</span>() <span class="op">!</span><span class="op">=</span> <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">next_checkpoint</span>) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidFilterHeader</span>);
+ .collect();
+
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+
+ <span class="kw">let </span>next_key = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">Some</span>(bundle + <span class="number">1</span>))).get_key(); <span class="comment">// +1 to skip the genesis' filter
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>((<span class="kw">_</span>, next_checkpoint)) = read_store
+ .get_pinned(<span class="kw-2">&</span>next_key)<span class="question-mark">?
+ </span>.map(|data| BundleEntry::deserialize(<span class="kw-2">&</span>data))
+ .transpose()<span class="question-mark">?
+ </span>{
+ <span class="comment">// check connection with the next bundle if present
+ </span><span class="kw">if </span>cf_headers.iter().last() != <span class="prelude-val">Some</span>(<span class="kw-2">&</span>next_checkpoint) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidFilterHeader);
}
}
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="ident">bundle</span>))).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> (<span class="ident">BundleStatus::CfHeaders</span> { <span class="ident">cf_headers</span> }, <span class="ident">checkpoint</span>);
+ <span class="kw">let </span>key = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">Some</span>(bundle))).get_key();
+ <span class="kw">let </span>value = (BundleStatus::CfHeaders { cf_headers }, checkpoint);
- <span class="ident">read_store</span>.<span class="ident">put</span>(<span class="ident">key</span>, <span class="ident">value</span>.<span class="ident">serialize</span>())<span class="question-mark">?</span>;
+ read_store.put(key, value.serialize())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">value</span>.<span class="number">0</span>)
+ <span class="prelude-val">Ok</span>(value.<span class="number">0</span>)
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">advance_to_cf_filters</span>(
+ <span class="kw">pub fn </span>advance_to_cf_filters(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">bundle</span>: <span class="ident">usize</span>,
- <span class="ident">checkpoint</span>: <span class="ident">FilterHeader</span>,
- <span class="ident">headers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">FilterHeader</span><span class="op">></span>,
- <span class="ident">filters</span>: <span class="ident">Vec</span><span class="op"><</span>(<span class="ident">usize</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>)<span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BundleStatus</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">cf_filters</span> <span class="op">=</span> <span class="ident">filters</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">zip</span>(<span class="ident">headers</span>.<span class="ident">into_iter</span>())
- .<span class="ident">scan</span>(<span class="ident">checkpoint</span>, <span class="op">|</span><span class="ident">prev_header</span>, ((<span class="kw">_</span>, <span class="ident">filter_content</span>), <span class="ident">header</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">filter</span> <span class="op">=</span> <span class="ident">BlockFilter::new</span>(<span class="kw-2">&</span><span class="ident">filter_content</span>);
- <span class="kw">if</span> <span class="ident">header</span> <span class="op">!</span><span class="op">=</span> <span class="ident">filter</span>.<span class="ident">filter_header</span>(<span class="ident">prev_header</span>) {
- <span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidFilter</span>));
+ bundle: usize,
+ checkpoint: FilterHeader,
+ headers: Vec<FilterHeader>,
+ filters: Vec<(usize, Vec<u8>)>,
+ ) -> <span class="prelude-ty">Result</span><BundleStatus, CompactFiltersError> {
+ <span class="kw">let </span>cf_filters = filters
+ .into_iter()
+ .zip(headers.into_iter())
+ .scan(checkpoint, |prev_header, ((<span class="kw">_</span>, filter_content), header)| {
+ <span class="kw">let </span>filter = BlockFilter::new(<span class="kw-2">&</span>filter_content);
+ <span class="kw">if </span>header != filter.filter_header(prev_header) {
+ <span class="kw">return </span><span class="prelude-val">Some</span>(<span class="prelude-val">Err</span>(CompactFiltersError::InvalidFilter));
}
- <span class="kw-2">*</span><span class="ident">prev_header</span> <span class="op">=</span> <span class="ident">header</span>;
+ <span class="kw-2">*</span>prev_header = header;
- <span class="prelude-val">Some</span>(<span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>(<span class="ident">filter_content</span>))
+ <span class="prelude-val">Some</span>(<span class="prelude-val">Ok</span>::<<span class="kw">_</span>, CompactFiltersError>(filter_content))
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="ident">bundle</span>))).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> (<span class="ident">BundleStatus::CFilters</span> { <span class="ident">cf_filters</span> }, <span class="ident">checkpoint</span>);
+ <span class="kw">let </span>key = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">Some</span>(bundle))).get_key();
+ <span class="kw">let </span>value = (BundleStatus::CFilters { cf_filters }, checkpoint);
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="ident">read_store</span>.<span class="ident">put</span>(<span class="ident">key</span>, <span class="ident">value</span>.<span class="ident">serialize</span>())<span class="question-mark">?</span>;
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ read_store.put(key, value.serialize())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">value</span>.<span class="number">0</span>)
+ <span class="prelude-val">Ok</span>(value.<span class="number">0</span>)
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">prune_filters</span>(
+ <span class="kw">pub fn </span>prune_filters(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">bundle</span>: <span class="ident">usize</span>,
- <span class="ident">checkpoint</span>: <span class="ident">FilterHeader</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BundleStatus</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="ident">bundle</span>))).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> (<span class="ident">BundleStatus::Pruned</span>, <span class="ident">checkpoint</span>);
+ bundle: usize,
+ checkpoint: FilterHeader,
+ ) -> <span class="prelude-ty">Result</span><BundleStatus, CompactFiltersError> {
+ <span class="kw">let </span>key = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">Some</span>(bundle))).get_key();
+ <span class="kw">let </span>value = (BundleStatus::Pruned, checkpoint);
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="ident">read_store</span>.<span class="ident">put</span>(<span class="ident">key</span>, <span class="ident">value</span>.<span class="ident">serialize</span>())<span class="question-mark">?</span>;
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ read_store.put(key, value.serialize())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">value</span>.<span class="number">0</span>)
+ <span class="prelude-val">Ok</span>(value.<span class="number">0</span>)
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">mark_as_tip</span>(
+ <span class="kw">pub fn </span>mark_as_tip(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">bundle</span>: <span class="ident">usize</span>,
- <span class="ident">cf_filters</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span>,
- <span class="ident">checkpoint</span>: <span class="ident">FilterHeader</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BundleStatus</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">StoreEntry::CFilterTable</span>((<span class="self">self</span>.<span class="ident">filter_type</span>, <span class="prelude-val">Some</span>(<span class="ident">bundle</span>))).<span class="ident">get_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> (<span class="ident">BundleStatus::Tip</span> { <span class="ident">cf_filters</span> }, <span class="ident">checkpoint</span>);
+ bundle: usize,
+ cf_filters: Vec<Vec<u8>>,
+ checkpoint: FilterHeader,
+ ) -> <span class="prelude-ty">Result</span><BundleStatus, CompactFiltersError> {
+ <span class="kw">let </span>key = StoreEntry::CFilterTable((<span class="self">self</span>.filter_type, <span class="prelude-val">Some</span>(bundle))).get_key();
+ <span class="kw">let </span>value = (BundleStatus::Tip { cf_filters }, checkpoint);
- <span class="kw">let</span> <span class="ident">read_store</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">store</span>.<span class="ident">read</span>().<span class="ident">unwrap</span>();
- <span class="ident">read_store</span>.<span class="ident">put</span>(<span class="ident">key</span>, <span class="ident">value</span>.<span class="ident">serialize</span>())<span class="question-mark">?</span>;
+ <span class="kw">let </span>read_store = <span class="self">self</span>.store.read().unwrap();
+ read_store.put(key, value.serialize())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">value</span>.<span class="number">0</span>)
+ <span class="prelude-val">Ok</span>(value.<span class="number">0</span>)
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/sync.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sync.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../../storage.js"></script><script src="../../../../crates.js"></script><script defer src="../../../../main.js"></script><script defer src="../../../../source-script.js"></script><script defer src="../../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">BTreeMap</span>, <span class="ident">HashMap</span>, <span class="ident">VecDeque</span>};
-<span class="kw">use</span> <span class="ident">std::sync</span>::{<span class="ident">Arc</span>, <span class="ident">Mutex</span>};
-<span class="kw">use</span> <span class="ident">std::time::Duration</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types</span>::{<span class="ident">BlockHash</span>, <span class="ident">FilterHeader</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hashes::Hash</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::message::NetworkMessage</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::network::message_blockdata::GetHeadersMessage</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip158::BlockFilter</span>;
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::peer</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::store</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::CompactFiltersError</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const</span> <span class="ident">BURIED_CONFIRMATIONS</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">100</span>;
-
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CfSync</span> {
- <span class="ident">headers_store</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Full</span><span class="op">></span><span class="op">></span>,
- <span class="ident">cf_store</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">CfStore</span><span class="op">></span>,
- <span class="ident">skip_blocks</span>: <span class="ident">usize</span>,
- <span class="ident">bundles</span>: <span class="ident">Mutex</span><span class="op"><</span><span class="ident">VecDeque</span><span class="op"><</span>(<span class="ident">BundleStatus</span>, <span class="ident">FilterHeader</span>, <span class="ident">usize</span>)<span class="op">></span><span class="op">></span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/compact_filters/sync.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sync.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../../source-files.js"></script><script defer src="../../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="kw">use </span>std::collections::{BTreeMap, HashMap, VecDeque};
+<span class="kw">use </span>std::sync::{Arc, Mutex};
+<span class="kw">use </span>std::time::Duration;
+
+<span class="kw">use </span>bitcoin::hash_types::{BlockHash, FilterHeader};
+<span class="kw">use </span>bitcoin::hashes::Hash;
+<span class="kw">use </span>bitcoin::network::message::NetworkMessage;
+<span class="kw">use </span>bitcoin::network::message_blockdata::GetHeadersMessage;
+<span class="kw">use </span>bitcoin::util::bip158::BlockFilter;
+
+<span class="kw">use </span><span class="kw">super</span>::peer::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">super</span>::store::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">super</span>::CompactFiltersError;
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const </span>BURIED_CONFIRMATIONS: usize = <span class="number">100</span>;
+
+<span class="kw">pub struct </span>CfSync {
+ headers_store: Arc<ChainStore<Full>>,
+ cf_store: Arc<CfStore>,
+ skip_blocks: usize,
+ bundles: Mutex<VecDeque<(BundleStatus, FilterHeader, usize)>>,
}
-<span class="kw">impl</span> <span class="ident">CfSync</span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(
- <span class="ident">headers_store</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Full</span><span class="op">></span><span class="op">></span>,
- <span class="ident">skip_blocks</span>: <span class="ident">usize</span>,
- <span class="ident">filter_type</span>: <span class="ident">u8</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">cf_store</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">CfStore::new</span>(<span class="kw-2">&</span><span class="ident">headers_store</span>, <span class="ident">filter_type</span>)<span class="question-mark">?</span>);
-
- <span class="prelude-val">Ok</span>(<span class="ident">CfSync</span> {
- <span class="ident">headers_store</span>,
- <span class="ident">cf_store</span>,
- <span class="ident">skip_blocks</span>,
- <span class="ident">bundles</span>: <span class="ident">Mutex::new</span>(<span class="ident">VecDeque::new</span>()),
+<span class="kw">impl </span>CfSync {
+ <span class="kw">pub fn </span>new(
+ headers_store: Arc<ChainStore<Full>>,
+ skip_blocks: usize,
+ filter_type: u8,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, CompactFiltersError> {
+ <span class="kw">let </span>cf_store = Arc::new(CfStore::new(<span class="kw-2">&</span>headers_store, filter_type)<span class="question-mark">?</span>);
+
+ <span class="prelude-val">Ok</span>(CfSync {
+ headers_store,
+ cf_store,
+ skip_blocks,
+ bundles: Mutex::new(VecDeque::new()),
})
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">pruned_bundles</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">usize</span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">cf_store</span>
- .<span class="ident">get_bundles</span>()<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">skip</span>(<span class="self">self</span>.<span class="ident">skip_blocks</span> <span class="op">/</span> <span class="number">1000</span>)
- .<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, (<span class="ident">status</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="kw">match</span> <span class="ident">status</span> {
- <span class="ident">BundleStatus::Pruned</span> => <span class="ident">acc</span> <span class="op">+</span> <span class="number">1</span>,
- <span class="kw">_</span> => <span class="ident">acc</span>,
+ <span class="kw">pub fn </span>pruned_bundles(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><usize, CompactFiltersError> {
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.cf_store
+ .get_bundles()<span class="question-mark">?
+ </span>.into_iter()
+ .skip(<span class="self">self</span>.skip_blocks / <span class="number">1000</span>)
+ .fold(<span class="number">0</span>, |acc, (status, <span class="kw">_</span>)| <span class="kw">match </span>status {
+ BundleStatus::Pruned => acc + <span class="number">1</span>,
+ <span class="kw">_ </span>=> acc,
}))
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">prepare_sync</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">peer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Peer</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">bundles_lock</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">bundles</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>prepare_sync(<span class="kw-2">&</span><span class="self">self</span>, peer: Arc<Peer>) -> <span class="prelude-ty">Result</span><(), CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>bundles_lock = <span class="self">self</span>.bundles.lock().unwrap();
- <span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">peer</span>.<span class="ident">get_cf_checkpt</span>(
- <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">get_filter_type</span>(),
- <span class="self">self</span>.<span class="ident">headers_store</span>.<span class="ident">get_tip_hash</span>()<span class="question-mark">?</span>.<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>resp = peer.get_cf_checkpt(
+ <span class="self">self</span>.cf_store.get_filter_type(),
+ <span class="self">self</span>.headers_store.get_tip_hash()<span class="question-mark">?</span>.unwrap(),
)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">replace_checkpoints</span>(<span class="ident">resp</span>.<span class="ident">filter_headers</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.cf_store.replace_checkpoints(resp.filter_headers)<span class="question-mark">?</span>;
- <span class="ident">bundles_lock</span>.<span class="ident">clear</span>();
- <span class="kw">for</span> (<span class="ident">index</span>, (<span class="ident">status</span>, <span class="ident">checkpoint</span>)) <span class="kw">in</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">get_bundles</span>()<span class="question-mark">?</span>.<span class="ident">into_iter</span>().<span class="ident">enumerate</span>() {
- <span class="ident">bundles_lock</span>.<span class="ident">push_back</span>((<span class="ident">status</span>, <span class="ident">checkpoint</span>, <span class="ident">index</span>));
+ bundles_lock.clear();
+ <span class="kw">for </span>(index, (status, checkpoint)) <span class="kw">in </span><span class="self">self</span>.cf_store.get_bundles()<span class="question-mark">?</span>.into_iter().enumerate() {
+ bundles_lock.push_back((status, checkpoint, index));
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">capture_thread_for_sync</span><span class="op"><</span><span class="ident">F</span>, <span class="ident">Q</span><span class="op">></span>(
+ <span class="kw">pub fn </span>capture_thread_for_sync<F, Q>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">peer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Peer</span><span class="op">></span>,
- <span class="ident">process</span>: <span class="ident">F</span>,
- <span class="ident">completed_bundle</span>: <span class="ident">Q</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">CompactFiltersError</span><span class="op">></span>
- <span class="kw">where</span>
- <span class="ident">F</span>: <span class="ident">Fn</span>(<span class="kw-2">&</span><span class="ident">BlockHash</span>, <span class="kw-2">&</span><span class="ident">BlockFilter</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">CompactFiltersError</span><span class="op">></span>,
- <span class="ident">Q</span>: <span class="ident">Fn</span>(<span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>,
+ peer: Arc<Peer>,
+ process: F,
+ completed_bundle: Q,
+ ) -> <span class="prelude-ty">Result</span><(), CompactFiltersError>
+ <span class="kw">where
+ </span>F: Fn(<span class="kw-2">&</span>BlockHash, <span class="kw-2">&</span>BlockFilter) -> <span class="prelude-ty">Result</span><bool, CompactFiltersError>,
+ Q: Fn(usize) -> <span class="prelude-ty">Result</span><(), Error>,
{
- <span class="kw">let</span> <span class="ident">current_height</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">headers_store</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span>; <span class="comment">// TODO: we should update it in case headers_store is also updated</span>
+ <span class="kw">let </span>current_height = <span class="self">self</span>.headers_store.get_height()<span class="question-mark">?</span>; <span class="comment">// TODO: we should update it in case headers_store is also updated
- <span class="kw">loop</span> {
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">status</span>, <span class="ident">checkpoint</span>, <span class="ident">index</span>) <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">bundles</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>().<span class="ident">pop_front</span>() {
- <span class="prelude-val">None</span> => <span class="kw">break</span>,
- <span class="prelude-val">Some</span>(<span class="ident">x</span>) => <span class="ident">x</span>,
+ </span><span class="kw">loop </span>{
+ <span class="kw">let </span>(<span class="kw-2">mut </span>status, checkpoint, index) = <span class="kw">match </span><span class="self">self</span>.bundles.lock().unwrap().pop_front() {
+ <span class="prelude-val">None </span>=> <span class="kw">break</span>,
+ <span class="prelude-val">Some</span>(x) => x,
};
<span class="macro">log::debug!</span>(
<span class="string">"Processing bundle #{} - height {} to {}"</span>,
- <span class="ident">index</span>,
- <span class="ident">index</span> <span class="op">*</span> <span class="number">1000</span> <span class="op">+</span> <span class="number">1</span>,
- (<span class="ident">index</span> <span class="op">+</span> <span class="number">1</span>) <span class="op">*</span> <span class="number">1000</span>
- );
-
- <span class="kw">let</span> <span class="ident">process_received_filters</span> <span class="op">=</span>
- <span class="op">|</span><span class="ident">expected_filters</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">usize</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">filters_map</span> <span class="op">=</span> <span class="ident">BTreeMap::new</span>();
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">expected_filters</span> {
- <span class="kw">let</span> <span class="ident">filter</span> <span class="op">=</span> <span class="ident">peer</span>.<span class="ident">pop_cf_filter_resp</span>()<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">filter</span>.<span class="ident">filter_type</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">get_filter_type</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ index,
+ index * <span class="number">1000 </span>+ <span class="number">1</span>,
+ (index + <span class="number">1</span>) * <span class="number">1000
+ </span>);
+
+ <span class="kw">let </span>process_received_filters =
+ |expected_filters| -> <span class="prelude-ty">Result</span><BTreeMap<usize, Vec<u8>>, CompactFiltersError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>filters_map = BTreeMap::new();
+ <span class="kw">for _ in </span><span class="number">0</span>..expected_filters {
+ <span class="kw">let </span>filter = peer.pop_cf_filter_resp()<span class="question-mark">?</span>;
+ <span class="kw">if </span>filter.filter_type != <span class="self">self</span>.cf_store.get_filter_type() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
}
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">headers_store</span>.<span class="ident">get_height_for</span>(<span class="kw-2">&</span><span class="ident">filter</span>.<span class="ident">block_hash</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">height</span>) => <span class="ident">filters_map</span>.<span class="ident">insert</span>(<span class="ident">height</span>, <span class="ident">filter</span>.<span class="ident">filter</span>),
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidFilter</span>),
+ <span class="kw">match </span><span class="self">self</span>.headers_store.get_height_for(<span class="kw-2">&</span>filter.block_hash)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(height) => filters_map.insert(height, filter.filter),
+ <span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidFilter),
};
}
- <span class="prelude-val">Ok</span>(<span class="ident">filters_map</span>)
+ <span class="prelude-val">Ok</span>(filters_map)
};
- <span class="kw">let</span> <span class="ident">start_height</span> <span class="op">=</span> <span class="ident">index</span> <span class="op">*</span> <span class="number">1000</span> <span class="op">+</span> <span class="number">1</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">already_processed</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="kw">let </span>start_height = index * <span class="number">1000 </span>+ <span class="number">1</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>already_processed = <span class="number">0</span>;
- <span class="kw">if</span> <span class="ident">start_height</span> <span class="op"><</span> <span class="self">self</span>.<span class="ident">skip_blocks</span> {
- <span class="ident">status</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">prune_filters</span>(<span class="ident">index</span>, <span class="ident">checkpoint</span>)<span class="question-mark">?</span>;
+ <span class="kw">if </span>start_height < <span class="self">self</span>.skip_blocks {
+ status = <span class="self">self</span>.cf_store.prune_filters(index, checkpoint)<span class="question-mark">?</span>;
}
- <span class="kw">let</span> <span class="ident">stop_height</span> <span class="op">=</span> <span class="ident">std::cmp::min</span>(<span class="ident">current_height</span>, <span class="ident">start_height</span> <span class="op">+</span> <span class="number">999</span>);
- <span class="kw">let</span> <span class="ident">stop_hash</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">headers_store</span>.<span class="ident">get_block_hash</span>(<span class="ident">stop_height</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>();
+ <span class="kw">let </span>stop_height = std::cmp::min(current_height, start_height + <span class="number">999</span>);
+ <span class="kw">let </span>stop_hash = <span class="self">self</span>.headers_store.get_block_hash(stop_height)<span class="question-mark">?</span>.unwrap();
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::Init</span> <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::Init = status {
<span class="macro">log::trace!</span>(<span class="string">"status: Init"</span>);
- <span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">peer</span>.<span class="ident">get_cf_headers</span>(<span class="number">0x00</span>, <span class="ident">start_height</span> <span class="kw">as</span> <span class="ident">u32</span>, <span class="ident">stop_hash</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>resp = peer.get_cf_headers(<span class="number">0x00</span>, start_height <span class="kw">as </span>u32, stop_hash)<span class="question-mark">?</span>;
- <span class="macro">assert!</span>(<span class="ident">resp</span>.<span class="ident">previous_filter_header</span> <span class="op">==</span> <span class="ident">checkpoint</span>);
- <span class="ident">status</span> <span class="op">=</span>
- <span class="self">self</span>.<span class="ident">cf_store</span>
- .<span class="ident">advance_to_cf_headers</span>(<span class="ident">index</span>, <span class="ident">checkpoint</span>, <span class="ident">resp</span>.<span class="ident">filter_hashes</span>)<span class="question-mark">?</span>;
+ <span class="macro">assert!</span>(resp.previous_filter_header == checkpoint);
+ status =
+ <span class="self">self</span>.cf_store
+ .advance_to_cf_headers(index, checkpoint, resp.filter_hashes)<span class="question-mark">?</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::Tip</span> { <span class="ident">cf_filters</span> } <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::Tip { cf_filters } = status {
<span class="macro">log::trace!</span>(<span class="string">"status: Tip (beginning) "</span>);
- <span class="ident">already_processed</span> <span class="op">=</span> <span class="ident">cf_filters</span>.<span class="ident">len</span>();
- <span class="kw">let</span> <span class="ident">headers_resp</span> <span class="op">=</span> <span class="ident">peer</span>.<span class="ident">get_cf_headers</span>(<span class="number">0x00</span>, <span class="ident">start_height</span> <span class="kw">as</span> <span class="ident">u32</span>, <span class="ident">stop_hash</span>)<span class="question-mark">?</span>;
+ already_processed = cf_filters.len();
+ <span class="kw">let </span>headers_resp = peer.get_cf_headers(<span class="number">0x00</span>, start_height <span class="kw">as </span>u32, stop_hash)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">cf_headers</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">advance_to_cf_headers</span>(
- <span class="ident">index</span>,
- <span class="ident">checkpoint</span>,
- <span class="ident">headers_resp</span>.<span class="ident">filter_hashes</span>,
- )<span class="question-mark">?</span> {
- <span class="ident">BundleStatus::CfHeaders</span> { <span class="ident">cf_headers</span> } => <span class="ident">cf_headers</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>),
+ <span class="kw">let </span>cf_headers = <span class="kw">match </span><span class="self">self</span>.cf_store.advance_to_cf_headers(
+ index,
+ checkpoint,
+ headers_resp.filter_hashes,
+ )<span class="question-mark">? </span>{
+ BundleStatus::CfHeaders { cf_headers } => cf_headers,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse),
};
- <span class="ident">peer</span>.<span class="ident">get_cf_filters</span>(
- <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">get_filter_type</span>(),
- (<span class="ident">start_height</span> <span class="op">+</span> <span class="ident">cf_filters</span>.<span class="ident">len</span>()) <span class="kw">as</span> <span class="ident">u32</span>,
- <span class="ident">stop_hash</span>,
+ peer.get_cf_filters(
+ <span class="self">self</span>.cf_store.get_filter_type(),
+ (start_height + cf_filters.len()) <span class="kw">as </span>u32,
+ stop_hash,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">expected_filters</span> <span class="op">=</span> <span class="ident">stop_height</span> <span class="op">-</span> <span class="ident">start_height</span> <span class="op">+</span> <span class="number">1</span> <span class="op">-</span> <span class="ident">cf_filters</span>.<span class="ident">len</span>();
- <span class="kw">let</span> <span class="ident">filters_map</span> <span class="op">=</span> <span class="ident">process_received_filters</span>(<span class="ident">expected_filters</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">filters</span> <span class="op">=</span> <span class="ident">cf_filters</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">enumerate</span>()
- .<span class="ident">chain</span>(<span class="ident">filters_map</span>.<span class="ident">into_iter</span>())
- .<span class="ident">collect</span>();
- <span class="ident">status</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">cf_store</span>
- .<span class="ident">advance_to_cf_filters</span>(<span class="ident">index</span>, <span class="ident">checkpoint</span>, <span class="ident">cf_headers</span>, <span class="ident">filters</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>expected_filters = stop_height - start_height + <span class="number">1 </span>- cf_filters.len();
+ <span class="kw">let </span>filters_map = process_received_filters(expected_filters)<span class="question-mark">?</span>;
+ <span class="kw">let </span>filters = cf_filters
+ .into_iter()
+ .enumerate()
+ .chain(filters_map.into_iter())
+ .collect();
+ status = <span class="self">self
+ </span>.cf_store
+ .advance_to_cf_filters(index, checkpoint, cf_headers, filters)<span class="question-mark">?</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::CfHeaders</span> { <span class="ident">cf_headers</span> } <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::CfHeaders { cf_headers } = status {
<span class="macro">log::trace!</span>(<span class="string">"status: CFHeaders"</span>);
- <span class="ident">peer</span>.<span class="ident">get_cf_filters</span>(
- <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">get_filter_type</span>(),
- <span class="ident">start_height</span> <span class="kw">as</span> <span class="ident">u32</span>,
- <span class="ident">stop_hash</span>,
+ peer.get_cf_filters(
+ <span class="self">self</span>.cf_store.get_filter_type(),
+ start_height <span class="kw">as </span>u32,
+ stop_hash,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">expected_filters</span> <span class="op">=</span> <span class="ident">stop_height</span> <span class="op">-</span> <span class="ident">start_height</span> <span class="op">+</span> <span class="number">1</span>;
- <span class="kw">let</span> <span class="ident">filters_map</span> <span class="op">=</span> <span class="ident">process_received_filters</span>(<span class="ident">expected_filters</span>)<span class="question-mark">?</span>;
- <span class="ident">status</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">advance_to_cf_filters</span>(
- <span class="ident">index</span>,
- <span class="ident">checkpoint</span>,
- <span class="ident">cf_headers</span>,
- <span class="ident">filters_map</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>(),
+ <span class="kw">let </span>expected_filters = stop_height - start_height + <span class="number">1</span>;
+ <span class="kw">let </span>filters_map = process_received_filters(expected_filters)<span class="question-mark">?</span>;
+ status = <span class="self">self</span>.cf_store.advance_to_cf_filters(
+ index,
+ checkpoint,
+ cf_headers,
+ filters_map.into_iter().collect(),
)<span class="question-mark">?</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::CFilters</span> { <span class="ident">cf_filters</span> } <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::CFilters { cf_filters } = status {
<span class="macro">log::trace!</span>(<span class="string">"status: CFilters"</span>);
- <span class="kw">let</span> <span class="ident">last_sync_buried_height</span> <span class="op">=</span>
- (<span class="ident">start_height</span> <span class="op">+</span> <span class="ident">already_processed</span>).<span class="ident">saturating_sub</span>(<span class="ident">BURIED_CONFIRMATIONS</span>);
+ <span class="kw">let </span>last_sync_buried_height =
+ (start_height + already_processed).saturating_sub(BURIED_CONFIRMATIONS);
- <span class="kw">for</span> (<span class="ident">filter_index</span>, <span class="ident">filter</span>) <span class="kw">in</span> <span class="ident">cf_filters</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">let</span> <span class="ident">height</span> <span class="op">=</span> <span class="ident">filter_index</span> <span class="op">+</span> <span class="ident">start_height</span>;
+ <span class="kw">for </span>(filter_index, filter) <span class="kw">in </span>cf_filters.iter().enumerate() {
+ <span class="kw">let </span>height = filter_index + start_height;
- <span class="comment">// do not download blocks that were already "buried" since the last sync</span>
- <span class="kw">if</span> <span class="ident">height</span> <span class="op"><</span> <span class="ident">last_sync_buried_height</span> {
+ <span class="comment">// do not download blocks that were already "buried" since the last sync
+ </span><span class="kw">if </span>height < last_sync_buried_height {
<span class="kw">continue</span>;
}
- <span class="kw">let</span> <span class="ident">block_hash</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">headers_store</span>.<span class="ident">get_block_hash</span>(<span class="ident">height</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>();
+ <span class="kw">let </span>block_hash = <span class="self">self</span>.headers_store.get_block_hash(height)<span class="question-mark">?</span>.unwrap();
- <span class="comment">// TODO: also download random blocks?</span>
- <span class="kw">if</span> <span class="ident">process</span>(<span class="kw-2">&</span><span class="ident">block_hash</span>, <span class="kw-2">&</span><span class="ident">BlockFilter::new</span>(<span class="ident">filter</span>))<span class="question-mark">?</span> {
- <span class="macro">log::debug!</span>(<span class="string">"Downloading block {}"</span>, <span class="ident">block_hash</span>);
+ <span class="comment">// TODO: also download random blocks?
+ </span><span class="kw">if </span>process(<span class="kw-2">&</span>block_hash, <span class="kw-2">&</span>BlockFilter::new(filter))<span class="question-mark">? </span>{
+ <span class="macro">log::debug!</span>(<span class="string">"Downloading block {}"</span>, block_hash);
- <span class="kw">let</span> <span class="ident">block</span> <span class="op">=</span> <span class="ident">peer</span>
- .<span class="ident">get_block</span>(<span class="ident">block_hash</span>)<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::MissingBlock</span>)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">headers_store</span>.<span class="ident">save_full_block</span>(<span class="kw-2">&</span><span class="ident">block</span>, <span class="ident">height</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>block = peer
+ .get_block(block_hash)<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::MissingBlock)<span class="question-mark">?</span>;
+ <span class="self">self</span>.headers_store.save_full_block(<span class="kw-2">&</span>block, height)<span class="question-mark">?</span>;
}
}
- <span class="ident">status</span> <span class="op">=</span> <span class="ident">BundleStatus::Processed</span> { <span class="ident">cf_filters</span> };
+ status = BundleStatus::Processed { cf_filters };
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::Processed</span> { <span class="ident">cf_filters</span> } <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::Processed { cf_filters } = status {
<span class="macro">log::trace!</span>(<span class="string">"status: Processed"</span>);
- <span class="kw">if</span> <span class="ident">current_height</span> <span class="op">-</span> <span class="ident">stop_height</span> <span class="op">></span> <span class="number">1000</span> {
- <span class="ident">status</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">prune_filters</span>(<span class="ident">index</span>, <span class="ident">checkpoint</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="ident">status</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">cf_store</span>.<span class="ident">mark_as_tip</span>(<span class="ident">index</span>, <span class="ident">cf_filters</span>, <span class="ident">checkpoint</span>)<span class="question-mark">?</span>;
+ <span class="kw">if </span>current_height - stop_height > <span class="number">1000 </span>{
+ status = <span class="self">self</span>.cf_store.prune_filters(index, checkpoint)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ status = <span class="self">self</span>.cf_store.mark_as_tip(index, cf_filters, checkpoint)<span class="question-mark">?</span>;
}
- <span class="ident">completed_bundle</span>(<span class="ident">index</span>)<span class="question-mark">?</span>;
+ completed_bundle(index)<span class="question-mark">?</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::Pruned</span> <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::Pruned = status {
<span class="macro">log::trace!</span>(<span class="string">"status: Pruned"</span>);
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BundleStatus::Tip</span> { .. } <span class="op">=</span> <span class="ident">status</span> {
+ <span class="kw">if let </span>BundleStatus::Tip { .. } = status {
<span class="macro">log::trace!</span>(<span class="string">"status: Tip"</span>);
}
}
}
}
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">sync_headers</span><span class="op"><</span><span class="ident">F</span><span class="op">></span>(
- <span class="ident">peer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Peer</span><span class="op">></span>,
- <span class="ident">store</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Full</span><span class="op">></span><span class="op">></span>,
- <span class="ident">sync_fn</span>: <span class="ident">F</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">ChainStore</span><span class="op"><</span><span class="ident">Snapshot</span><span class="op">></span><span class="op">></span>, <span class="ident">CompactFiltersError</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">F</span>: <span class="ident">Fn</span>(<span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>,
+<span class="kw">pub fn </span>sync_headers<F>(
+ peer: Arc<Peer>,
+ store: Arc<ChainStore<Full>>,
+ sync_fn: F,
+) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><ChainStore<Snapshot>>, CompactFiltersError>
+<span class="kw">where
+ </span>F: Fn(usize) -> <span class="prelude-ty">Result</span><(), Error>,
{
- <span class="kw">let</span> <span class="ident">locators</span> <span class="op">=</span> <span class="ident">store</span>.<span class="ident">get_locators</span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">locators_vec</span> <span class="op">=</span> <span class="ident">locators</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">hash</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">hash</span>).<span class="ident">cloned</span>().<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="ident">locators_map</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">locators</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>();
+ <span class="kw">let </span>locators = store.get_locators()<span class="question-mark">?</span>;
+ <span class="kw">let </span>locators_vec = locators.iter().map(|(hash, <span class="kw">_</span>)| hash).cloned().collect();
+ <span class="kw">let </span>locators_map: HashMap<<span class="kw">_</span>, <span class="kw">_</span>> = locators.into_iter().collect();
- <span class="ident">peer</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetHeaders</span>(<span class="ident">GetHeadersMessage::new</span>(
- <span class="ident">locators_vec</span>,
- <span class="ident">Hash::all_zeros</span>(),
+ peer.send(NetworkMessage::GetHeaders(GetHeadersMessage::new(
+ locators_vec,
+ Hash::all_zeros(),
)))<span class="question-mark">?</span>;
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">snapshot</span>, <span class="kw-2">mut</span> <span class="ident">last_hash</span>) <span class="op">=</span> <span class="kw">if</span> <span class="kw">let</span> <span class="ident">NetworkMessage::Headers</span>(<span class="ident">headers</span>) <span class="op">=</span> <span class="ident">peer</span>
- .<span class="ident">recv</span>(<span class="string">"headers"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::Timeout</span>)<span class="question-mark">?</span>
- {
- <span class="kw">if</span> <span class="ident">headers</span>.<span class="ident">is_empty</span>() {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>snapshot, <span class="kw-2">mut </span>last_hash) = <span class="kw">if let </span>NetworkMessage::Headers(headers) = peer
+ .recv(<span class="string">"headers"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::Timeout)<span class="question-mark">?
+ </span>{
+ <span class="kw">if </span>headers.is_empty() {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
}
- <span class="kw">match</span> <span class="ident">locators_map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">headers</span>[<span class="number">0</span>].<span class="ident">prev_blockhash</span>) {
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidHeaders</span>),
- <span class="prelude-val">Some</span>(<span class="ident">from</span>) => (<span class="ident">store</span>.<span class="ident">start_snapshot</span>(<span class="kw-2">*</span><span class="ident">from</span>)<span class="question-mark">?</span>, <span class="ident">headers</span>[<span class="number">0</span>].<span class="ident">prev_blockhash</span>),
+ <span class="kw">match </span>locators_map.get(<span class="kw-2">&</span>headers[<span class="number">0</span>].prev_blockhash) {
+ <span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidHeaders),
+ <span class="prelude-val">Some</span>(from) => (store.start_snapshot(<span class="kw-2">*</span>from)<span class="question-mark">?</span>, headers[<span class="number">0</span>].prev_blockhash),
}
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">sync_height</span> <span class="op">=</span> <span class="ident">store</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="ident">sync_height</span> <span class="op"><</span> <span class="ident">peer</span>.<span class="ident">get_version</span>().<span class="ident">start_height</span> <span class="kw">as</span> <span class="ident">usize</span> {
- <span class="ident">peer</span>.<span class="ident">send</span>(<span class="ident">NetworkMessage::GetHeaders</span>(<span class="ident">GetHeadersMessage::new</span>(
- <span class="macro">vec!</span>[<span class="ident">last_hash</span>],
- <span class="ident">Hash::all_zeros</span>(),
+ <span class="kw">let </span><span class="kw-2">mut </span>sync_height = store.get_height()<span class="question-mark">?</span>;
+ <span class="kw">while </span>sync_height < peer.get_version().start_height <span class="kw">as </span>usize {
+ peer.send(NetworkMessage::GetHeaders(GetHeadersMessage::new(
+ <span class="macro">vec!</span>[last_hash],
+ Hash::all_zeros(),
)))<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">NetworkMessage::Headers</span>(<span class="ident">headers</span>) <span class="op">=</span> <span class="ident">peer</span>
- .<span class="ident">recv</span>(<span class="string">"headers"</span>, <span class="prelude-val">Some</span>(<span class="ident">Duration::from_secs</span>(<span class="ident">TIMEOUT_SECS</span>)))<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">CompactFiltersError::Timeout</span>)<span class="question-mark">?</span>
- {
- <span class="kw">let</span> <span class="ident">batch_len</span> <span class="op">=</span> <span class="ident">headers</span>.<span class="ident">len</span>();
- <span class="ident">last_hash</span> <span class="op">=</span> <span class="ident">snapshot</span>.<span class="ident">apply</span>(<span class="ident">sync_height</span>, <span class="ident">headers</span>)<span class="question-mark">?</span>;
-
- <span class="ident">sync_height</span> <span class="op">+</span><span class="op">=</span> <span class="ident">batch_len</span>;
- <span class="ident">sync_fn</span>(<span class="ident">sync_height</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">CompactFiltersError::InvalidResponse</span>);
+ <span class="kw">if let </span>NetworkMessage::Headers(headers) = peer
+ .recv(<span class="string">"headers"</span>, <span class="prelude-val">Some</span>(Duration::from_secs(TIMEOUT_SECS)))<span class="question-mark">?
+ </span>.ok_or(CompactFiltersError::Timeout)<span class="question-mark">?
+ </span>{
+ <span class="kw">let </span>batch_len = headers.len();
+ last_hash = snapshot.apply(sync_height, headers)<span class="question-mark">?</span>;
+
+ sync_height += batch_len;
+ sync_fn(sync_height)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(CompactFiltersError::InvalidResponse);
}
}
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">snapshot</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(snapshot))
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/electrum.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>electrum.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Electrum</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module defines a [`Blockchain`] struct that wraps an [`electrum_client::Client`]</span>
-<span class="doccomment">//! and implements the logic required to populate the wallet's [database](crate::database::Database) by</span>
-<span class="doccomment">//! querying the inner client.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bdk::blockchain::electrum::ElectrumBlockchain;</span>
-<span class="doccomment">//! let client = electrum_client::Client::new("ssl://electrum.blockstream.info:50002")?;</span>
-<span class="doccomment">//! let blockchain = ElectrumBlockchain::from(client);</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">HashMap</span>, <span class="ident">HashSet</span>};
-<span class="kw">use</span> <span class="ident">std::ops::Deref</span>;
-
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
-<span class="kw">use</span> <span class="ident">log</span>::{<span class="ident">debug</span>, <span class="ident">error</span>, <span class="ident">info</span>, <span class="ident">trace</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Transaction</span>, <span class="ident">Txid</span>};
-
-<span class="kw">use</span> <span class="ident">electrum_client</span>::{<span class="ident">Client</span>, <span class="ident">ConfigBuilder</span>, <span class="ident">ElectrumApi</span>, <span class="ident">Socks5Config</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::script_sync::Request</span>;
-<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">Database</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">BlockTime</span>, <span class="ident">FeeRate</span>};
-
-<span class="doccomment">/// Wrapper over an Electrum Client that implements the required blockchain traits</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">/// See the [`blockchain::electrum`](crate::blockchain::electrum) module for a usage example.</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="ident">client</span>: <span class="ident">Client</span>,
- <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/electrum.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>electrum.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Electrum
+//!
+//! This module defines a [`Blockchain`] struct that wraps an [`electrum_client::Client`]
+//! and implements the logic required to populate the wallet's [database](crate::database::Database) by
+//! querying the inner client.
+//!
+//! ## Example
+//!
+//! ```no_run
+//! # use bdk::blockchain::electrum::ElectrumBlockchain;
+//! let client = electrum_client::Client::new("ssl://electrum.blockstream.info:50002")?;
+//! let blockchain = ElectrumBlockchain::from(client);
+//! # Ok::<(), bdk::Error>(())
+//! ```
+
+</span><span class="kw">use </span>std::collections::{HashMap, HashSet};
+<span class="kw">use </span>std::ops::Deref;
+
+<span class="attr">#[allow(unused_imports)]
+</span><span class="kw">use </span>log::{debug, error, info, trace};
+
+<span class="kw">use </span>bitcoin::{Transaction, Txid};
+
+<span class="kw">use </span>electrum_client::{Client, ConfigBuilder, ElectrumApi, Socks5Config};
+
+<span class="kw">use </span><span class="kw">super</span>::script_sync::Request;
+<span class="kw">use super</span>::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::database::{BatchDatabase, Database};
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use crate</span>::{BlockTime, FeeRate};
+
+<span class="doccomment">/// Wrapper over an Electrum Client that implements the required blockchain traits
+///
+/// ## Example
+/// See the [`blockchain::electrum`](crate::blockchain::electrum) module for a usage example.
+</span><span class="kw">pub struct </span>ElectrumBlockchain {
+ client: Client,
+ stop_gap: usize,
}
-<span class="kw">impl</span> <span class="ident">std::convert::From</span><span class="op"><</span><span class="ident">Client</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">client</span>: <span class="ident">Client</span>) -> <span class="self">Self</span> {
- <span class="ident">ElectrumBlockchain</span> {
- <span class="ident">client</span>,
- <span class="ident">stop_gap</span>: <span class="number">20</span>,
+<span class="kw">impl </span>std::convert::From<Client> <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">fn </span>from(client: Client) -> <span class="self">Self </span>{
+ ElectrumBlockchain {
+ client,
+ stop_gap: <span class="number">20</span>,
}
}
}
-<span class="kw">impl</span> <span class="ident">Blockchain</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span> {
+<span class="kw">impl </span>Blockchain <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability> {
<span class="macro">vec!</span>[
- <span class="ident">Capability::FullHistory</span>,
- <span class="ident">Capability::GetAnyTx</span>,
- <span class="ident">Capability::AccurateFees</span>,
+ Capability::FullHistory,
+ Capability::GetAnyTx,
+ Capability::AccurateFees,
]
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>()
+ .into_iter()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">transaction_broadcast</span>(<span class="ident">tx</span>).<span class="ident">map</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> ())<span class="question-mark">?</span>)
+ <span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.client.transaction_broadcast(tx).map(|<span class="kw">_</span>| ())<span class="question-mark">?</span>)
}
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">FeeRate::from_btc_per_kvb</span>(
- <span class="self">self</span>.<span class="ident">client</span>.<span class="ident">estimate_fee</span>(<span class="ident">target</span>)<span class="question-mark">?</span> <span class="kw">as</span> <span class="ident">f32</span>
+ <span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error> {
+ <span class="prelude-val">Ok</span>(FeeRate::from_btc_per_kvb(
+ <span class="self">self</span>.client.estimate_fee(target)<span class="question-mark">? </span><span class="kw">as </span>f32
))
}
}
-<span class="kw">impl</span> <span class="ident">Deref</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Target</span> <span class="op">=</span> <span class="ident">Client</span>;
+<span class="kw">impl </span>Deref <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">type </span>Target = Client;
- <span class="kw">fn</span> <span class="ident">deref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Target</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">client</span>
+ <span class="kw">fn </span>deref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="self">Self</span>::Target {
+ <span class="kw-2">&</span><span class="self">self</span>.client
}
}
-<span class="kw">impl</span> <span class="ident">StatelessBlockchain</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {}
+<span class="kw">impl </span>StatelessBlockchain <span class="kw">for </span>ElectrumBlockchain {}
-<span class="kw">impl</span> <span class="ident">GetHeight</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// TODO: unsubscribe when added to the client, or is there a better call to use here?</span>
+<span class="kw">impl </span>GetHeight <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="comment">// TODO: unsubscribe when added to the client, or is there a better call to use here?
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">client</span>
- .<span class="ident">block_headers_subscribe</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> <span class="ident">data</span>.<span class="ident">height</span> <span class="kw">as</span> <span class="ident">u32</span>)<span class="question-mark">?</span>)
+ </span><span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.client
+ .block_headers_subscribe()
+ .map(|data| data.height <span class="kw">as </span>u32)<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">transaction_get</span>(<span class="ident">txid</span>).<span class="ident">map</span>(<span class="ident">Option::Some</span>)<span class="question-mark">?</span>)
+<span class="kw">impl </span>GetTx <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.client.transaction_get(txid).map(Option::Some)<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">GetBlockHash</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">block_header</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">client</span>.<span class="ident">block_header</span>(<span class="ident">height</span> <span class="kw">as</span> <span class="ident">usize</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">block_header</span>.<span class="ident">block_hash</span>())
+<span class="kw">impl </span>GetBlockHash <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error> {
+ <span class="kw">let </span>block_header = <span class="self">self</span>.client.block_header(height <span class="kw">as </span>usize)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(block_header.block_hash())
}
}
-<span class="kw">impl</span> <span class="ident">WalletSync</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+<span class="kw">impl </span>WalletSync <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">fn </span>wallet_setup<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">_progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">request</span> <span class="op">=</span> <span class="ident">script_sync::start</span>(<span class="ident">database</span>, <span class="self">self</span>.<span class="ident">stop_gap</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">block_times</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="op"><</span><span class="ident">u32</span>, <span class="ident">u32</span><span class="op">></span><span class="ident">::new</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">txid_to_height</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="op"><</span><span class="ident">Txid</span>, <span class="ident">u32</span><span class="op">></span><span class="ident">::new</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_cache</span> <span class="op">=</span> <span class="ident">TxCache::new</span>(<span class="ident">database</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">client</span>);
-
- <span class="comment">// Set chunk_size to the smallest value capable of finding a gap greater than stop_gap.</span>
- <span class="kw">let</span> <span class="ident">chunk_size</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">stop_gap</span> <span class="op">+</span> <span class="number">1</span>;
-
- <span class="comment">// The electrum server has been inconsistent somehow in its responses during sync. For</span>
- <span class="comment">// example, we do a batch request of transactions and the response contains less</span>
- <span class="comment">// tranascations than in the request. This should never happen but we don't want to panic.</span>
- <span class="kw">let</span> <span class="ident">electrum_goof</span> <span class="op">=</span> <span class="op">|</span><span class="op">|</span> <span class="ident">Error::Generic</span>(<span class="string">"electrum server misbehaving"</span>.<span class="ident">to_string</span>());
-
- <span class="kw">let</span> <span class="ident">batch_update</span> <span class="op">=</span> <span class="kw">loop</span> {
- <span class="ident">request</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">request</span> {
- <span class="ident">Request::Script</span>(<span class="ident">script_req</span>) => {
- <span class="kw">let</span> <span class="ident">scripts</span> <span class="op">=</span> <span class="ident">script_req</span>.<span class="ident">request</span>().<span class="ident">take</span>(<span class="ident">chunk_size</span>);
- <span class="kw">let</span> <span class="ident">txids_per_script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">client</span>
- .<span class="ident">batch_script_get_history</span>(<span class="ident">scripts</span>)
- .<span class="ident">map_err</span>(<span class="ident">Error::Electrum</span>)<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txs</span><span class="op">|</span> {
- <span class="ident">txs</span>.<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">tx_height</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">tx</span>.<span class="ident">height</span> {
- <span class="ident">none</span> <span class="kw">if</span> <span class="ident">none</span> <span class="op"><</span><span class="op">=</span> <span class="number">0</span> => <span class="prelude-val">None</span>,
- <span class="ident">height</span> => {
- <span class="ident">txid_to_height</span>.<span class="ident">insert</span>(<span class="ident">tx</span>.<span class="ident">tx_hash</span>, <span class="ident">height</span> <span class="kw">as</span> <span class="ident">u32</span>);
- <span class="prelude-val">Some</span>(<span class="ident">height</span> <span class="kw">as</span> <span class="ident">u32</span>)
+ database: <span class="kw-2">&mut </span>D,
+ _progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>request = script_sync::start(database, <span class="self">self</span>.stop_gap)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>block_times = HashMap::<u32, u32>::new();
+ <span class="kw">let </span><span class="kw-2">mut </span>txid_to_height = HashMap::<Txid, u32>::new();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx_cache = TxCache::new(database, <span class="kw-2">&</span><span class="self">self</span>.client);
+
+ <span class="comment">// Set chunk_size to the smallest value capable of finding a gap greater than stop_gap.
+ </span><span class="kw">let </span>chunk_size = <span class="self">self</span>.stop_gap + <span class="number">1</span>;
+
+ <span class="comment">// The electrum server has been inconsistent somehow in its responses during sync. For
+ // example, we do a batch request of transactions and the response contains less
+ // tranascations than in the request. This should never happen but we don't want to panic.
+ </span><span class="kw">let </span>electrum_goof = || Error::Generic(<span class="string">"electrum server misbehaving"</span>.to_string());
+
+ <span class="kw">let </span>batch_update = <span class="kw">loop </span>{
+ request = <span class="kw">match </span>request {
+ Request::Script(script_req) => {
+ <span class="kw">let </span>scripts = script_req.request().take(chunk_size);
+ <span class="kw">let </span>txids_per_script: Vec<Vec<<span class="kw">_</span>>> = <span class="self">self
+ </span>.client
+ .batch_script_get_history(scripts)
+ .map_err(Error::Electrum)<span class="question-mark">?
+ </span>.into_iter()
+ .map(|txs| {
+ txs.into_iter()
+ .map(|tx| {
+ <span class="kw">let </span>tx_height = <span class="kw">match </span>tx.height {
+ none <span class="kw">if </span>none <= <span class="number">0 </span>=> <span class="prelude-val">None</span>,
+ height => {
+ txid_to_height.insert(tx.tx_hash, height <span class="kw">as </span>u32);
+ <span class="prelude-val">Some</span>(height <span class="kw">as </span>u32)
}
};
- (<span class="ident">tx</span>.<span class="ident">tx_hash</span>, <span class="ident">tx_height</span>)
+ (tx.tx_hash, tx_height)
})
- .<span class="ident">collect</span>()
+ .collect()
})
- .<span class="ident">collect</span>();
-
- <span class="ident">script_req</span>.<span class="ident">satisfy</span>(<span class="ident">txids_per_script</span>)<span class="question-mark">?</span>
- }
-
- <span class="ident">Request::Conftime</span>(<span class="ident">conftime_req</span>) => {
- <span class="comment">// collect up to chunk_size heights to fetch from electrum</span>
- <span class="kw">let</span> <span class="ident">needs_block_height</span> <span class="op">=</span> <span class="ident">conftime_req</span>
- .<span class="ident">request</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> <span class="ident">txid_to_height</span>.<span class="ident">get</span>(<span class="ident">txid</span>).<span class="ident">cloned</span>())
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">height</span><span class="op">|</span> <span class="ident">block_times</span>.<span class="ident">get</span>(<span class="ident">height</span>).<span class="ident">is_none</span>())
- .<span class="ident">take</span>(<span class="ident">chunk_size</span>)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">HashSet</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span><span class="op">></span>();
-
- <span class="kw">let</span> <span class="ident">new_block_headers</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">client</span>
- .<span class="ident">batch_block_header</span>(<span class="ident">needs_block_height</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>())<span class="question-mark">?</span>;
-
- <span class="kw">for</span> (<span class="ident">height</span>, <span class="ident">header</span>) <span class="kw">in</span> <span class="ident">needs_block_height</span>.<span class="ident">into_iter</span>().<span class="ident">zip</span>(<span class="ident">new_block_headers</span>) {
- <span class="ident">block_times</span>.<span class="ident">insert</span>(<span class="ident">height</span>, <span class="ident">header</span>.<span class="ident">time</span>);
+ .collect();
+
+ script_req.satisfy(txids_per_script)<span class="question-mark">?
+ </span>}
+
+ Request::Conftime(conftime_req) => {
+ <span class="comment">// collect up to chunk_size heights to fetch from electrum
+ </span><span class="kw">let </span>needs_block_height = conftime_req
+ .request()
+ .filter_map(|txid| txid_to_height.get(txid).cloned())
+ .filter(|height| block_times.get(height).is_none())
+ .take(chunk_size)
+ .collect::<HashSet<u32>>();
+
+ <span class="kw">let </span>new_block_headers = <span class="self">self
+ </span>.client
+ .batch_block_header(needs_block_height.iter().cloned())<span class="question-mark">?</span>;
+
+ <span class="kw">for </span>(height, header) <span class="kw">in </span>needs_block_height.into_iter().zip(new_block_headers) {
+ block_times.insert(height, header.time);
}
- <span class="kw">let</span> <span class="ident">conftimes</span> <span class="op">=</span> <span class="ident">conftime_req</span>
- .<span class="ident">request</span>()
- .<span class="ident">take</span>(<span class="ident">chunk_size</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="ident">txid_to_height</span>
- .<span class="ident">get</span>(<span class="ident">txid</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">height</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">timestamp</span> <span class="op">=</span>
- <span class="kw-2">*</span><span class="ident">block_times</span>.<span class="ident">get</span>(<span class="ident">height</span>).<span class="ident">ok_or_else</span>(<span class="ident">electrum_goof</span>)<span class="question-mark">?</span>;
- <span class="prelude-ty">Result</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span><span class="ident">::Ok</span>(<span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="kw-2">*</span><span class="ident">height</span>,
- <span class="ident">timestamp</span>: <span class="ident">timestamp</span>.<span class="ident">into</span>(),
+ <span class="kw">let </span>conftimes = conftime_req
+ .request()
+ .take(chunk_size)
+ .map(|txid| {
+ <span class="kw">let </span>confirmation_time = txid_to_height
+ .get(txid)
+ .map(|height| {
+ <span class="kw">let </span>timestamp =
+ <span class="kw-2">*</span>block_times.get(height).ok_or_else(electrum_goof)<span class="question-mark">?</span>;
+ <span class="prelude-ty">Result</span>::<<span class="kw">_</span>, Error>::Ok(BlockTime {
+ height: <span class="kw-2">*</span>height,
+ timestamp: timestamp.into(),
})
})
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">confirmation_time</span>)
+ .transpose()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(confirmation_time)
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="ident">conftime_req</span>.<span class="ident">satisfy</span>(<span class="ident">conftimes</span>)<span class="question-mark">?</span>
- }
- <span class="ident">Request::Tx</span>(<span class="ident">tx_req</span>) => {
- <span class="kw">let</span> <span class="ident">needs_full</span> <span class="op">=</span> <span class="ident">tx_req</span>.<span class="ident">request</span>().<span class="ident">take</span>(<span class="ident">chunk_size</span>);
- <span class="ident">tx_cache</span>.<span class="ident">save_txs</span>(<span class="ident">needs_full</span>.<span class="ident">clone</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">full_transactions</span> <span class="op">=</span> <span class="ident">needs_full</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> <span class="ident">tx_cache</span>.<span class="ident">get</span>(<span class="kw-2">*</span><span class="ident">txid</span>).<span class="ident">ok_or_else</span>(<span class="ident">electrum_goof</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">input_txs</span> <span class="op">=</span> <span class="ident">full_transactions</span>.<span class="ident">iter</span>().<span class="ident">flat_map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> {
- <span class="ident">tx</span>.<span class="ident">input</span>
- .<span class="ident">iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> <span class="op">!</span><span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">is_null</span>())
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> <span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>)
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, Error>>()<span class="question-mark">?</span>;
+
+ conftime_req.satisfy(conftimes)<span class="question-mark">?
+ </span>}
+ Request::Tx(tx_req) => {
+ <span class="kw">let </span>needs_full = tx_req.request().take(chunk_size);
+ tx_cache.save_txs(needs_full.clone())<span class="question-mark">?</span>;
+ <span class="kw">let </span>full_transactions = needs_full
+ .map(|txid| tx_cache.get(<span class="kw-2">*</span>txid).ok_or_else(electrum_goof))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+ <span class="kw">let </span>input_txs = full_transactions.iter().flat_map(|tx| {
+ tx.input
+ .iter()
+ .filter(|input| !input.previous_output.is_null())
+ .map(|input| <span class="kw-2">&</span>input.previous_output.txid)
});
- <span class="ident">tx_cache</span>.<span class="ident">save_txs</span>(<span class="ident">input_txs</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">full_details</span> <span class="op">=</span> <span class="ident">full_transactions</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">input_index</span> <span class="op">=</span> <span class="number">0usize</span>;
- <span class="kw">let</span> <span class="ident">prev_outputs</span> <span class="op">=</span> <span class="ident">tx</span>
- .<span class="ident">input</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">is_null</span>() {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+ tx_cache.save_txs(input_txs)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>full_details = full_transactions
+ .into_iter()
+ .map(|tx| {
+ <span class="kw">let </span><span class="kw-2">mut </span>input_index = <span class="number">0usize</span>;
+ <span class="kw">let </span>prev_outputs = tx
+ .input
+ .iter()
+ .map(|input| {
+ <span class="kw">if </span>input.previous_output.is_null() {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
}
- <span class="kw">let</span> <span class="ident">prev_tx</span> <span class="op">=</span> <span class="ident">tx_cache</span>
- .<span class="ident">get</span>(<span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>)
- .<span class="ident">ok_or_else</span>(<span class="ident">electrum_goof</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">prev_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">get</span>(<span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">ok_or_else</span>(<span class="ident">electrum_goof</span>)<span class="question-mark">?</span>;
- <span class="ident">input_index</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">txout</span>.<span class="ident">clone</span>()))
+ <span class="kw">let </span>prev_tx = tx_cache
+ .get(input.previous_output.txid)
+ .ok_or_else(electrum_goof)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txout = prev_tx
+ .output
+ .get(input.previous_output.vout <span class="kw">as </span>usize)
+ .ok_or_else(electrum_goof)<span class="question-mark">?</span>;
+ input_index += <span class="number">1</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(txout.clone()))
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">prev_outputs</span>, <span class="ident">tx</span>))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, Error>>()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>((prev_outputs, tx))
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, Error>>()<span class="question-mark">?</span>;
- <span class="ident">tx_req</span>.<span class="ident">satisfy</span>(<span class="ident">full_details</span>)<span class="question-mark">?</span>
- }
- <span class="ident">Request::Finish</span>(<span class="ident">batch_update</span>) => <span class="kw">break</span> <span class="ident">batch_update</span>,
+ tx_req.satisfy(full_details)<span class="question-mark">?
+ </span>}
+ Request::Finish(batch_update) => <span class="kw">break </span>batch_update,
}
};
- <span class="ident">database</span>.<span class="ident">commit_batch</span>(<span class="ident">batch_update</span>)<span class="question-mark">?</span>;
+ database.commit_batch(batch_update)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">struct</span> <span class="ident">TxCache</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="lifetime">'b</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="ident">db</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">D</span>,
- <span class="ident">client</span>: <span class="kw-2">&</span><span class="lifetime">'b</span> <span class="ident">Client</span>,
- <span class="ident">cache</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">Txid</span>, <span class="ident">Transaction</span><span class="op">></span>,
+<span class="kw">struct </span>TxCache<<span class="lifetime">'a</span>, <span class="lifetime">'b</span>, D> {
+ db: <span class="kw-2">&</span><span class="lifetime">'a </span>D,
+ client: <span class="kw-2">&</span><span class="lifetime">'b </span>Client,
+ cache: HashMap<Txid, Transaction>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="lifetime">'b</span>, <span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span> <span class="ident">TxCache</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="lifetime">'b</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">db</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">D</span>, <span class="ident">client</span>: <span class="kw-2">&</span><span class="lifetime">'b</span> <span class="ident">Client</span>) -> <span class="self">Self</span> {
- <span class="ident">TxCache</span> {
- <span class="ident">db</span>,
- <span class="ident">client</span>,
- <span class="ident">cache</span>: <span class="ident">HashMap::default</span>(),
+<span class="kw">impl</span><<span class="lifetime">'a</span>, <span class="lifetime">'b</span>, D: Database> TxCache<<span class="lifetime">'a</span>, <span class="lifetime">'b</span>, D> {
+ <span class="kw">fn </span>new(db: <span class="kw-2">&</span><span class="lifetime">'a </span>D, client: <span class="kw-2">&</span><span class="lifetime">'b </span>Client) -> <span class="self">Self </span>{
+ TxCache {
+ db,
+ client,
+ cache: HashMap::default(),
}
}
- <span class="kw">fn</span> <span class="ident">save_txs</span><span class="op"><</span><span class="lifetime">'c</span><span class="op">></span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txids</span>: <span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&</span><span class="lifetime">'c</span> <span class="ident">Txid</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">need_fetch</span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">for</span> <span class="ident">txid</span> <span class="kw">in</span> <span class="ident">txids</span> {
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">cache</span>.<span class="ident">get</span>(<span class="ident">txid</span>).<span class="ident">is_some</span>() {
+ <span class="kw">fn </span>save_txs<<span class="lifetime">'c</span>>(<span class="kw-2">&mut </span><span class="self">self</span>, txids: <span class="kw">impl </span>Iterator<Item = <span class="kw-2">&</span><span class="lifetime">'c </span>Txid>) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>need_fetch = <span class="macro">vec!</span>[];
+ <span class="kw">for </span>txid <span class="kw">in </span>txids {
+ <span class="kw">if </span><span class="self">self</span>.cache.get(txid).is_some() {
<span class="kw">continue</span>;
- } <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">transaction</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="self">self</span>.<span class="ident">cache</span>.<span class="ident">insert</span>(<span class="kw-2">*</span><span class="ident">txid</span>, <span class="ident">transaction</span>);
- } <span class="kw">else</span> {
- <span class="ident">need_fetch</span>.<span class="ident">push</span>(<span class="ident">txid</span>);
+ } <span class="kw">else if let </span><span class="prelude-val">Some</span>(transaction) = <span class="self">self</span>.db.get_raw_tx(txid)<span class="question-mark">? </span>{
+ <span class="self">self</span>.cache.insert(<span class="kw-2">*</span>txid, transaction);
+ } <span class="kw">else </span>{
+ need_fetch.push(txid);
}
}
- <span class="kw">if</span> <span class="op">!</span><span class="ident">need_fetch</span>.<span class="ident">is_empty</span>() {
- <span class="kw">let</span> <span class="ident">txs</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">client</span>
- .<span class="ident">batch_transaction_get</span>(<span class="ident">need_fetch</span>.<span class="ident">clone</span>())
- .<span class="ident">map_err</span>(<span class="ident">Error::Electrum</span>)<span class="question-mark">?</span>;
- <span class="kw">for</span> (<span class="ident">tx</span>, <span class="ident">_txid</span>) <span class="kw">in</span> <span class="ident">txs</span>.<span class="ident">into_iter</span>().<span class="ident">zip</span>(<span class="ident">need_fetch</span>) {
- <span class="macro">debug_assert_eq!</span>(<span class="kw-2">*</span><span class="ident">_txid</span>, <span class="ident">tx</span>.<span class="ident">txid</span>());
- <span class="self">self</span>.<span class="ident">cache</span>.<span class="ident">insert</span>(<span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="ident">tx</span>);
+ <span class="kw">if </span>!need_fetch.is_empty() {
+ <span class="kw">let </span>txs = <span class="self">self
+ </span>.client
+ .batch_transaction_get(need_fetch.clone())
+ .map_err(Error::Electrum)<span class="question-mark">?</span>;
+ <span class="kw">for </span>(tx, _txid) <span class="kw">in </span>txs.into_iter().zip(need_fetch) {
+ <span class="macro">debug_assert_eq!</span>(<span class="kw-2">*</span>_txid, tx.txid());
+ <span class="self">self</span>.cache.insert(tx.txid(), tx);
}
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="ident">Txid</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">cache</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">txid</span>).<span class="ident">map</span>(<span class="ident">Clone::clone</span>)
+ <span class="kw">fn </span>get(<span class="kw-2">&</span><span class="self">self</span>, txid: Txid) -> <span class="prelude-ty">Option</span><Transaction> {
+ <span class="self">self</span>.cache.get(<span class="kw-2">&</span>txid).map(Clone::clone)
}
}
-<span class="doccomment">/// Configuration for an [`ElectrumBlockchain`]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Deserialize</span>, <span class="ident">serde::Serialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ElectrumBlockchainConfig</span> {
- <span class="doccomment">/// URL of the Electrum server (such as ElectrumX, Esplora, BWT) may start with `ssl://` or `tcp://` and include a port</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// eg. `ssl://electrum.blockstream.info:60002`</span>
- <span class="kw">pub</span> <span class="ident">url</span>: <span class="ident">String</span>,
- <span class="doccomment">/// URL of the socks5 proxy server or a Tor service</span>
- <span class="kw">pub</span> <span class="ident">socks5</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
- <span class="doccomment">/// Request retry count</span>
- <span class="kw">pub</span> <span class="ident">retry</span>: <span class="ident">u8</span>,
- <span class="doccomment">/// Request timeout (seconds)</span>
- <span class="kw">pub</span> <span class="ident">timeout</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>,
- <span class="doccomment">/// Stop searching addresses for transactions after finding an unused gap of this length</span>
- <span class="kw">pub</span> <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
+<span class="doccomment">/// Configuration for an [`ElectrumBlockchain`]
+</span><span class="attr">#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>ElectrumBlockchainConfig {
+ <span class="doccomment">/// URL of the Electrum server (such as ElectrumX, Esplora, BWT) may start with `ssl://` or `tcp://` and include a port
+ ///
+ /// eg. `ssl://electrum.blockstream.info:60002`
+ </span><span class="kw">pub </span>url: String,
+ <span class="doccomment">/// URL of the socks5 proxy server or a Tor service
+ </span><span class="kw">pub </span>socks5: <span class="prelude-ty">Option</span><String>,
+ <span class="doccomment">/// Request retry count
+ </span><span class="kw">pub </span>retry: u8,
+ <span class="doccomment">/// Request timeout (seconds)
+ </span><span class="kw">pub </span>timeout: <span class="prelude-ty">Option</span><u8>,
+ <span class="doccomment">/// Stop searching addresses for transactions after finding an unused gap of this length
+ </span><span class="kw">pub </span>stop_gap: usize,
}
-<span class="kw">impl</span> <span class="ident">ConfigurableBlockchain</span> <span class="kw">for</span> <span class="ident">ElectrumBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">ElectrumBlockchainConfig</span>;
+<span class="kw">impl </span>ConfigurableBlockchain <span class="kw">for </span>ElectrumBlockchain {
+ <span class="kw">type </span>Config = ElectrumBlockchainConfig;
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">socks5</span> <span class="op">=</span> <span class="ident">config</span>.<span class="ident">socks5</span>.<span class="ident">as_ref</span>().<span class="ident">map</span>(<span class="ident">Socks5Config::new</span>);
- <span class="kw">let</span> <span class="ident">electrum_config</span> <span class="op">=</span> <span class="ident">ConfigBuilder::new</span>()
- .<span class="ident">retry</span>(<span class="ident">config</span>.<span class="ident">retry</span>)
- .<span class="ident">timeout</span>(<span class="ident">config</span>.<span class="ident">timeout</span>)<span class="question-mark">?</span>
- .<span class="ident">socks5</span>(<span class="ident">socks5</span>)<span class="question-mark">?</span>
- .<span class="ident">build</span>();
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="kw">let </span>socks5 = config.socks5.as_ref().map(Socks5Config::new);
+ <span class="kw">let </span>electrum_config = ConfigBuilder::new()
+ .retry(config.retry)
+ .timeout(config.timeout)<span class="question-mark">?
+ </span>.socks5(socks5)<span class="question-mark">?
+ </span>.build();
- <span class="prelude-val">Ok</span>(<span class="ident">ElectrumBlockchain</span> {
- <span class="ident">client</span>: <span class="ident">Client::from_config</span>(<span class="ident">config</span>.<span class="ident">url</span>.<span class="ident">as_str</span>(), <span class="ident">electrum_config</span>)<span class="question-mark">?</span>,
- <span class="ident">stop_gap</span>: <span class="ident">config</span>.<span class="ident">stop_gap</span>,
+ <span class="prelude-val">Ok</span>(ElectrumBlockchain {
+ client: Client::from_config(config.url.as_str(), electrum_config)<span class="question-mark">?</span>,
+ stop_gap: config.stop_gap,
})
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-electrum"</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
+<span class="attr">#[cfg(test)]
+#[cfg(feature = <span class="string">"test-electrum"</span>)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>std::sync::Arc;
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::MemoryDatabase</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::testutils::blockchain_tests::TestClient</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::testutils::configurable_blockchain_tests::ConfigurableBlockchainTester</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet</span>::{<span class="ident">AddressIndex</span>, <span class="ident">Wallet</span>};
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::database::MemoryDatabase;
+ <span class="kw">use </span><span class="kw">crate</span>::testutils::blockchain_tests::TestClient;
+ <span class="kw">use </span><span class="kw">crate</span>::testutils::configurable_blockchain_tests::ConfigurableBlockchainTester;
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::{AddressIndex, Wallet};
- <span class="macro">crate::bdk_blockchain_tests!</span> {
- <span class="kw">fn</span> <span class="ident">test_instance</span>(<span class="ident">test_client</span>: <span class="kw-2">&</span><span class="ident">TestClient</span>) -> <span class="ident">ElectrumBlockchain</span> {
- <span class="ident">ElectrumBlockchain::from</span>(<span class="ident">Client::new</span>(<span class="kw-2">&</span><span class="ident">test_client</span>.<span class="ident">electrsd</span>.<span class="ident">electrum_url</span>).<span class="ident">unwrap</span>())
+ <span class="macro">crate::bdk_blockchain_tests! </span>{
+ <span class="kw">fn </span>test_instance(test_client: <span class="kw-2">&</span>TestClient) -> ElectrumBlockchain {
+ ElectrumBlockchain::from(Client::new(<span class="kw-2">&</span>test_client.electrsd.electrum_url).unwrap())
}
}
- <span class="kw">fn</span> <span class="ident">get_factory</span>() -> (<span class="ident">TestClient</span>, <span class="ident">Arc</span><span class="op"><</span><span class="ident">ElectrumBlockchain</span><span class="op">></span>) {
- <span class="kw">let</span> <span class="ident">test_client</span> <span class="op">=</span> <span class="ident">TestClient::default</span>();
+ <span class="kw">fn </span>get_factory() -> (TestClient, Arc<ElectrumBlockchain>) {
+ <span class="kw">let </span>test_client = TestClient::default();
- <span class="kw">let</span> <span class="ident">factory</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">ElectrumBlockchain::from</span>(
- <span class="ident">Client::new</span>(<span class="kw-2">&</span><span class="ident">test_client</span>.<span class="ident">electrsd</span>.<span class="ident">electrum_url</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>factory = Arc::new(ElectrumBlockchain::from(
+ Client::new(<span class="kw-2">&</span>test_client.electrsd.electrum_url).unwrap(),
));
- (<span class="ident">test_client</span>, <span class="ident">factory</span>)
+ (test_client, factory)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_electrum_blockchain_factory</span>() {
- <span class="kw">let</span> (<span class="ident">_test_client</span>, <span class="ident">factory</span>) <span class="op">=</span> <span class="ident">get_factory</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_electrum_blockchain_factory() {
+ <span class="kw">let </span>(_test_client, factory) = get_factory();
- <span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> <span class="ident">factory</span>.<span class="ident">build</span>(<span class="string">"aaaaaa"</span>, <span class="prelude-val">None</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">b</span> <span class="op">=</span> <span class="ident">factory</span>.<span class="ident">build</span>(<span class="string">"bbbbbb"</span>, <span class="prelude-val">None</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>a = factory.build(<span class="string">"aaaaaa"</span>, <span class="prelude-val">None</span>).unwrap();
+ <span class="kw">let </span>b = factory.build(<span class="string">"bbbbbb"</span>, <span class="prelude-val">None</span>).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">a</span>.<span class="ident">client</span>.<span class="ident">block_headers_subscribe</span>().<span class="ident">unwrap</span>().<span class="ident">height</span>,
- <span class="ident">b</span>.<span class="ident">client</span>.<span class="ident">block_headers_subscribe</span>().<span class="ident">unwrap</span>().<span class="ident">height</span>
+ a.client.block_headers_subscribe().unwrap().height,
+ b.client.block_headers_subscribe().unwrap().height
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_electrum_blockchain_factory_sync_wallet</span>() {
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">test_client</span>, <span class="ident">factory</span>) <span class="op">=</span> <span class="ident">get_factory</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_electrum_blockchain_factory_sync_wallet() {
+ <span class="kw">let </span>(<span class="kw-2">mut </span>test_client, factory) = get_factory();
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh(L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6)"</span>,
<span class="prelude-val">None</span>,
- <span class="ident">bitcoin::Network::Regtest</span>,
- <span class="ident">db</span>,
+ bitcoin::Network::Regtest,
+ db,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">address</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>address = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="macro">testutils!</span> {
- @<span class="ident">tx</span> ( (@<span class="ident">addr</span> <span class="ident">address</span>.<span class="ident">address</span>) => <span class="number">50_000</span> )
+ <span class="kw">let </span>tx = <span class="macro">testutils! </span>{
+ @tx ( (@addr address.address) => <span class="number">50_000 </span>)
};
- <span class="ident">test_client</span>.<span class="ident">receive</span>(<span class="ident">tx</span>);
+ test_client.receive(tx);
- <span class="ident">factory</span>
- .<span class="ident">sync_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="prelude-val">None</span>, <span class="ident">Default::default</span>())
- .<span class="ident">unwrap</span>();
+ factory
+ .sync_wallet(<span class="kw-2">&</span>wallet, <span class="prelude-val">None</span>, Default::default())
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_balance</span>().<span class="ident">unwrap</span>().<span class="ident">untrusted_pending</span>, <span class="number">50_000</span>);
+ <span class="macro">assert_eq!</span>(wallet.get_balance().unwrap().untrusted_pending, <span class="number">50_000</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_electrum_with_variable_configs</span>() {
- <span class="kw">struct</span> <span class="ident">ElectrumTester</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_electrum_with_variable_configs() {
+ <span class="kw">struct </span>ElectrumTester;
- <span class="kw">impl</span> <span class="ident">ConfigurableBlockchainTester</span><span class="op"><</span><span class="ident">ElectrumBlockchain</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ElectrumTester</span> {
- <span class="kw">const</span> <span class="ident">BLOCKCHAIN_NAME</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> <span class="op">=</span> <span class="string">"Electrum"</span>;
+ <span class="kw">impl </span>ConfigurableBlockchainTester<ElectrumBlockchain> <span class="kw">for </span>ElectrumTester {
+ <span class="kw">const </span>BLOCKCHAIN_NAME: <span class="kw-2">&</span><span class="lifetime">'static </span>str = <span class="string">"Electrum"</span>;
- <span class="kw">fn</span> <span class="ident">config_with_stop_gap</span>(
+ <span class="kw">fn </span>config_with_stop_gap(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">test_client</span>: <span class="kw-2">&mut</span> <span class="ident">TestClient</span>,
- <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">ElectrumBlockchainConfig</span><span class="op">></span> {
- <span class="prelude-val">Some</span>(<span class="ident">ElectrumBlockchainConfig</span> {
- <span class="ident">url</span>: <span class="ident">test_client</span>.<span class="ident">electrsd</span>.<span class="ident">electrum_url</span>.<span class="ident">clone</span>(),
- <span class="ident">socks5</span>: <span class="prelude-val">None</span>,
- <span class="ident">retry</span>: <span class="number">0</span>,
- <span class="ident">timeout</span>: <span class="prelude-val">None</span>,
- <span class="ident">stop_gap</span>: <span class="ident">stop_gap</span>,
+ test_client: <span class="kw-2">&mut </span>TestClient,
+ stop_gap: usize,
+ ) -> <span class="prelude-ty">Option</span><ElectrumBlockchainConfig> {
+ <span class="prelude-val">Some</span>(ElectrumBlockchainConfig {
+ url: test_client.electrsd.electrum_url.clone(),
+ socks5: <span class="prelude-val">None</span>,
+ retry: <span class="number">0</span>,
+ timeout: <span class="prelude-val">None</span>,
+ stop_gap: stop_gap,
})
}
}
- <span class="ident">ElectrumTester</span>.<span class="ident">run</span>();
+ ElectrumTester.run();
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/esplora/blocking.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>blocking.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../../storage.js"></script><script src="../../../../crates.js"></script><script defer src="../../../../main.js"></script><script defer src="../../../../source-script.js"></script><script defer src="../../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Esplora by way of `ureq` HTTP client.</span>
-
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">HashMap</span>, <span class="ident">HashSet</span>};
-
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
-<span class="kw">use</span> <span class="ident">log</span>::{<span class="ident">debug</span>, <span class="ident">error</span>, <span class="ident">info</span>, <span class="ident">trace</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Transaction</span>, <span class="ident">Txid</span>};
-
-<span class="kw">use</span> <span class="ident">esplora_client</span>::{<span class="ident">convert_fee_rate</span>, <span class="ident">BlockingClient</span>, <span class="ident">Builder</span>, <span class="ident">Tx</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blockchain</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::BatchDatabase</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::FeeRate</span>;
-
-<span class="doccomment">/// Structure that implements the logic to sync with Esplora</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">/// See the [`blockchain::esplora`](crate::blockchain::esplora) module for a usage example.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">EsploraBlockchain</span> {
- <span class="ident">url_client</span>: <span class="ident">BlockingClient</span>,
- <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
- <span class="ident">concurrency</span>: <span class="ident">u8</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/esplora/blocking.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>blocking.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../../source-files.js"></script><script defer src="../../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Esplora by way of `ureq` HTTP client.
+
+</span><span class="kw">use </span>std::collections::{HashMap, HashSet};
+
+<span class="attr">#[allow(unused_imports)]
+</span><span class="kw">use </span>log::{debug, error, info, trace};
+
+<span class="kw">use </span>bitcoin::{Transaction, Txid};
+
+<span class="kw">use </span>esplora_client::{convert_fee_rate, BlockingClient, Builder, Tx};
+
+<span class="kw">use </span><span class="kw">crate</span>::blockchain::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::database::BatchDatabase;
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::FeeRate;
+
+<span class="doccomment">/// Structure that implements the logic to sync with Esplora
+///
+/// ## Example
+/// See the [`blockchain::esplora`](crate::blockchain::esplora) module for a usage example.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>EsploraBlockchain {
+ url_client: BlockingClient,
+ stop_gap: usize,
+ concurrency: u8,
}
-<span class="kw">impl</span> <span class="ident">EsploraBlockchain</span> {
- <span class="doccomment">/// Create a new instance of the client from a base URL and the `stop_gap`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">base_url</span>: <span class="kw-2">&</span><span class="ident">str</span>, <span class="ident">stop_gap</span>: <span class="ident">usize</span>) -> <span class="self">Self</span> {
- <span class="kw">let</span> <span class="ident">url_client</span> <span class="op">=</span> <span class="ident">Builder::new</span>(<span class="ident">base_url</span>)
- .<span class="ident">build_blocking</span>()
- .<span class="ident">expect</span>(<span class="string">"Should never fail with no proxy and timeout"</span>);
+<span class="kw">impl </span>EsploraBlockchain {
+ <span class="doccomment">/// Create a new instance of the client from a base URL and the `stop_gap`.
+ </span><span class="kw">pub fn </span>new(base_url: <span class="kw-2">&</span>str, stop_gap: usize) -> <span class="self">Self </span>{
+ <span class="kw">let </span>url_client = Builder::new(base_url)
+ .build_blocking()
+ .expect(<span class="string">"Should never fail with no proxy and timeout"</span>);
- <span class="ident"><span class="self">Self</span>::from_client</span>(<span class="ident">url_client</span>, <span class="ident">stop_gap</span>)
+ <span class="self">Self</span>::from_client(url_client, stop_gap)
}
- <span class="doccomment">/// Build a new instance given a client</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_client</span>(<span class="ident">url_client</span>: <span class="ident">BlockingClient</span>, <span class="ident">stop_gap</span>: <span class="ident">usize</span>) -> <span class="self">Self</span> {
- <span class="ident">EsploraBlockchain</span> {
- <span class="ident">url_client</span>,
- <span class="ident">concurrency</span>: <span class="ident"><span class="kw">super</span>::DEFAULT_CONCURRENT_REQUESTS</span>,
- <span class="ident">stop_gap</span>,
+ <span class="doccomment">/// Build a new instance given a client
+ </span><span class="kw">pub fn </span>from_client(url_client: BlockingClient, stop_gap: usize) -> <span class="self">Self </span>{
+ EsploraBlockchain {
+ url_client,
+ concurrency: <span class="kw">super</span>::DEFAULT_CONCURRENT_REQUESTS,
+ stop_gap,
}
}
- <span class="doccomment">/// Set the number of parallel requests the client can make.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">with_concurrency</span>(<span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">concurrency</span>: <span class="ident">u8</span>) -> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">concurrency</span> <span class="op">=</span> <span class="ident">concurrency</span>;
- <span class="self">self</span>
- }
+ <span class="doccomment">/// Set the number of parallel requests the client can make.
+ </span><span class="kw">pub fn </span>with_concurrency(<span class="kw-2">mut </span><span class="self">self</span>, concurrency: u8) -> <span class="self">Self </span>{
+ <span class="self">self</span>.concurrency = concurrency;
+ <span class="self">self
+ </span>}
}
-<span class="kw">impl</span> <span class="ident">Blockchain</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span> {
+<span class="kw">impl </span>Blockchain <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability> {
<span class="macro">vec!</span>[
- <span class="ident">Capability::FullHistory</span>,
- <span class="ident">Capability::GetAnyTx</span>,
- <span class="ident">Capability::AccurateFees</span>,
+ Capability::FullHistory,
+ Capability::GetAnyTx,
+ Capability::AccurateFees,
]
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>()
+ .into_iter()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">url_client</span>.<span class="ident">broadcast</span>(<span class="ident">tx</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="self">self</span>.url_client.broadcast(tx)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">estimates</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">url_client</span>.<span class="ident">get_fee_estimates</span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">convert_fee_rate</span>(
- <span class="ident">target</span>, <span class="ident">estimates</span>,
+ <span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error> {
+ <span class="kw">let </span>estimates = <span class="self">self</span>.url_client.get_fee_estimates()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(FeeRate::from_sat_per_vb(convert_fee_rate(
+ target, estimates,
)<span class="question-mark">?</span>))
}
}
-<span class="kw">impl</span> <span class="ident">Deref</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Target</span> <span class="op">=</span> <span class="ident">BlockingClient</span>;
+<span class="kw">impl </span>Deref <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">type </span>Target = BlockingClient;
- <span class="kw">fn</span> <span class="ident">deref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Target</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">url_client</span>
+ <span class="kw">fn </span>deref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="self">Self</span>::Target {
+ <span class="kw-2">&</span><span class="self">self</span>.url_client
}
}
-<span class="kw">impl</span> <span class="ident">StatelessBlockchain</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {}
+<span class="kw">impl </span>StatelessBlockchain <span class="kw">for </span>EsploraBlockchain {}
-<span class="kw">impl</span> <span class="ident">GetHeight</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">url_client</span>.<span class="ident">get_height</span>()<span class="question-mark">?</span>)
+<span class="kw">impl </span>GetHeight <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.url_client.get_height()<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">url_client</span>.<span class="ident">get_tx</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>)
+<span class="kw">impl </span>GetTx <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.url_client.get_tx(txid)<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">GetBlockHash</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">url_client</span>.<span class="ident">get_block_hash</span>(<span class="ident">height</span> <span class="kw">as</span> <span class="ident">u32</span>)<span class="question-mark">?</span>)
+<span class="kw">impl </span>GetBlockHash <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.url_client.get_block_hash(height <span class="kw">as </span>u32)<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">WalletSync</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+<span class="kw">impl </span>WalletSync <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">fn </span>wallet_setup<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">_progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blockchain::script_sync::Request</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">request</span> <span class="op">=</span> <span class="ident">script_sync::start</span>(<span class="ident">database</span>, <span class="self">self</span>.<span class="ident">stop_gap</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_index</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">Txid</span>, <span class="ident">Tx</span><span class="op">></span> <span class="op">=</span> <span class="ident">HashMap::new</span>();
- <span class="kw">let</span> <span class="ident">batch_update</span> <span class="op">=</span> <span class="kw">loop</span> {
- <span class="ident">request</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">request</span> {
- <span class="ident">Request::Script</span>(<span class="ident">script_req</span>) => {
- <span class="kw">let</span> <span class="ident">scripts</span> <span class="op">=</span> <span class="ident">script_req</span>
- .<span class="ident">request</span>()
- .<span class="ident">take</span>(<span class="self">self</span>.<span class="ident">concurrency</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">cloned</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">handles</span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">for</span> <span class="ident">script</span> <span class="kw">in</span> <span class="ident">scripts</span> {
- <span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">url_client</span>.<span class="ident">clone</span>();
- <span class="comment">// make each request in its own thread.</span>
- <span class="ident">handles</span>.<span class="ident">push</span>(<span class="ident">std::thread::spawn</span>(<span class="kw">move</span> <span class="op">|</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">related_txs</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Tx</span><span class="op">></span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">scripthash_txs</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">n_confirmed</span> <span class="op">=</span>
- <span class="ident">related_txs</span>.<span class="ident">iter</span>().<span class="ident">filter</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="ident">tx</span>.<span class="ident">status</span>.<span class="ident">confirmed</span>).<span class="ident">count</span>();
- <span class="comment">// esplora pages on 25 confirmed transactions. If there's 25 or more we</span>
- <span class="comment">// keep requesting to see if there's more.</span>
- <span class="kw">if</span> <span class="ident">n_confirmed</span> <span class="op">></span><span class="op">=</span> <span class="number">25</span> {
- <span class="kw">loop</span> {
- <span class="kw">let</span> <span class="ident">new_related_txs</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Tx</span><span class="op">></span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">scripthash_txs</span>(
- <span class="kw-2">&</span><span class="ident">script</span>,
- <span class="prelude-val">Some</span>(<span class="ident">related_txs</span>.<span class="ident">last</span>().<span class="ident">unwrap</span>().<span class="ident">txid</span>),
+ database: <span class="kw-2">&mut </span>D,
+ _progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">use </span><span class="kw">crate</span>::blockchain::script_sync::Request;
+ <span class="kw">let </span><span class="kw-2">mut </span>request = script_sync::start(database, <span class="self">self</span>.stop_gap)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>tx_index: HashMap<Txid, Tx> = HashMap::new();
+ <span class="kw">let </span>batch_update = <span class="kw">loop </span>{
+ request = <span class="kw">match </span>request {
+ Request::Script(script_req) => {
+ <span class="kw">let </span>scripts = script_req
+ .request()
+ .take(<span class="self">self</span>.concurrency <span class="kw">as </span>usize)
+ .cloned();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>handles = <span class="macro">vec!</span>[];
+ <span class="kw">for </span>script <span class="kw">in </span>scripts {
+ <span class="kw">let </span>client = <span class="self">self</span>.url_client.clone();
+ <span class="comment">// make each request in its own thread.
+ </span>handles.push(std::thread::spawn(<span class="kw">move </span>|| {
+ <span class="kw">let </span><span class="kw-2">mut </span>related_txs: Vec<Tx> = client.scripthash_txs(<span class="kw-2">&</span>script, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>n_confirmed =
+ related_txs.iter().filter(|tx| tx.status.confirmed).count();
+ <span class="comment">// esplora pages on 25 confirmed transactions. If there's 25 or more we
+ // keep requesting to see if there's more.
+ </span><span class="kw">if </span>n_confirmed >= <span class="number">25 </span>{
+ <span class="kw">loop </span>{
+ <span class="kw">let </span>new_related_txs: Vec<Tx> = client.scripthash_txs(
+ <span class="kw-2">&</span>script,
+ <span class="prelude-val">Some</span>(related_txs.last().unwrap().txid),
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">n</span> <span class="op">=</span> <span class="ident">new_related_txs</span>.<span class="ident">len</span>();
- <span class="ident">related_txs</span>.<span class="ident">extend</span>(<span class="ident">new_related_txs</span>);
- <span class="comment">// we've reached the end</span>
- <span class="kw">if</span> <span class="ident">n</span> <span class="op"><</span> <span class="number">25</span> {
+ <span class="kw">let </span>n = new_related_txs.len();
+ related_txs.extend(new_related_txs);
+ <span class="comment">// we've reached the end
+ </span><span class="kw">if </span>n < <span class="number">25 </span>{
<span class="kw">break</span>;
}
}
}
- <span class="prelude-ty">Result</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span><span class="ident">::Ok</span>(<span class="ident">related_txs</span>)
+ <span class="prelude-ty">Result</span>::<<span class="kw">_</span>, Error>::Ok(related_txs)
}));
}
- <span class="kw">let</span> <span class="ident">txs_per_script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Tx</span><span class="op">></span><span class="op">></span> <span class="op">=</span> <span class="ident">handles</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">handle</span><span class="op">|</span> <span class="ident">handle</span>.<span class="ident">join</span>().<span class="ident">unwrap</span>())
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">satisfaction</span> <span class="op">=</span> <span class="macro">vec!</span>[];
-
- <span class="kw">for</span> <span class="ident">txs</span> <span class="kw">in</span> <span class="ident">txs_per_script</span> {
- <span class="ident">satisfaction</span>.<span class="ident">push</span>(
- <span class="ident">txs</span>.<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> (<span class="ident">tx</span>.<span class="ident">txid</span>, <span class="ident">tx</span>.<span class="ident">status</span>.<span class="ident">block_height</span>))
- .<span class="ident">collect</span>(),
+ <span class="kw">let </span>txs_per_script: Vec<Vec<Tx>> = handles
+ .into_iter()
+ .map(|handle| handle.join().unwrap())
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>satisfaction = <span class="macro">vec!</span>[];
+
+ <span class="kw">for </span>txs <span class="kw">in </span>txs_per_script {
+ satisfaction.push(
+ txs.iter()
+ .map(|tx| (tx.txid, tx.status.block_height))
+ .collect(),
);
- <span class="kw">for</span> <span class="ident">tx</span> <span class="kw">in</span> <span class="ident">txs</span> {
- <span class="ident">tx_index</span>.<span class="ident">insert</span>(<span class="ident">tx</span>.<span class="ident">txid</span>, <span class="ident">tx</span>);
+ <span class="kw">for </span>tx <span class="kw">in </span>txs {
+ tx_index.insert(tx.txid, tx);
}
}
- <span class="ident">script_req</span>.<span class="ident">satisfy</span>(<span class="ident">satisfaction</span>)<span class="question-mark">?</span>
- }
- <span class="ident">Request::Conftime</span>(<span class="ident">conftime_req</span>) => {
- <span class="kw">let</span> <span class="ident">conftimes</span> <span class="op">=</span> <span class="ident">conftime_req</span>
- .<span class="ident">request</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> {
- <span class="ident">tx_index</span>
- .<span class="ident">get</span>(<span class="ident">txid</span>)
- .<span class="ident">expect</span>(<span class="string">"must be in index"</span>)
- .<span class="ident">confirmation_time</span>()
- .<span class="ident">map</span>(<span class="ident">Into::into</span>)
+ script_req.satisfy(satisfaction)<span class="question-mark">?
+ </span>}
+ Request::Conftime(conftime_req) => {
+ <span class="kw">let </span>conftimes = conftime_req
+ .request()
+ .map(|txid| {
+ tx_index
+ .get(txid)
+ .expect(<span class="string">"must be in index"</span>)
+ .confirmation_time()
+ .map(Into::into)
})
- .<span class="ident">collect</span>();
- <span class="ident">conftime_req</span>.<span class="ident">satisfy</span>(<span class="ident">conftimes</span>)<span class="question-mark">?</span>
- }
- <span class="ident">Request::Tx</span>(<span class="ident">tx_req</span>) => {
- <span class="kw">let</span> <span class="ident">full_txs</span> <span class="op">=</span> <span class="ident">tx_req</span>
- .<span class="ident">request</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">tx_index</span>.<span class="ident">get</span>(<span class="ident">txid</span>).<span class="ident">expect</span>(<span class="string">"must be in index"</span>);
- <span class="prelude-val">Ok</span>((<span class="ident">tx</span>.<span class="ident">previous_outputs</span>(), <span class="ident">tx</span>.<span class="ident">to_tx</span>()))
+ .collect();
+ conftime_req.satisfy(conftimes)<span class="question-mark">?
+ </span>}
+ Request::Tx(tx_req) => {
+ <span class="kw">let </span>full_txs = tx_req
+ .request()
+ .map(|txid| {
+ <span class="kw">let </span>tx = tx_index.get(txid).expect(<span class="string">"must be in index"</span>);
+ <span class="prelude-val">Ok</span>((tx.previous_outputs(), tx.to_tx()))
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
- <span class="ident">tx_req</span>.<span class="ident">satisfy</span>(<span class="ident">full_txs</span>)<span class="question-mark">?</span>
- }
- <span class="ident">Request::Finish</span>(<span class="ident">batch_update</span>) => <span class="kw">break</span> <span class="ident">batch_update</span>,
+ .collect::<<span class="prelude-ty">Result</span><<span class="kw">_</span>, Error>>()<span class="question-mark">?</span>;
+ tx_req.satisfy(full_txs)<span class="question-mark">?
+ </span>}
+ Request::Finish(batch_update) => <span class="kw">break </span>batch_update,
}
};
- <span class="ident">database</span>.<span class="ident">commit_batch</span>(<span class="ident">batch_update</span>)<span class="question-mark">?</span>;
+ database.commit_batch(batch_update)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">impl</span> <span class="ident">ConfigurableBlockchain</span> <span class="kw">for</span> <span class="ident">EsploraBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident"><span class="kw">super</span>::EsploraBlockchainConfig</span>;
+<span class="kw">impl </span>ConfigurableBlockchain <span class="kw">for </span>EsploraBlockchain {
+ <span class="kw">type </span>Config = <span class="kw">super</span>::EsploraBlockchainConfig;
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">Builder::new</span>(<span class="ident">config</span>.<span class="ident">base_url</span>.<span class="ident">as_str</span>());
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = Builder::new(config.base_url.as_str());
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">timeout</span>) <span class="op">=</span> <span class="ident">config</span>.<span class="ident">timeout</span> {
- <span class="ident">builder</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">timeout</span>(<span class="ident">timeout</span>);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(timeout) = config.timeout {
+ builder = builder.timeout(timeout);
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">proxy</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">proxy</span> {
- <span class="ident">builder</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">proxy</span>(<span class="ident">proxy</span>);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(proxy) = <span class="kw-2">&</span>config.proxy {
+ builder = builder.proxy(proxy);
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">blockchain</span> <span class="op">=</span>
- <span class="ident">EsploraBlockchain::from_client</span>(<span class="ident">builder</span>.<span class="ident">build_blocking</span>()<span class="question-mark">?</span>, <span class="ident">config</span>.<span class="ident">stop_gap</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>blockchain =
+ EsploraBlockchain::from_client(builder.build_blocking()<span class="question-mark">?</span>, config.stop_gap);
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">concurrency</span>) <span class="op">=</span> <span class="ident">config</span>.<span class="ident">concurrency</span> {
- <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">blockchain</span>.<span class="ident">with_concurrency</span>(<span class="ident">concurrency</span>);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(concurrency) = config.concurrency {
+ blockchain = blockchain.with_concurrency(concurrency);
}
- <span class="prelude-val">Ok</span>(<span class="ident">blockchain</span>)
+ <span class="prelude-val">Ok</span>(blockchain)
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/esplora/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../../storage.js"></script><script src="../../../../crates.js"></script><script defer src="../../../../main.js"></script><script defer src="../../../../source-script.js"></script><script defer src="../../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-</pre><pre class="rust"><code><span class="doccomment">//! Esplora</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module defines a [`EsploraBlockchain`] struct that can query an Esplora</span>
-<span class="doccomment">//! backend populate the wallet's [database](crate::database::Database) by:</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bdk::blockchain::esplora::EsploraBlockchain;</span>
-<span class="doccomment">//! let blockchain = EsploraBlockchain::new("https://blockstream.info/testnet/api", 20);</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Esplora blockchain can use either `ureq` or `reqwest` for the HTTP client</span>
-<span class="doccomment">//! depending on your needs (blocking or async respectively).</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Please note, to configure the Esplora HTTP client correctly use one of:</span>
-<span class="doccomment">//! Blocking: --features='use-esplora-blocking'</span>
-<span class="doccomment">//! Async: --features='async-interface,use-esplora-async' --no-default-features</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/esplora/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../../source-files.js"></script><script defer src="../../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+</pre><pre class="rust"><code><span class="doccomment">//! Esplora
+//!
+//! This module defines a [`EsploraBlockchain`] struct that can query an Esplora
+//! backend populate the wallet's [database](crate::database::Database) by:
+//!
+//! ## Example
+//!
+//! ```no_run
+//! # use bdk::blockchain::esplora::EsploraBlockchain;
+//! let blockchain = EsploraBlockchain::new("https://blockstream.info/testnet/api", 20);
+//! # Ok::<(), bdk::Error>(())
+//! ```
+//!
+//! Esplora blockchain can use either `ureq` or `reqwest` for the HTTP client
+//! depending on your needs (blocking or async respectively).
+//!
+//! Please note, to configure the Esplora HTTP client correctly use one of:
+//! Blocking: --features='use-esplora-blocking'
+//! Async: --features='async-interface,use-esplora-async' --no-default-features
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">esplora_client::Error</span> <span class="kw">as</span> <span class="ident">EsploraError</span>;
+</span><span class="kw">pub use </span>esplora_client::Error <span class="kw">as </span>EsploraError;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"use-esplora-async"</span>)]</span>
-<span class="kw">mod</span> <span class="ident">r#async</span>;
+<span class="attr">#[cfg(feature = <span class="string">"use-esplora-async"</span>)]
+</span><span class="kw">mod </span>r#async;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"use-esplora-async"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">r#async</span>::<span class="kw-2">*</span>;
+<span class="attr">#[cfg(feature = <span class="string">"use-esplora-async"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::r#async::<span class="kw-2">*</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"use-esplora-blocking"</span>)]</span>
-<span class="kw">mod</span> <span class="ident">blocking</span>;
+<span class="attr">#[cfg(feature = <span class="string">"use-esplora-blocking"</span>)]
+</span><span class="kw">mod </span>blocking;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"use-esplora-blocking"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::blocking</span>::<span class="kw-2">*</span>;
+<span class="attr">#[cfg(feature = <span class="string">"use-esplora-blocking"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::blocking::<span class="kw-2">*</span>;
-<span class="doccomment">/// Configuration for an [`EsploraBlockchain`]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Deserialize</span>, <span class="ident">serde::Serialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">EsploraBlockchainConfig</span> {
- <span class="doccomment">/// Base URL of the esplora service</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// eg. `https://blockstream.info/api/`</span>
- <span class="kw">pub</span> <span class="ident">base_url</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Optional URL of the proxy to use to make requests to the Esplora server</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The string should be formatted as: `<protocol>://<user>:<password>@host:<port>`.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that the format of this value and the supported protocols change slightly between the</span>
- <span class="doccomment">/// sync version of esplora (using `ureq`) and the async version (using `reqwest`). For more</span>
- <span class="doccomment">/// details check with the documentation of the two crates. Both of them are compiled with</span>
- <span class="doccomment">/// the `socks` feature enabled.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The proxy is ignored when targeting `wasm32`.</span>
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="kw">pub</span> <span class="ident">proxy</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
- <span class="doccomment">/// Number of parallel requests sent to the esplora service (default: 4)</span>
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="kw">pub</span> <span class="ident">concurrency</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>,
- <span class="doccomment">/// Stop searching addresses for transactions after finding an unused gap of this length.</span>
- <span class="kw">pub</span> <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// Socket timeout.</span>
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="kw">pub</span> <span class="ident">timeout</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
+<span class="doccomment">/// Configuration for an [`EsploraBlockchain`]
+</span><span class="attr">#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>EsploraBlockchainConfig {
+ <span class="doccomment">/// Base URL of the esplora service
+ ///
+ /// eg. `https://blockstream.info/api/`
+ </span><span class="kw">pub </span>base_url: String,
+ <span class="doccomment">/// Optional URL of the proxy to use to make requests to the Esplora server
+ ///
+ /// The string should be formatted as: `<protocol>://<user>:<password>@host:<port>`.
+ ///
+ /// Note that the format of this value and the supported protocols change slightly between the
+ /// sync version of esplora (using `ureq`) and the async version (using `reqwest`). For more
+ /// details check with the documentation of the two crates. Both of them are compiled with
+ /// the `socks` feature enabled.
+ ///
+ /// The proxy is ignored when targeting `wasm32`.
+ </span><span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="kw">pub </span>proxy: <span class="prelude-ty">Option</span><String>,
+ <span class="doccomment">/// Number of parallel requests sent to the esplora service (default: 4)
+ </span><span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="kw">pub </span>concurrency: <span class="prelude-ty">Option</span><u8>,
+ <span class="doccomment">/// Stop searching addresses for transactions after finding an unused gap of this length.
+ </span><span class="kw">pub </span>stop_gap: usize,
+ <span class="doccomment">/// Socket timeout.
+ </span><span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="kw">pub </span>timeout: <span class="prelude-ty">Option</span><u64>,
}
-<span class="kw">impl</span> <span class="ident">EsploraBlockchainConfig</span> {
- <span class="doccomment">/// create a config with default values given the base url and stop gap</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">base_url</span>: <span class="ident">String</span>, <span class="ident">stop_gap</span>: <span class="ident">usize</span>) -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="ident">base_url</span>,
- <span class="ident">proxy</span>: <span class="prelude-val">None</span>,
- <span class="ident">timeout</span>: <span class="prelude-val">None</span>,
- <span class="ident">stop_gap</span>,
- <span class="ident">concurrency</span>: <span class="prelude-val">None</span>,
+<span class="kw">impl </span>EsploraBlockchainConfig {
+ <span class="doccomment">/// create a config with default values given the base url and stop gap
+ </span><span class="kw">pub fn </span>new(base_url: String, stop_gap: usize) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ base_url,
+ proxy: <span class="prelude-val">None</span>,
+ timeout: <span class="prelude-val">None</span>,
+ stop_gap,
+ concurrency: <span class="prelude-val">None</span>,
}
}
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">esplora_client::BlockTime</span><span class="op">></span> <span class="kw">for</span> <span class="ident"><span class="kw">crate</span>::BlockTime</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">esplora_client::BlockTime</span> { <span class="ident">timestamp</span>, <span class="ident">height</span> }: <span class="ident">esplora_client::BlockTime</span>) -> <span class="self">Self</span> {
- <span class="self">Self</span> { <span class="ident">timestamp</span>, <span class="ident">height</span> }
+<span class="kw">impl </span>From<esplora_client::BlockTime> <span class="kw">for </span><span class="kw">crate</span>::BlockTime {
+ <span class="kw">fn </span>from(esplora_client::BlockTime { timestamp, height }: esplora_client::BlockTime) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{ timestamp, height }
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-esplora"</span>)]</span>
-<span class="macro">crate::bdk_blockchain_tests!</span> {
- <span class="kw">fn</span> <span class="ident">test_instance</span>(<span class="ident">test_client</span>: <span class="kw-2">&</span><span class="ident">TestClient</span>) -> <span class="ident">EsploraBlockchain</span> {
- <span class="ident">EsploraBlockchain::new</span>(<span class="kw-2">&</span><span class="macro">format!</span>(<span class="string">"http://{}"</span>,<span class="ident">test_client</span>.<span class="ident">electrsd</span>.<span class="ident">esplora_url</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>()), <span class="number">20</span>)
+<span class="attr">#[cfg(test)]
+#[cfg(feature = <span class="string">"test-esplora"</span>)]
+</span><span class="macro">crate::bdk_blockchain_tests! </span>{
+ <span class="kw">fn </span>test_instance(test_client: <span class="kw-2">&</span>TestClient) -> EsploraBlockchain {
+ EsploraBlockchain::new(<span class="kw-2">&</span><span class="macro">format!</span>(<span class="string">"http://{}"</span>,test_client.electrsd.esplora_url.as_ref().unwrap()), <span class="number">20</span>)
}
}
-<span class="kw">const</span> <span class="ident">DEFAULT_CONCURRENT_REQUESTS</span>: <span class="ident">u8</span> <span class="op">=</span> <span class="number">4</span>;
+<span class="kw">const </span>DEFAULT_CONCURRENT_REQUESTS: u8 = <span class="number">4</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-esplora"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_esplora_with_variable_configs</span>() {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="attr">#[test]
+ #[cfg(feature = <span class="string">"test-esplora"</span>)]
+ </span><span class="kw">fn </span>test_esplora_with_variable_configs() {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::testutils</span>::{
- <span class="ident">blockchain_tests::TestClient</span>,
- <span class="ident">configurable_blockchain_tests::ConfigurableBlockchainTester</span>,
+ <span class="kw">use </span><span class="kw">crate</span>::testutils::{
+ blockchain_tests::TestClient,
+ configurable_blockchain_tests::ConfigurableBlockchainTester,
};
- <span class="kw">struct</span> <span class="ident">EsploraTester</span>;
+ <span class="kw">struct </span>EsploraTester;
- <span class="kw">impl</span> <span class="ident">ConfigurableBlockchainTester</span><span class="op"><</span><span class="ident">EsploraBlockchain</span><span class="op">></span> <span class="kw">for</span> <span class="ident">EsploraTester</span> {
- <span class="kw">const</span> <span class="ident">BLOCKCHAIN_NAME</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> <span class="op">=</span> <span class="string">"Esplora"</span>;
+ <span class="kw">impl </span>ConfigurableBlockchainTester<EsploraBlockchain> <span class="kw">for </span>EsploraTester {
+ <span class="kw">const </span>BLOCKCHAIN_NAME: <span class="kw-2">&</span><span class="lifetime">'static </span>str = <span class="string">"Esplora"</span>;
- <span class="kw">fn</span> <span class="ident">config_with_stop_gap</span>(
+ <span class="kw">fn </span>config_with_stop_gap(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">test_client</span>: <span class="kw-2">&mut</span> <span class="ident">TestClient</span>,
- <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">EsploraBlockchainConfig</span><span class="op">></span> {
- <span class="prelude-val">Some</span>(<span class="ident">EsploraBlockchainConfig</span> {
- <span class="ident">base_url</span>: <span class="macro">format!</span>(
+ test_client: <span class="kw-2">&mut </span>TestClient,
+ stop_gap: usize,
+ ) -> <span class="prelude-ty">Option</span><EsploraBlockchainConfig> {
+ <span class="prelude-val">Some</span>(EsploraBlockchainConfig {
+ base_url: <span class="macro">format!</span>(
<span class="string">"http://{}"</span>,
- <span class="ident">test_client</span>.<span class="ident">electrsd</span>.<span class="ident">esplora_url</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>()
+ test_client.electrsd.esplora_url.as_ref().unwrap()
),
- <span class="ident">proxy</span>: <span class="prelude-val">None</span>,
- <span class="ident">concurrency</span>: <span class="prelude-val">None</span>,
- <span class="ident">stop_gap</span>: <span class="ident">stop_gap</span>,
- <span class="ident">timeout</span>: <span class="prelude-val">None</span>,
+ proxy: <span class="prelude-val">None</span>,
+ concurrency: <span class="prelude-val">None</span>,
+ stop_gap: stop_gap,
+ timeout: <span class="prelude-val">None</span>,
})
}
}
- <span class="ident">EsploraTester</span>.<span class="ident">run</span>();
+ EsploraTester.run();
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Blockchain backends</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides the implementation of a few commonly-used backends like</span>
-<span class="doccomment">//! [Electrum](crate::blockchain::electrum), [Esplora](crate::blockchain::esplora) and</span>
-<span class="doccomment">//! [Compact Filters/Neutrino](crate::blockchain::compact_filters), along with a generalized trait</span>
-<span class="doccomment">//! [`Blockchain`] that can be implemented to build customized backends.</span>
-
-<span class="kw">use</span> <span class="ident">std::collections::HashSet</span>;
-<span class="kw">use</span> <span class="ident">std::ops::Deref</span>;
-<span class="kw">use</span> <span class="ident">std::sync::mpsc</span>::{<span class="ident">channel</span>, <span class="ident">Receiver</span>, <span class="ident">Sender</span>};
-<span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">BlockHash</span>, <span class="ident">Transaction</span>, <span class="ident">Txid</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::BatchDatabase</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet</span>::{<span class="ident">wallet_name_from_descriptor</span>, <span class="ident">Wallet</span>};
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">FeeRate</span>, <span class="ident">KeychainKind</span>};
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">any</span>(
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>,
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>,
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>,
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>
-))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">any</span>;
-<span class="kw">mod</span> <span class="ident">script_sync</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">any</span>(
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>,
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>,
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>,
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>
-))]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">any</span>::{<span class="ident">AnyBlockchain</span>, <span class="ident">AnyBlockchainConfig</span>};
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">electrum</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::electrum::ElectrumBlockchain</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::electrum::ElectrumBlockchainConfig</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">rpc</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::rpc::RpcBlockchain</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::rpc::RpcConfig</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">esplora</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::esplora::EsploraBlockchain</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">compact_filters</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::compact_filters::CompactFiltersBlockchain</span>;
-
-<span class="doccomment">/// Capabilities that can be supported by a [`Blockchain`] backend</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Capability</span> {
- <span class="doccomment">/// Can recover the full history of a wallet and not only the set of currently spendable UTXOs</span>
- <span class="ident">FullHistory</span>,
- <span class="doccomment">/// Can fetch any historical transaction given its txid</span>
- <span class="ident">GetAnyTx</span>,
- <span class="doccomment">/// Can compute accurate fees for the transactions found during sync</span>
- <span class="ident">AccurateFees</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Blockchain backends
+//!
+//! This module provides the implementation of a few commonly-used backends like
+//! [Electrum](crate::blockchain::electrum), [Esplora](crate::blockchain::esplora) and
+//! [Compact Filters/Neutrino](crate::blockchain::compact_filters), along with a generalized trait
+//! [`Blockchain`] that can be implemented to build customized backends.
+
+</span><span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::ops::Deref;
+<span class="kw">use </span>std::sync::mpsc::{channel, Receiver, Sender};
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>bitcoin::{BlockHash, Transaction, Txid};
+
+<span class="kw">use </span><span class="kw">crate</span>::database::BatchDatabase;
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::wallet::{wallet_name_from_descriptor, Wallet};
+<span class="kw">use crate</span>::{FeeRate, KeychainKind};
+
+<span class="attr">#[cfg(any(
+ feature = <span class="string">"electrum"</span>,
+ feature = <span class="string">"esplora"</span>,
+ feature = <span class="string">"compact_filters"</span>,
+ feature = <span class="string">"rpc"
+</span>))]
+</span><span class="kw">pub mod </span>any;
+<span class="kw">mod </span>script_sync;
+
+<span class="attr">#[cfg(any(
+ feature = <span class="string">"electrum"</span>,
+ feature = <span class="string">"esplora"</span>,
+ feature = <span class="string">"compact_filters"</span>,
+ feature = <span class="string">"rpc"
+</span>))]
+</span><span class="kw">pub use </span>any::{AnyBlockchain, AnyBlockchainConfig};
+
+<span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"electrum"</span>)))]
+</span><span class="kw">pub mod </span>electrum;
+<span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::electrum::ElectrumBlockchain;
+<span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::electrum::ElectrumBlockchainConfig;
+
+<span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"rpc"</span>)))]
+</span><span class="kw">pub mod </span>rpc;
+<span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::rpc::RpcBlockchain;
+<span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::rpc::RpcConfig;
+
+<span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"esplora"</span>)))]
+</span><span class="kw">pub mod </span>esplora;
+<span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::esplora::EsploraBlockchain;
+
+<span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"compact_filters"</span>)))]
+</span><span class="kw">pub mod </span>compact_filters;
+
+<span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::compact_filters::CompactFiltersBlockchain;
+
+<span class="doccomment">/// Capabilities that can be supported by a [`Blockchain`] backend
+</span><span class="attr">#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+</span><span class="kw">pub enum </span>Capability {
+ <span class="doccomment">/// Can recover the full history of a wallet and not only the set of currently spendable UTXOs
+ </span>FullHistory,
+ <span class="doccomment">/// Can fetch any historical transaction given its txid
+ </span>GetAnyTx,
+ <span class="doccomment">/// Can compute accurate fees for the transactions found during sync
+ </span>AccurateFees,
}
-<span class="doccomment">/// Trait that defines the actions that must be supported by a blockchain backend</span>
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Blockchain</span>: <span class="ident">WalletSync</span> <span class="op">+</span> <span class="ident">GetHeight</span> <span class="op">+</span> <span class="ident">GetTx</span> <span class="op">+</span> <span class="ident">GetBlockHash</span> {
- <span class="doccomment">/// Return the set of [`Capability`] supported by this backend</span>
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span>;
- <span class="doccomment">/// Broadcast a transaction</span>
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Estimate the fee rate required to confirm a transaction in a given `target` of blocks</span>
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span>;
+<span class="doccomment">/// Trait that defines the actions that must be supported by a blockchain backend
+</span><span class="attr">#[maybe_async]
+</span><span class="kw">pub trait </span>Blockchain: WalletSync + GetHeight + GetTx + GetBlockHash {
+ <span class="doccomment">/// Return the set of [`Capability`] supported by this backend
+ </span><span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability>;
+ <span class="doccomment">/// Broadcast a transaction
+ </span><span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error>;
+ <span class="doccomment">/// Estimate the fee rate required to confirm a transaction in a given `target` of blocks
+ </span><span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error>;
}
-<span class="doccomment">/// Trait for getting the current height of the blockchain.</span>
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">GetHeight</span> {
- <span class="doccomment">/// Return the current height</span>
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span>;
+<span class="doccomment">/// Trait for getting the current height of the blockchain.
+</span><span class="attr">#[maybe_async]
+</span><span class="kw">pub trait </span>GetHeight {
+ <span class="doccomment">/// Return the current height
+ </span><span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error>;
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="doccomment">/// Trait for getting a transaction by txid</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">GetTx</span> {
- <span class="doccomment">/// Fetch a transaction given its txid</span>
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
+<span class="attr">#[maybe_async]
+</span><span class="doccomment">/// Trait for getting a transaction by txid
+</span><span class="kw">pub trait </span>GetTx {
+ <span class="doccomment">/// Fetch a transaction given its txid
+ </span><span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error>;
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="doccomment">/// Trait for getting block hash by block height</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">GetBlockHash</span> {
- <span class="doccomment">/// fetch block hash given its height</span>
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span>;
+<span class="attr">#[maybe_async]
+</span><span class="doccomment">/// Trait for getting block hash by block height
+</span><span class="kw">pub trait </span>GetBlockHash {
+ <span class="doccomment">/// fetch block hash given its height
+ </span><span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error>;
}
-<span class="doccomment">/// Trait for blockchains that can sync by updating the database directly.</span>
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">WalletSync</span> {
- <span class="doccomment">/// Setup the backend and populate the internal database for the first time</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This method is the equivalent of [`Self::wallet_sync`], but it's guaranteed to only be</span>
- <span class="doccomment">/// called once, at the first [`Wallet::sync`](crate::wallet::Wallet::sync).</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The rationale behind the distinction between `sync` and `setup` is that some custom backends</span>
- <span class="doccomment">/// might need to perform specific actions only the first time they are synced.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// For types that do not have that distinction, only this method can be implemented, since</span>
- <span class="doccomment">/// [`WalletSync::wallet_sync`] defaults to calling this internally if not overridden.</span>
- <span class="doccomment">/// Populate the internal database with transactions and UTXOs</span>
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+<span class="doccomment">/// Trait for blockchains that can sync by updating the database directly.
+</span><span class="attr">#[maybe_async]
+</span><span class="kw">pub trait </span>WalletSync {
+ <span class="doccomment">/// Setup the backend and populate the internal database for the first time
+ ///
+ /// This method is the equivalent of [`Self::wallet_sync`], but it's guaranteed to only be
+ /// called once, at the first [`Wallet::sync`](crate::wallet::Wallet::sync).
+ ///
+ /// The rationale behind the distinction between `sync` and `setup` is that some custom backends
+ /// might need to perform specific actions only the first time they are synced.
+ ///
+ /// For types that do not have that distinction, only this method can be implemented, since
+ /// [`WalletSync::wallet_sync`] defaults to calling this internally if not overridden.
+ /// Populate the internal database with transactions and UTXOs
+ </span><span class="kw">fn </span>wallet_setup<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
-
- <span class="doccomment">/// If not overridden, it defaults to calling [`Self::wallet_setup`] internally.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This method should implement the logic required to iterate over the list of the wallet's</span>
- <span class="doccomment">/// script_pubkeys using [`Database::iter_script_pubkeys`] and look for relevant transactions</span>
- <span class="doccomment">/// in the blockchain to populate the database with [`BatchOperations::set_tx`] and</span>
- <span class="doccomment">/// [`BatchOperations::set_utxo`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This method should also take care of removing UTXOs that are seen as spent in the</span>
- <span class="doccomment">/// blockchain, using [`BatchOperations::del_utxo`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The `progress_update` object can be used to give the caller updates about the progress by using</span>
- <span class="doccomment">/// [`Progress::update`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`Database::iter_script_pubkeys`]: crate::database::Database::iter_script_pubkeys</span>
- <span class="doccomment">/// [`BatchOperations::set_tx`]: crate::database::BatchOperations::set_tx</span>
- <span class="doccomment">/// [`BatchOperations::set_utxo`]: crate::database::BatchOperations::set_utxo</span>
- <span class="doccomment">/// [`BatchOperations::del_utxo`]: crate::database::BatchOperations::del_utxo</span>
- <span class="kw">fn</span> <span class="ident">wallet_sync</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error>;
+
+ <span class="doccomment">/// If not overridden, it defaults to calling [`Self::wallet_setup`] internally.
+ ///
+ /// This method should implement the logic required to iterate over the list of the wallet's
+ /// script_pubkeys using [`Database::iter_script_pubkeys`] and look for relevant transactions
+ /// in the blockchain to populate the database with [`BatchOperations::set_tx`] and
+ /// [`BatchOperations::set_utxo`].
+ ///
+ /// This method should also take care of removing UTXOs that are seen as spent in the
+ /// blockchain, using [`BatchOperations::del_utxo`].
+ ///
+ /// The `progress_update` object can be used to give the caller updates about the progress by using
+ /// [`Progress::update`].
+ ///
+ /// [`Database::iter_script_pubkeys`]: crate::database::Database::iter_script_pubkeys
+ /// [`BatchOperations::set_tx`]: crate::database::BatchOperations::set_tx
+ /// [`BatchOperations::set_utxo`]: crate::database::BatchOperations::set_utxo
+ /// [`BatchOperations::del_utxo`]: crate::database::BatchOperations::del_utxo
+ </span><span class="kw">fn </span>wallet_sync<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">wallet_setup</span>(<span class="ident">database</span>, <span class="ident">progress_update</span>))
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.wallet_setup(database, progress_update))
}
}
-<span class="doccomment">/// Trait for [`Blockchain`] types that can be created given a configuration</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">ConfigurableBlockchain</span>: <span class="ident">Blockchain</span> <span class="op">+</span> <span class="ident">Sized</span> {
- <span class="doccomment">/// Type that contains the configuration</span>
- <span class="kw">type</span> <span class="ident">Config</span>: <span class="ident">std::fmt::Debug</span>;
+<span class="doccomment">/// Trait for [`Blockchain`] types that can be created given a configuration
+</span><span class="kw">pub trait </span>ConfigurableBlockchain: Blockchain + Sized {
+ <span class="doccomment">/// Type that contains the configuration
+ </span><span class="kw">type </span>Config: std::fmt::Debug;
- <span class="doccomment">/// Create a new instance given a configuration</span>
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span>;
+ <span class="doccomment">/// Create a new instance given a configuration
+ </span><span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error>;
}
-<span class="doccomment">/// Trait for blockchains that don't contain any state</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Statless blockchains can be used to sync multiple wallets with different descriptors.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`BlockchainFactory`] is automatically implemented for `Arc<T>` where `T` is a stateless</span>
-<span class="doccomment">/// blockchain.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">StatelessBlockchain</span>: <span class="ident">Blockchain</span> {}
-
-<span class="doccomment">/// Trait for a factory of blockchains that share the underlying connection or configuration</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(
- <span class="ident">not</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>),
- <span class="ident">doc</span> <span class="op">=</span> <span class="string">r##"
+<span class="doccomment">/// Trait for blockchains that don't contain any state
+///
+/// Statless blockchains can be used to sync multiple wallets with different descriptors.
+///
+/// [`BlockchainFactory`] is automatically implemented for `Arc<T>` where `T` is a stateless
+/// blockchain.
+</span><span class="kw">pub trait </span>StatelessBlockchain: Blockchain {}
+
+<span class="doccomment">/// Trait for a factory of blockchains that share the underlying connection or configuration
+</span><span class="attr">#[cfg_attr(
+ not(feature = <span class="string">"async-interface"</span>),
+ doc = <span class="string">r##"
## Example
This example shows how to sync multiple walles and return the sum of their balances
.sum())
}
```
-"##</span>
-)]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">BlockchainFactory</span> {
- <span class="doccomment">/// The type returned when building a blockchain from this factory</span>
- <span class="kw">type</span> <span class="ident">Inner</span>: <span class="ident">Blockchain</span>;
-
- <span class="doccomment">/// Build a new blockchain for the given descriptor wallet_name</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If `override_skip_blocks` is `None`, the returned blockchain will inherit the number of blocks</span>
- <span class="doccomment">/// from the factory. Since it's not possible to override the value to `None`, set it to</span>
- <span class="doccomment">/// `Some(0)` to rescan from the genesis.</span>
- <span class="kw">fn</span> <span class="ident">build</span>(
+"##
+</span>)]
+</span><span class="kw">pub trait </span>BlockchainFactory {
+ <span class="doccomment">/// The type returned when building a blockchain from this factory
+ </span><span class="kw">type </span>Inner: Blockchain;
+
+ <span class="doccomment">/// Build a new blockchain for the given descriptor wallet_name
+ ///
+ /// If `override_skip_blocks` is `None`, the returned blockchain will inherit the number of blocks
+ /// from the factory. Since it's not possible to override the value to `None`, set it to
+ /// `Some(0)` to rescan from the genesis.
+ </span><span class="kw">fn </span>build(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">wallet_name</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- <span class="ident">override_skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident"><span class="self">Self</span>::Inner</span>, <span class="ident">Error</span><span class="op">></span>;
-
- <span class="doccomment">/// Build a new blockchain for a given wallet</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Internally uses [`wallet_name_from_descriptor`] to derive the name, and then calls</span>
- <span class="doccomment">/// [`BlockchainFactory::build`] to create the blockchain instance.</span>
- <span class="kw">fn</span> <span class="ident">build_for_wallet</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+ wallet_name: <span class="kw-2">&</span>str,
+ override_skip_blocks: <span class="prelude-ty">Option</span><u32>,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>::Inner, Error>;
+
+ <span class="doccomment">/// Build a new blockchain for a given wallet
+ ///
+ /// Internally uses [`wallet_name_from_descriptor`] to derive the name, and then calls
+ /// [`BlockchainFactory::build`] to create the blockchain instance.
+ </span><span class="kw">fn </span>build_for_wallet<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">wallet</span>: <span class="kw-2">&</span><span class="ident">Wallet</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>,
- <span class="ident">override_skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident"><span class="self">Self</span>::Inner</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">wallet_name</span> <span class="op">=</span> <span class="ident">wallet_name_from_descriptor</span>(
- <span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::External</span>)<span class="question-mark">?</span>.<span class="ident">unwrap</span>(),
- <span class="ident">wallet</span>.<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::Internal</span>)<span class="question-mark">?</span>,
- <span class="ident">wallet</span>.<span class="ident">network</span>(),
- <span class="ident">wallet</span>.<span class="ident">secp_ctx</span>(),
+ wallet: <span class="kw-2">&</span>Wallet<D>,
+ override_skip_blocks: <span class="prelude-ty">Option</span><u32>,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>::Inner, Error> {
+ <span class="kw">let </span>wallet_name = wallet_name_from_descriptor(
+ wallet.public_descriptor(KeychainKind::External)<span class="question-mark">?</span>.unwrap(),
+ wallet.public_descriptor(KeychainKind::Internal)<span class="question-mark">?</span>,
+ wallet.network(),
+ wallet.secp_ctx(),
)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">build</span>(<span class="kw-2">&</span><span class="ident">wallet_name</span>, <span class="ident">override_skip_blocks</span>)
+ <span class="self">self</span>.build(<span class="kw-2">&</span>wallet_name, override_skip_blocks)
}
- <span class="doccomment">/// Use [`BlockchainFactory::build_for_wallet`] to get a blockchain, then sync the wallet</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This can be used when a new blockchain would only be used to sync a wallet and then</span>
- <span class="doccomment">/// immediately dropped. Keep in mind that specific blockchain factories may perform slow</span>
- <span class="doccomment">/// operations to build a blockchain for a given wallet, so if a wallet needs to be synced</span>
- <span class="doccomment">/// often it's recommended to use [`BlockchainFactory::build_for_wallet`] to reuse the same</span>
- <span class="doccomment">/// blockchain multiple times.</span>
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">any</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>)))]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(
- <span class="ident">docsrs</span>,
- <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">any</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>))))
- )]</span>
- <span class="kw">fn</span> <span class="ident">sync_wallet</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+ <span class="doccomment">/// Use [`BlockchainFactory::build_for_wallet`] to get a blockchain, then sync the wallet
+ ///
+ /// This can be used when a new blockchain would only be used to sync a wallet and then
+ /// immediately dropped. Keep in mind that specific blockchain factories may perform slow
+ /// operations to build a blockchain for a given wallet, so if a wallet needs to be synced
+ /// often it's recommended to use [`BlockchainFactory::build_for_wallet`] to reuse the same
+ /// blockchain multiple times.
+ </span><span class="attr">#[cfg(not(any(target_arch = <span class="string">"wasm32"</span>, feature = <span class="string">"async-interface"</span>)))]
+ #[cfg_attr(
+ docsrs,
+ doc(cfg(not(any(target_arch = <span class="string">"wasm32"</span>, feature = <span class="string">"async-interface"</span>))))
+ )]
+ </span><span class="kw">fn </span>sync_wallet<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">wallet</span>: <span class="kw-2">&</span><span class="ident">Wallet</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>,
- <span class="ident">override_skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="ident">sync_options</span>: <span class="ident"><span class="kw">crate</span>::wallet::SyncOptions</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">build_for_wallet</span>(<span class="ident">wallet</span>, <span class="ident">override_skip_blocks</span>)<span class="question-mark">?</span>;
- <span class="ident">wallet</span>.<span class="ident">sync</span>(<span class="kw-2">&</span><span class="ident">blockchain</span>, <span class="ident">sync_options</span>)
+ wallet: <span class="kw-2">&</span>Wallet<D>,
+ override_skip_blocks: <span class="prelude-ty">Option</span><u32>,
+ sync_options: <span class="kw">crate</span>::wallet::SyncOptions,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>blockchain = <span class="self">self</span>.build_for_wallet(wallet, override_skip_blocks)<span class="question-mark">?</span>;
+ wallet.sync(<span class="kw-2">&</span>blockchain, sync_options)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">StatelessBlockchain</span><span class="op">></span> <span class="ident">BlockchainFactory</span> <span class="kw">for</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">type</span> <span class="ident">Inner</span> <span class="op">=</span> <span class="self">Self</span>;
+<span class="kw">impl</span><T: StatelessBlockchain> BlockchainFactory <span class="kw">for </span>Arc<T> {
+ <span class="kw">type </span>Inner = <span class="self">Self</span>;
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_wallet_name</span>: <span class="kw-2">&</span><span class="ident">str</span>, <span class="ident">_override_skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Arc::clone</span>(<span class="self">self</span>))
+ <span class="kw">fn </span>build(<span class="kw-2">&</span><span class="self">self</span>, _wallet_name: <span class="kw-2">&</span>str, _override_skip_blocks: <span class="prelude-ty">Option</span><u32>) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="prelude-val">Ok</span>(Arc::clone(<span class="self">self</span>))
}
}
-<span class="doccomment">/// Data sent with a progress update over a [`channel`]</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">ProgressData</span> <span class="op">=</span> (<span class="ident">f32</span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>);
-
-<span class="doccomment">/// Trait for types that can receive and process progress updates during [`WalletSync::wallet_sync`] and</span>
-<span class="doccomment">/// [`WalletSync::wallet_setup`]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Progress</span>: <span class="ident">Send</span> <span class="op">+</span> <span class="lifetime">'static</span> <span class="op">+</span> <span class="ident">core::fmt::Debug</span> {
- <span class="doccomment">/// Send a new progress update</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The `progress` value should be in the range 0.0 - 100.0, and the `message` value is an</span>
- <span class="doccomment">/// optional text message that can be displayed to the user.</span>
- <span class="kw">fn</span> <span class="ident">update</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">progress</span>: <span class="ident">f32</span>, <span class="ident">message</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
+<span class="doccomment">/// Data sent with a progress update over a [`channel`]
+</span><span class="kw">pub type </span>ProgressData = (f32, <span class="prelude-ty">Option</span><String>);
+
+<span class="doccomment">/// Trait for types that can receive and process progress updates during [`WalletSync::wallet_sync`] and
+/// [`WalletSync::wallet_setup`]
+</span><span class="kw">pub trait </span>Progress: Send + <span class="lifetime">'static </span>+ core::fmt::Debug {
+ <span class="doccomment">/// Send a new progress update
+ ///
+ /// The `progress` value should be in the range 0.0 - 100.0, and the `message` value is an
+ /// optional text message that can be displayed to the user.
+ </span><span class="kw">fn </span>update(<span class="kw-2">&</span><span class="self">self</span>, progress: f32, message: <span class="prelude-ty">Option</span><String>) -> <span class="prelude-ty">Result</span><(), Error>;
}
-<span class="doccomment">/// Shortcut to create a [`channel`] (pair of [`Sender`] and [`Receiver`]) that can transport [`ProgressData`]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">progress</span>() -> (<span class="ident">Sender</span><span class="op"><</span><span class="ident">ProgressData</span><span class="op">></span>, <span class="ident">Receiver</span><span class="op"><</span><span class="ident">ProgressData</span><span class="op">></span>) {
- <span class="ident">channel</span>()
+<span class="doccomment">/// Shortcut to create a [`channel`] (pair of [`Sender`] and [`Receiver`]) that can transport [`ProgressData`]
+</span><span class="kw">pub fn </span>progress() -> (Sender<ProgressData>, Receiver<ProgressData>) {
+ channel()
}
-<span class="kw">impl</span> <span class="ident">Progress</span> <span class="kw">for</span> <span class="ident">Sender</span><span class="op"><</span><span class="ident">ProgressData</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">update</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">progress</span>: <span class="ident">f32</span>, <span class="ident">message</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">if</span> <span class="op">!</span>(<span class="number">0.0</span>..<span class="op">=</span><span class="number">100.0</span>).<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">progress</span>) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::InvalidProgressValue</span>(<span class="ident">progress</span>));
+<span class="kw">impl </span>Progress <span class="kw">for </span>Sender<ProgressData> {
+ <span class="kw">fn </span>update(<span class="kw-2">&</span><span class="self">self</span>, progress: f32, message: <span class="prelude-ty">Option</span><String>) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">if </span>!(<span class="number">0.0</span>..=<span class="number">100.0</span>).contains(<span class="kw-2">&</span>progress) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidProgressValue(progress));
}
- <span class="self">self</span>.<span class="ident">send</span>((<span class="ident">progress</span>, <span class="ident">message</span>))
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">Error::ProgressUpdateError</span>)
+ <span class="self">self</span>.send((progress, message))
+ .map_err(|<span class="kw">_</span>| Error::ProgressUpdateError)
}
}
-<span class="doccomment">/// Type that implements [`Progress`] and drops every update received</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">Default</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">NoopProgress</span>;
+<span class="doccomment">/// Type that implements [`Progress`] and drops every update received
+</span><span class="attr">#[derive(Clone, Copy, Default, Debug)]
+</span><span class="kw">pub struct </span>NoopProgress;
-<span class="doccomment">/// Create a new instance of [`NoopProgress`]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">noop_progress</span>() -> <span class="ident">NoopProgress</span> {
- <span class="ident">NoopProgress</span>
+<span class="doccomment">/// Create a new instance of [`NoopProgress`]
+</span><span class="kw">pub fn </span>noop_progress() -> NoopProgress {
+ NoopProgress
}
-<span class="kw">impl</span> <span class="ident">Progress</span> <span class="kw">for</span> <span class="ident">NoopProgress</span> {
- <span class="kw">fn</span> <span class="ident">update</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_progress</span>: <span class="ident">f32</span>, <span class="ident">_message</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+<span class="kw">impl </span>Progress <span class="kw">for </span>NoopProgress {
+ <span class="kw">fn </span>update(<span class="kw-2">&</span><span class="self">self</span>, _progress: f32, _message: <span class="prelude-ty">Option</span><String>) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="prelude-val">Ok</span>(())
}
}
-<span class="doccomment">/// Type that implements [`Progress`] and logs at level `INFO` every update received</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">Default</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">LogProgress</span>;
+<span class="doccomment">/// Type that implements [`Progress`] and logs at level `INFO` every update received
+</span><span class="attr">#[derive(Clone, Copy, Default, Debug)]
+</span><span class="kw">pub struct </span>LogProgress;
-<span class="doccomment">/// Create a new instance of [`LogProgress`]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">log_progress</span>() -> <span class="ident">LogProgress</span> {
- <span class="ident">LogProgress</span>
+<span class="doccomment">/// Create a new instance of [`LogProgress`]
+</span><span class="kw">pub fn </span>log_progress() -> LogProgress {
+ LogProgress
}
-<span class="kw">impl</span> <span class="ident">Progress</span> <span class="kw">for</span> <span class="ident">LogProgress</span> {
- <span class="kw">fn</span> <span class="ident">update</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">progress</span>: <span class="ident">f32</span>, <span class="ident">message</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+<span class="kw">impl </span>Progress <span class="kw">for </span>LogProgress {
+ <span class="kw">fn </span>update(<span class="kw-2">&</span><span class="self">self</span>, progress: f32, message: <span class="prelude-ty">Option</span><String>) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="macro">log::info!</span>(
<span class="string">"Sync {:.3}%: `{}`"</span>,
- <span class="ident">progress</span>,
- <span class="ident">message</span>.<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="string">""</span>.<span class="ident">into</span>())
+ progress,
+ message.unwrap_or_else(|| <span class="string">""</span>.into())
);
<span class="prelude-val">Ok</span>(())
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">Blockchain</span><span class="op">></span> <span class="ident">Blockchain</span> <span class="kw">for</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">get_capabilities</span>())
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl</span><T: Blockchain> Blockchain <span class="kw">for </span>Arc<T> {
+ <span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().get_capabilities())
}
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">broadcast</span>(<span class="ident">tx</span>))
+ <span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().broadcast(tx))
}
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">estimate_fee</span>(<span class="ident">target</span>))
+ <span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().estimate_fee(target))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">GetTx</span><span class="op">></span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">get_tx</span>(<span class="ident">txid</span>))
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl</span><T: GetTx> GetTx <span class="kw">for </span>Arc<T> {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().get_tx(txid))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">GetHeight</span><span class="op">></span> <span class="ident">GetHeight</span> <span class="kw">for</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">get_height</span>())
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl</span><T: GetHeight> GetHeight <span class="kw">for </span>Arc<T> {
+ <span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().get_height())
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">GetBlockHash</span><span class="op">></span> <span class="ident">GetBlockHash</span> <span class="kw">for</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">get_block_hash</span>(<span class="ident">height</span>))
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl</span><T: GetBlockHash> GetBlockHash <span class="kw">for </span>Arc<T> {
+ <span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().get_block_hash(height))
}
}
-<span class="attribute">#[<span class="ident">maybe_async</span>]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">WalletSync</span><span class="op">></span> <span class="ident">WalletSync</span> <span class="kw">for</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+<span class="attr">#[maybe_async]
+</span><span class="kw">impl</span><T: WalletSync> WalletSync <span class="kw">for </span>Arc<T> {
+ <span class="kw">fn </span>wallet_setup<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">wallet_setup</span>(<span class="ident">database</span>, <span class="ident">progress_update</span>))
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().wallet_setup(database, progress_update))
}
- <span class="kw">fn</span> <span class="ident">wallet_sync</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
+ <span class="kw">fn </span>wallet_sync<D: BatchDatabase>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- <span class="ident">progress_update</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">maybe_await!</span>(<span class="self">self</span>.<span class="ident">deref</span>().<span class="ident">wallet_sync</span>(<span class="ident">database</span>, <span class="ident">progress_update</span>))
+ database: <span class="kw-2">&mut </span>D,
+ progress_update: Box<<span class="kw">dyn </span>Progress>,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">maybe_await!</span>(<span class="self">self</span>.deref().wallet_sync(database, progress_update))
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/rpc.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>rpc.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2021 by Riccardo Casatta <riccardo@casatta.it></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Rpc Blockchain</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Backend that gets blockchain data from Bitcoin Core RPC</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This is an **EXPERIMENTAL** feature, API and other major changes are expected.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bdk::blockchain::{RpcConfig, RpcBlockchain, ConfigurableBlockchain, rpc::Auth};</span>
-<span class="doccomment">//! let config = RpcConfig {</span>
-<span class="doccomment">//! url: "127.0.0.1:18332".to_string(),</span>
-<span class="doccomment">//! auth: Auth::Cookie {</span>
-<span class="doccomment">//! file: "/home/user/.bitcoin/.cookie".into(),</span>
-<span class="doccomment">//! },</span>
-<span class="doccomment">//! network: bdk::bitcoin::Network::Testnet,</span>
-<span class="doccomment">//! wallet_name: "wallet_name".to_string(),</span>
-<span class="doccomment">//! sync_params: None,</span>
-<span class="doccomment">//! };</span>
-<span class="doccomment">//! let blockchain = RpcBlockchain::from_config(&config);</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin::hashes::hex::ToHex</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin</span>::{<span class="ident">Network</span>, <span class="ident">OutPoint</span>, <span class="ident">Transaction</span>, <span class="ident">TxOut</span>, <span class="ident">Txid</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blockchain</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">DatabaseUtils</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::calc_checksum</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::MissingCachedScripts</span>;
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">BlockTime</span>, <span class="ident">Error</span>, <span class="ident">FeeRate</span>, <span class="ident">KeychainKind</span>, <span class="ident">LocalUtxo</span>, <span class="ident">TransactionDetails</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::Script</span>;
-<span class="kw">use</span> <span class="ident">bitcoincore_rpc::json</span>::{
- <span class="ident">GetTransactionResultDetailCategory</span>, <span class="ident">ImportMultiOptions</span>, <span class="ident">ImportMultiRequest</span>,
- <span class="ident">ImportMultiRequestScriptPubkey</span>, <span class="ident">ImportMultiRescanSince</span>, <span class="ident">ListTransactionResult</span>,
- <span class="ident">ListUnspentResultEntry</span>, <span class="ident">ScanningDetails</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/rpc.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>rpc.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2021 by Riccardo Casatta <riccardo@casatta.it>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Rpc Blockchain
+//!
+//! Backend that gets blockchain data from Bitcoin Core RPC
+//!
+//! This is an **EXPERIMENTAL** feature, API and other major changes are expected.
+//!
+//! ## Example
+//!
+//! ```no_run
+//! # use bdk::blockchain::{RpcConfig, RpcBlockchain, ConfigurableBlockchain, rpc::Auth};
+//! let config = RpcConfig {
+//! url: "127.0.0.1:18332".to_string(),
+//! auth: Auth::Cookie {
+//! file: "/home/user/.bitcoin/.cookie".into(),
+//! },
+//! network: bdk::bitcoin::Network::Testnet,
+//! wallet_name: "wallet_name".to_string(),
+//! sync_params: None,
+//! };
+//! let blockchain = RpcBlockchain::from_config(&config);
+//! ```
+
+</span><span class="kw">use </span><span class="kw">crate</span>::bitcoin::hashes::hex::ToHex;
+<span class="kw">use </span><span class="kw">crate</span>::bitcoin::{Network, OutPoint, Transaction, TxOut, Txid};
+<span class="kw">use </span><span class="kw">crate</span>::blockchain::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::database::{BatchDatabase, BatchOperations, DatabaseUtils};
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::calc_checksum;
+<span class="kw">use </span><span class="kw">crate</span>::error::MissingCachedScripts;
+<span class="kw">use crate</span>::{BlockTime, Error, FeeRate, KeychainKind, LocalUtxo, TransactionDetails};
+<span class="kw">use </span>bitcoin::Script;
+<span class="kw">use </span>bitcoincore_rpc::json::{
+ GetTransactionResultDetailCategory, ImportMultiOptions, ImportMultiRequest,
+ ImportMultiRequestScriptPubkey, ImportMultiRescanSince, ListTransactionResult,
+ ListUnspentResultEntry, ScanningDetails,
};
-<span class="kw">use</span> <span class="ident">bitcoincore_rpc::jsonrpc::serde_json</span>::{<span class="ident">json</span>, <span class="ident">Value</span>};
-<span class="kw">use</span> <span class="ident">bitcoincore_rpc::Auth</span> <span class="kw">as</span> <span class="ident">RpcAuth</span>;
-<span class="kw">use</span> <span class="ident">bitcoincore_rpc</span>::{<span class="ident">Client</span>, <span class="ident">RpcApi</span>};
-<span class="kw">use</span> <span class="ident">log</span>::{<span class="ident">debug</span>, <span class="ident">info</span>};
-<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">HashMap</span>, <span class="ident">HashSet</span>};
-<span class="kw">use</span> <span class="ident">std::ops::Deref</span>;
-<span class="kw">use</span> <span class="ident">std::path::PathBuf</span>;
-<span class="kw">use</span> <span class="ident">std::thread</span>;
-<span class="kw">use</span> <span class="ident">std::time::Duration</span>;
-
-<span class="doccomment">/// The main struct for RPC backend implementing the [crate::blockchain::Blockchain] trait</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">RpcBlockchain</span> {
- <span class="doccomment">/// Rpc client to the node, includes the wallet name</span>
- <span class="ident">client</span>: <span class="ident">Client</span>,
- <span class="doccomment">/// Whether the wallet is a "descriptor" or "legacy" wallet in Core</span>
- <span class="ident">is_descriptors</span>: <span class="ident">bool</span>,
- <span class="doccomment">/// Blockchain capabilities, cached here at startup</span>
- <span class="ident">capabilities</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span>,
- <span class="doccomment">/// Sync parameters.</span>
- <span class="ident">sync_params</span>: <span class="ident">RpcSyncParams</span>,
+<span class="kw">use </span>bitcoincore_rpc::jsonrpc::serde_json::{json, Value};
+<span class="kw">use </span>bitcoincore_rpc::Auth <span class="kw">as </span>RpcAuth;
+<span class="kw">use </span>bitcoincore_rpc::{Client, RpcApi};
+<span class="kw">use </span>log::{debug, info};
+<span class="kw">use </span>serde::{Deserialize, Serialize};
+<span class="kw">use </span>std::collections::{HashMap, HashSet};
+<span class="kw">use </span>std::ops::Deref;
+<span class="kw">use </span>std::path::PathBuf;
+<span class="kw">use </span>std::thread;
+<span class="kw">use </span>std::time::Duration;
+
+<span class="doccomment">/// The main struct for RPC backend implementing the [crate::blockchain::Blockchain] trait
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>RpcBlockchain {
+ <span class="doccomment">/// Rpc client to the node, includes the wallet name
+ </span>client: Client,
+ <span class="doccomment">/// Whether the wallet is a "descriptor" or "legacy" wallet in Core
+ </span>is_descriptors: bool,
+ <span class="doccomment">/// Blockchain capabilities, cached here at startup
+ </span>capabilities: HashSet<Capability>,
+ <span class="doccomment">/// Sync parameters.
+ </span>sync_params: RpcSyncParams,
}
-<span class="kw">impl</span> <span class="ident">Deref</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Target</span> <span class="op">=</span> <span class="ident">Client</span>;
+<span class="kw">impl </span>Deref <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">type </span>Target = Client;
- <span class="kw">fn</span> <span class="ident">deref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Target</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">client</span>
+ <span class="kw">fn </span>deref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="self">Self</span>::Target {
+ <span class="kw-2">&</span><span class="self">self</span>.client
}
}
-<span class="doccomment">/// RpcBlockchain configuration options</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">RpcConfig</span> {
- <span class="doccomment">/// The bitcoin node url</span>
- <span class="kw">pub</span> <span class="ident">url</span>: <span class="ident">String</span>,
- <span class="doccomment">/// The bitcoin node authentication mechanism</span>
- <span class="kw">pub</span> <span class="ident">auth</span>: <span class="ident">Auth</span>,
- <span class="doccomment">/// The network we are using (it will be checked the bitcoin node network matches this)</span>
- <span class="kw">pub</span> <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="doccomment">/// The wallet name in the bitcoin node, consider using [crate::wallet::wallet_name_from_descriptor] for this</span>
- <span class="kw">pub</span> <span class="ident">wallet_name</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Sync parameters</span>
- <span class="kw">pub</span> <span class="ident">sync_params</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">RpcSyncParams</span><span class="op">></span>,
+<span class="doccomment">/// RpcBlockchain configuration options
+</span><span class="attr">#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>RpcConfig {
+ <span class="doccomment">/// The bitcoin node url
+ </span><span class="kw">pub </span>url: String,
+ <span class="doccomment">/// The bitcoin node authentication mechanism
+ </span><span class="kw">pub </span>auth: Auth,
+ <span class="doccomment">/// The network we are using (it will be checked the bitcoin node network matches this)
+ </span><span class="kw">pub </span>network: Network,
+ <span class="doccomment">/// The wallet name in the bitcoin node, consider using [crate::wallet::wallet_name_from_descriptor] for this
+ </span><span class="kw">pub </span>wallet_name: String,
+ <span class="doccomment">/// Sync parameters
+ </span><span class="kw">pub </span>sync_params: <span class="prelude-ty">Option</span><RpcSyncParams>,
}
-<span class="doccomment">/// Sync parameters for Bitcoin Core RPC.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// In general, BDK tries to sync `scriptPubKey`s cached in [`crate::database::Database`] with</span>
-<span class="doccomment">/// `scriptPubKey`s imported in the Bitcoin Core Wallet. These parameters are used for determining</span>
-<span class="doccomment">/// how the `importdescriptors` RPC calls are to be made.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">RpcSyncParams</span> {
- <span class="doccomment">/// The minimum number of scripts to scan for on initial sync.</span>
- <span class="kw">pub</span> <span class="ident">start_script_count</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// Time in unix seconds in which initial sync will start scanning from (0 to start from genesis).</span>
- <span class="kw">pub</span> <span class="ident">start_time</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Forces every sync to use `start_time` as import timestamp.</span>
- <span class="kw">pub</span> <span class="ident">force_start_time</span>: <span class="ident">bool</span>,
- <span class="doccomment">/// RPC poll rate (in seconds) to get state updates.</span>
- <span class="kw">pub</span> <span class="ident">poll_rate_sec</span>: <span class="ident">u64</span>,
+<span class="doccomment">/// Sync parameters for Bitcoin Core RPC.
+///
+/// In general, BDK tries to sync `scriptPubKey`s cached in [`crate::database::Database`] with
+/// `scriptPubKey`s imported in the Bitcoin Core Wallet. These parameters are used for determining
+/// how the `importdescriptors` RPC calls are to be made.
+</span><span class="attr">#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>RpcSyncParams {
+ <span class="doccomment">/// The minimum number of scripts to scan for on initial sync.
+ </span><span class="kw">pub </span>start_script_count: usize,
+ <span class="doccomment">/// Time in unix seconds in which initial sync will start scanning from (0 to start from genesis).
+ </span><span class="kw">pub </span>start_time: u64,
+ <span class="doccomment">/// Forces every sync to use `start_time` as import timestamp.
+ </span><span class="kw">pub </span>force_start_time: bool,
+ <span class="doccomment">/// RPC poll rate (in seconds) to get state updates.
+ </span><span class="kw">pub </span>poll_rate_sec: u64,
}
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">RpcSyncParams</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="ident">start_script_count</span>: <span class="number">100</span>,
- <span class="ident">start_time</span>: <span class="number">0</span>,
- <span class="ident">force_start_time</span>: <span class="bool-val">false</span>,
- <span class="ident">poll_rate_sec</span>: <span class="number">3</span>,
+<span class="kw">impl </span>Default <span class="kw">for </span>RpcSyncParams {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ start_script_count: <span class="number">100</span>,
+ start_time: <span class="number">0</span>,
+ force_start_time: <span class="bool-val">false</span>,
+ poll_rate_sec: <span class="number">3</span>,
}
}
}
-<span class="doccomment">/// This struct is equivalent to [bitcoincore_rpc::Auth] but it implements [serde::Serialize]</span>
-<span class="doccomment">/// To be removed once upstream equivalent is implementing Serialize (json serialization format</span>
-<span class="doccomment">/// should be the same), see [rust-bitcoincore-rpc/pull/181](https://github.com/rust-bitcoin/rust-bitcoincore-rpc/pull/181)</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Hash</span>, <span class="ident">Eq</span>, <span class="ident">PartialEq</span>, <span class="ident">Ord</span>, <span class="ident">PartialOrd</span>, <span class="ident">Serialize</span>, <span class="ident">Deserialize</span>)]</span>
-<span class="attribute">#[<span class="ident">serde</span>(<span class="ident">rename_all</span> <span class="op">=</span> <span class="string">"snake_case"</span>)]</span>
-<span class="attribute">#[<span class="ident">serde</span>(<span class="ident">untagged</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Auth</span> {
- <span class="doccomment">/// None authentication</span>
- <span class="prelude-val">None</span>,
- <span class="doccomment">/// Authentication with username and password, usually [Auth::Cookie] should be preferred</span>
- <span class="ident">UserPass</span> {
- <span class="doccomment">/// Username</span>
- <span class="ident">username</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Password</span>
- <span class="ident">password</span>: <span class="ident">String</span>,
+<span class="doccomment">/// This struct is equivalent to [bitcoincore_rpc::Auth] but it implements [serde::Serialize]
+/// To be removed once upstream equivalent is implementing Serialize (json serialization format
+/// should be the same), see [rust-bitcoincore-rpc/pull/181](https://github.com/rust-bitcoin/rust-bitcoincore-rpc/pull/181)
+</span><span class="attr">#[derive(Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+#[serde(untagged)]
+</span><span class="kw">pub enum </span>Auth {
+ <span class="doccomment">/// None authentication
+ </span><span class="prelude-val">None</span>,
+ <span class="doccomment">/// Authentication with username and password, usually [Auth::Cookie] should be preferred
+ </span>UserPass {
+ <span class="doccomment">/// Username
+ </span>username: String,
+ <span class="doccomment">/// Password
+ </span>password: String,
},
- <span class="doccomment">/// Authentication with a cookie file</span>
- <span class="ident">Cookie</span> {
- <span class="doccomment">/// Cookie file</span>
- <span class="ident">file</span>: <span class="ident">PathBuf</span>,
+ <span class="doccomment">/// Authentication with a cookie file
+ </span>Cookie {
+ <span class="doccomment">/// Cookie file
+ </span>file: PathBuf,
},
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">Auth</span><span class="op">></span> <span class="kw">for</span> <span class="ident">RpcAuth</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">auth</span>: <span class="ident">Auth</span>) -> <span class="self">Self</span> {
- <span class="kw">match</span> <span class="ident">auth</span> {
- <span class="ident">Auth::None</span> => <span class="ident">RpcAuth::None</span>,
- <span class="ident">Auth::UserPass</span> { <span class="ident">username</span>, <span class="ident">password</span> } => <span class="ident">RpcAuth::UserPass</span>(<span class="ident">username</span>, <span class="ident">password</span>),
- <span class="ident">Auth::Cookie</span> { <span class="ident">file</span> } => <span class="ident">RpcAuth::CookieFile</span>(<span class="ident">file</span>),
+<span class="kw">impl </span>From<Auth> <span class="kw">for </span>RpcAuth {
+ <span class="kw">fn </span>from(auth: Auth) -> <span class="self">Self </span>{
+ <span class="kw">match </span>auth {
+ Auth::None => RpcAuth::None,
+ Auth::UserPass { username, password } => RpcAuth::UserPass(username, password),
+ Auth::Cookie { file } => RpcAuth::CookieFile(file),
}
}
}
-<span class="kw">impl</span> <span class="ident">Blockchain</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_capabilities</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Capability</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>()
+<span class="kw">impl </span>Blockchain <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">fn </span>get_capabilities(<span class="kw-2">&</span><span class="self">self</span>) -> HashSet<Capability> {
+ <span class="self">self</span>.capabilities.clone()
}
- <span class="kw">fn</span> <span class="ident">broadcast</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">send_raw_transaction</span>(<span class="ident">tx</span>).<span class="ident">map</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> ())<span class="question-mark">?</span>)
+ <span class="kw">fn </span>broadcast(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.client.send_raw_transaction(tx).map(|<span class="kw">_</span>| ())<span class="question-mark">?</span>)
}
- <span class="kw">fn</span> <span class="ident">estimate_fee</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">target</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FeeRate</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">sat_per_kb</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">client</span>
- .<span class="ident">estimate_smart_fee</span>(<span class="ident">target</span> <span class="kw">as</span> <span class="ident">u16</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>
- .<span class="ident">fee_rate</span>
- .<span class="ident">ok_or</span>(<span class="ident">Error::FeeRateUnavailable</span>)<span class="question-mark">?</span>
- .<span class="ident">to_sat</span>() <span class="kw">as</span> <span class="ident">f64</span>;
+ <span class="kw">fn </span>estimate_fee(<span class="kw-2">&</span><span class="self">self</span>, target: usize) -> <span class="prelude-ty">Result</span><FeeRate, Error> {
+ <span class="kw">let </span>sat_per_kb = <span class="self">self
+ </span>.client
+ .estimate_smart_fee(target <span class="kw">as </span>u16, <span class="prelude-val">None</span>)<span class="question-mark">?
+ </span>.fee_rate
+ .ok_or(Error::FeeRateUnavailable)<span class="question-mark">?
+ </span>.to_sat() <span class="kw">as </span>f64;
- <span class="prelude-val">Ok</span>(<span class="ident">FeeRate::from_sat_per_vb</span>((<span class="ident">sat_per_kb</span> <span class="op">/</span> <span class="number">1000f64</span>) <span class="kw">as</span> <span class="ident">f32</span>))
+ <span class="prelude-val">Ok</span>(FeeRate::from_sat_per_vb((sat_per_kb / <span class="number">1000f64</span>) <span class="kw">as </span>f32))
}
}
-<span class="kw">impl</span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">get_raw_transaction</span>(<span class="ident">txid</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>))
+<span class="kw">impl </span>GetTx <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.client.get_raw_transaction(txid, <span class="prelude-val">None</span>)<span class="question-mark">?</span>))
}
}
-<span class="kw">impl</span> <span class="ident">GetHeight</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_height</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">get_blockchain_info</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">blocks</span> <span class="kw">as</span> <span class="ident">u32</span>)<span class="question-mark">?</span>)
+<span class="kw">impl </span>GetHeight <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">fn </span>get_height(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.client.get_blockchain_info().map(|i| i.blocks <span class="kw">as </span>u32)<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">GetBlockHash</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_block_hash</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u64</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">BlockHash</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">get_block_hash</span>(<span class="ident">height</span>)<span class="question-mark">?</span>)
+<span class="kw">impl </span>GetBlockHash <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">fn </span>get_block_hash(<span class="kw-2">&</span><span class="self">self</span>, height: u64) -> <span class="prelude-ty">Result</span><BlockHash, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.client.get_block_hash(height)<span class="question-mark">?</span>)
}
}
-<span class="kw">impl</span> <span class="ident">WalletSync</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">wallet_setup</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">db</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>, <span class="ident">prog</span>: <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>
- <span class="kw">where</span>
- <span class="ident">D</span>: <span class="ident">BatchDatabase</span>,
+<span class="kw">impl </span>WalletSync <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">fn </span>wallet_setup<D>(<span class="kw-2">&</span><span class="self">self</span>, db: <span class="kw-2">&mut </span>D, prog: Box<<span class="kw">dyn </span>Progress>) -> <span class="prelude-ty">Result</span><(), Error>
+ <span class="kw">where
+ </span>D: BatchDatabase,
{
- <span class="kw">let</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">DbState::new</span>(<span class="ident">db</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">sync_params</span>, <span class="kw-2">&</span><span class="kw-2">*</span><span class="ident">prog</span>)<span class="question-mark">?</span>
- .<span class="ident">sync_with_core</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">client</span>, <span class="self">self</span>.<span class="ident">is_descriptors</span>)<span class="question-mark">?</span>
- .<span class="ident">as_db_batch</span>()<span class="question-mark">?</span>;
+ <span class="kw">let </span>batch = DbState::new(db, <span class="kw-2">&</span><span class="self">self</span>.sync_params, <span class="kw-2">&*</span>prog)<span class="question-mark">?
+ </span>.sync_with_core(<span class="kw-2">&</span><span class="self">self</span>.client, <span class="self">self</span>.is_descriptors)<span class="question-mark">?
+ </span>.as_db_batch()<span class="question-mark">?</span>;
- <span class="ident">db</span>.<span class="ident">commit_batch</span>(<span class="ident">batch</span>)
+ db.commit_batch(batch)
}
}
-<span class="kw">impl</span> <span class="ident">ConfigurableBlockchain</span> <span class="kw">for</span> <span class="ident">RpcBlockchain</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">RpcConfig</span>;
-
- <span class="doccomment">/// Returns RpcBlockchain backend creating an RPC client to a specific wallet named as the descriptor's checksum</span>
- <span class="doccomment">/// if it's the first time it creates the wallet in the node and upon return is granted the wallet is loaded</span>
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">wallet_url</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">"{}/wallet/{}"</span>, <span class="ident">config</span>.<span class="ident">url</span>, <span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">wallet_name</span>);
-
- <span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">Client::new</span>(<span class="ident">wallet_url</span>.<span class="ident">as_str</span>(), <span class="ident">config</span>.<span class="ident">auth</span>.<span class="ident">clone</span>().<span class="ident">into</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">rpc_version</span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">version</span>()<span class="question-mark">?</span>;
-
- <span class="macro">info!</span>(<span class="string">"connected to '{}' with auth: {:?}"</span>, <span class="ident">wallet_url</span>, <span class="ident">config</span>.<span class="ident">auth</span>);
-
- <span class="kw">if</span> <span class="ident">client</span>.<span class="ident">list_wallets</span>()<span class="question-mark">?</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">wallet_name</span>) {
- <span class="macro">info!</span>(<span class="string">"wallet already loaded: {}"</span>, <span class="ident">config</span>.<span class="ident">wallet_name</span>);
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">list_wallet_dir</span>(<span class="kw-2">&</span><span class="ident">client</span>)<span class="question-mark">?</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">wallet_name</span>) {
- <span class="ident">client</span>.<span class="ident">load_wallet</span>(<span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">wallet_name</span>)<span class="question-mark">?</span>;
- <span class="macro">info!</span>(<span class="string">"wallet loaded: {}"</span>, <span class="ident">config</span>.<span class="ident">wallet_name</span>);
- } <span class="kw">else</span> {
- <span class="comment">// pre-0.21 use legacy wallets</span>
- <span class="kw">if</span> <span class="ident">rpc_version</span> <span class="op"><</span> <span class="number">210_000</span> {
- <span class="ident">client</span>.<span class="ident">create_wallet</span>(<span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">wallet_name</span>, <span class="prelude-val">Some</span>(<span class="bool-val">true</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="comment">// TODO: move back to api call when https://github.com/rust-bitcoin/rust-bitcoincore-rpc/issues/225 is closed</span>
- <span class="kw">let</span> <span class="ident">args</span> <span class="op">=</span> [
- <span class="ident">Value::String</span>(<span class="ident">config</span>.<span class="ident">wallet_name</span>.<span class="ident">clone</span>()),
- <span class="ident">Value::Bool</span>(<span class="bool-val">true</span>),
- <span class="ident">Value::Bool</span>(<span class="bool-val">false</span>),
- <span class="ident">Value::Null</span>,
- <span class="ident">Value::Bool</span>(<span class="bool-val">false</span>),
- <span class="ident">Value::Bool</span>(<span class="bool-val">true</span>),
+<span class="kw">impl </span>ConfigurableBlockchain <span class="kw">for </span>RpcBlockchain {
+ <span class="kw">type </span>Config = RpcConfig;
+
+ <span class="doccomment">/// Returns RpcBlockchain backend creating an RPC client to a specific wallet named as the descriptor's checksum
+ /// if it's the first time it creates the wallet in the node and upon return is granted the wallet is loaded
+ </span><span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="kw">let </span>wallet_url = <span class="macro">format!</span>(<span class="string">"{}/wallet/{}"</span>, config.url, <span class="kw-2">&</span>config.wallet_name);
+
+ <span class="kw">let </span>client = Client::new(wallet_url.as_str(), config.auth.clone().into())<span class="question-mark">?</span>;
+ <span class="kw">let </span>rpc_version = client.version()<span class="question-mark">?</span>;
+
+ <span class="macro">info!</span>(<span class="string">"connected to '{}' with auth: {:?}"</span>, wallet_url, config.auth);
+
+ <span class="kw">if </span>client.list_wallets()<span class="question-mark">?</span>.contains(<span class="kw-2">&</span>config.wallet_name) {
+ <span class="macro">info!</span>(<span class="string">"wallet already loaded: {}"</span>, config.wallet_name);
+ } <span class="kw">else if </span>list_wallet_dir(<span class="kw-2">&</span>client)<span class="question-mark">?</span>.contains(<span class="kw-2">&</span>config.wallet_name) {
+ client.load_wallet(<span class="kw-2">&</span>config.wallet_name)<span class="question-mark">?</span>;
+ <span class="macro">info!</span>(<span class="string">"wallet loaded: {}"</span>, config.wallet_name);
+ } <span class="kw">else </span>{
+ <span class="comment">// pre-0.21 use legacy wallets
+ </span><span class="kw">if </span>rpc_version < <span class="number">210_000 </span>{
+ client.create_wallet(<span class="kw-2">&</span>config.wallet_name, <span class="prelude-val">Some</span>(<span class="bool-val">true</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ <span class="comment">// TODO: move back to api call when https://github.com/rust-bitcoin/rust-bitcoincore-rpc/issues/225 is closed
+ </span><span class="kw">let </span>args = [
+ Value::String(config.wallet_name.clone()),
+ Value::Bool(<span class="bool-val">true</span>),
+ Value::Bool(<span class="bool-val">false</span>),
+ Value::Null,
+ Value::Bool(<span class="bool-val">false</span>),
+ Value::Bool(<span class="bool-val">true</span>),
];
- <span class="kw">let</span> <span class="kw">_</span>: <span class="ident">Value</span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">call</span>(<span class="string">"createwallet"</span>, <span class="kw-2">&</span><span class="ident">args</span>)<span class="question-mark">?</span>;
+ <span class="kw">let _</span>: Value = client.call(<span class="string">"createwallet"</span>, <span class="kw-2">&</span>args)<span class="question-mark">?</span>;
}
- <span class="macro">info!</span>(<span class="string">"wallet created: {}"</span>, <span class="ident">config</span>.<span class="ident">wallet_name</span>);
+ <span class="macro">info!</span>(<span class="string">"wallet created: {}"</span>, config.wallet_name);
}
- <span class="kw">let</span> <span class="ident">is_descriptors</span> <span class="op">=</span> <span class="ident">is_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">client</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>is_descriptors = is_wallet_descriptor(<span class="kw-2">&</span>client)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">blockchain_info</span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">get_blockchain_info</span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">network</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">blockchain_info</span>.<span class="ident">chain</span>.<span class="ident">as_str</span>() {
- <span class="string">"main"</span> => <span class="ident">Network::Bitcoin</span>,
- <span class="string">"test"</span> => <span class="ident">Network::Testnet</span>,
- <span class="string">"regtest"</span> => <span class="ident">Network::Regtest</span>,
- <span class="string">"signet"</span> => <span class="ident">Network::Signet</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="string">"Invalid network"</span>.<span class="ident">to_string</span>())),
+ <span class="kw">let </span>blockchain_info = client.get_blockchain_info()<span class="question-mark">?</span>;
+ <span class="kw">let </span>network = <span class="kw">match </span>blockchain_info.chain.as_str() {
+ <span class="string">"main" </span>=> Network::Bitcoin,
+ <span class="string">"test" </span>=> Network::Testnet,
+ <span class="string">"regtest" </span>=> Network::Regtest,
+ <span class="string">"signet" </span>=> Network::Signet,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="string">"Invalid network"</span>.to_string())),
};
- <span class="kw">if</span> <span class="ident">network</span> <span class="op">!</span><span class="op">=</span> <span class="ident">config</span>.<span class="ident">network</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::InvalidNetwork</span> {
- <span class="ident">requested</span>: <span class="ident">config</span>.<span class="ident">network</span>,
- <span class="ident">found</span>: <span class="ident">network</span>,
+ <span class="kw">if </span>network != config.network {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidNetwork {
+ requested: config.network,
+ found: network,
});
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">capabilities</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">Capability::FullHistory</span>].<span class="ident">into_iter</span>().<span class="ident">collect</span>();
- <span class="kw">if</span> <span class="ident">rpc_version</span> <span class="op">></span><span class="op">=</span> <span class="number">210_000</span> {
- <span class="kw">let</span> <span class="ident">info</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Value</span><span class="op">></span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">call</span>(<span class="string">"getindexinfo"</span>, <span class="kw-2">&</span>[]).<span class="ident">unwrap</span>();
- <span class="kw">if</span> <span class="ident">info</span>.<span class="ident">contains_key</span>(<span class="string">"txindex"</span>) {
- <span class="ident">capabilities</span>.<span class="ident">insert</span>(<span class="ident">Capability::GetAnyTx</span>);
- <span class="ident">capabilities</span>.<span class="ident">insert</span>(<span class="ident">Capability::AccurateFees</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>capabilities: HashSet<<span class="kw">_</span>> = <span class="macro">vec!</span>[Capability::FullHistory].into_iter().collect();
+ <span class="kw">if </span>rpc_version >= <span class="number">210_000 </span>{
+ <span class="kw">let </span>info: HashMap<String, Value> = client.call(<span class="string">"getindexinfo"</span>, <span class="kw-2">&</span>[]).unwrap();
+ <span class="kw">if </span>info.contains_key(<span class="string">"txindex"</span>) {
+ capabilities.insert(Capability::GetAnyTx);
+ capabilities.insert(Capability::AccurateFees);
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">RpcBlockchain</span> {
- <span class="ident">client</span>,
- <span class="ident">capabilities</span>,
- <span class="ident">is_descriptors</span>,
- <span class="ident">sync_params</span>: <span class="ident">config</span>.<span class="ident">sync_params</span>.<span class="ident">clone</span>().<span class="ident">unwrap_or_default</span>(),
+ <span class="prelude-val">Ok</span>(RpcBlockchain {
+ client,
+ capabilities,
+ is_descriptors,
+ sync_params: config.sync_params.clone().unwrap_or_default(),
})
}
}
-<span class="doccomment">/// return the wallets available in default wallet directory</span>
-<span class="comment">//TODO use bitcoincore_rpc method when PR #179 lands</span>
-<span class="kw">fn</span> <span class="ident">list_wallet_dir</span>(<span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>)]</span>
- <span class="kw">struct</span> <span class="ident">Name</span> {
- <span class="ident">name</span>: <span class="ident">String</span>,
+<span class="doccomment">/// return the wallets available in default wallet directory
+</span><span class="comment">//TODO use bitcoincore_rpc method when PR #179 lands
+</span><span class="kw">fn </span>list_wallet_dir(client: <span class="kw-2">&</span>Client) -> <span class="prelude-ty">Result</span><Vec<String>, Error> {
+ <span class="attr">#[derive(Deserialize)]
+ </span><span class="kw">struct </span>Name {
+ name: String,
}
- <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>)]</span>
- <span class="kw">struct</span> <span class="ident">CallResult</span> {
- <span class="ident">wallets</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Name</span><span class="op">></span>,
+ <span class="attr">#[derive(Deserialize)]
+ </span><span class="kw">struct </span>CallResult {
+ wallets: Vec<Name>,
}
- <span class="kw">let</span> <span class="ident">result</span>: <span class="ident">CallResult</span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">call</span>(<span class="string">"listwalletdir"</span>, <span class="kw-2">&</span>[])<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">result</span>.<span class="ident">wallets</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">n</span><span class="op">|</span> <span class="ident">n</span>.<span class="ident">name</span>).<span class="ident">collect</span>())
+ <span class="kw">let </span>result: CallResult = client.call(<span class="string">"listwalletdir"</span>, <span class="kw-2">&</span>[])<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(result.wallets.into_iter().map(|n| n.name).collect())
}
-<span class="doccomment">/// Represents the state of the [`crate::database::Database`].</span>
-<span class="kw">struct</span> <span class="ident">DbState</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="ident">db</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">D</span>,
- <span class="ident">params</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">RpcSyncParams</span>,
- <span class="ident">prog</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="kw">dyn</span> <span class="ident">Progress</span>,
-
- <span class="ident">ext_spks</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>,
- <span class="ident">int_spks</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>,
- <span class="ident">txs</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">Txid</span>, <span class="ident">TransactionDetails</span><span class="op">></span>,
- <span class="ident">utxos</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>,
- <span class="ident">last_indexes</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">KeychainKind</span>, <span class="ident">u32</span><span class="op">></span>,
-
- <span class="comment">// "deltas" to apply to database</span>
- <span class="ident">retained_txs</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Txid</span><span class="op">></span>, <span class="comment">// txs to retain (everything else should be deleted)</span>
- <span class="ident">updated_txs</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Txid</span><span class="op">></span>, <span class="comment">// txs to update</span>
- <span class="ident">updated_utxos</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="comment">// utxos to update</span>
-}
-
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> <span class="ident">DbState</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="doccomment">/// Obtain [DbState] from [crate::database::Database].</span>
- <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">db</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">D</span>, <span class="ident">params</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">RpcSyncParams</span>, <span class="ident">prog</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="kw">dyn</span> <span class="ident">Progress</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">ext_spks</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">Some</span>(<span class="ident">KeychainKind::External</span>))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">int_spks</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">Some</span>(<span class="ident">KeychainKind::Internal</span>))<span class="question-mark">?</span>;
-
- <span class="comment">// This is a hack to see whether atleast one of the keychains comes from a derivable</span>
- <span class="comment">// descriptor. We assume that non-derivable descriptors always has a script count of 1.</span>
- <span class="kw">let</span> <span class="ident">last_count</span> <span class="op">=</span> <span class="ident">std::cmp::max</span>(<span class="ident">ext_spks</span>.<span class="ident">len</span>(), <span class="ident">int_spks</span>.<span class="ident">len</span>());
- <span class="kw">let</span> <span class="ident">has_derivable</span> <span class="op">=</span> <span class="ident">last_count</span> <span class="op">></span> <span class="number">1</span>;
-
- <span class="comment">// If at least one descriptor is derivable, we need to ensure scriptPubKeys are sufficiently</span>
- <span class="comment">// cached.</span>
- <span class="kw">if</span> <span class="ident">has_derivable</span> <span class="op">&&</span> <span class="ident">last_count</span> <span class="op"><</span> <span class="ident">params</span>.<span class="ident">start_script_count</span> {
- <span class="kw">let</span> <span class="ident">inner_err</span> <span class="op">=</span> <span class="ident">MissingCachedScripts</span> {
- <span class="ident">last_count</span>,
- <span class="ident">missing_count</span>: <span class="ident">params</span>.<span class="ident">start_script_count</span> <span class="op">-</span> <span class="ident">last_count</span>,
+<span class="doccomment">/// Represents the state of the [`crate::database::Database`].
+</span><span class="kw">struct </span>DbState<<span class="lifetime">'a</span>, D> {
+ db: <span class="kw-2">&</span><span class="lifetime">'a </span>D,
+ params: <span class="kw-2">&</span><span class="lifetime">'a </span>RpcSyncParams,
+ prog: <span class="kw-2">&</span><span class="lifetime">'a </span><span class="kw">dyn </span>Progress,
+
+ ext_spks: Vec<Script>,
+ int_spks: Vec<Script>,
+ txs: HashMap<Txid, TransactionDetails>,
+ utxos: HashSet<LocalUtxo>,
+ last_indexes: HashMap<KeychainKind, u32>,
+
+ <span class="comment">// "deltas" to apply to database
+ </span>retained_txs: HashSet<Txid>, <span class="comment">// txs to retain (everything else should be deleted)
+ </span>updated_txs: HashSet<Txid>, <span class="comment">// txs to update
+ </span>updated_utxos: HashSet<LocalUtxo>, <span class="comment">// utxos to update
+</span>}
+
+<span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase> DbState<<span class="lifetime">'a</span>, D> {
+ <span class="doccomment">/// Obtain [DbState] from [crate::database::Database].
+ </span><span class="kw">fn </span>new(db: <span class="kw-2">&</span><span class="lifetime">'a </span>D, params: <span class="kw-2">&</span><span class="lifetime">'a </span>RpcSyncParams, prog: <span class="kw-2">&</span><span class="lifetime">'a </span><span class="kw">dyn </span>Progress) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="kw">let </span>ext_spks = db.iter_script_pubkeys(<span class="prelude-val">Some</span>(KeychainKind::External))<span class="question-mark">?</span>;
+ <span class="kw">let </span>int_spks = db.iter_script_pubkeys(<span class="prelude-val">Some</span>(KeychainKind::Internal))<span class="question-mark">?</span>;
+
+ <span class="comment">// This is a hack to see whether atleast one of the keychains comes from a derivable
+ // descriptor. We assume that non-derivable descriptors always has a script count of 1.
+ </span><span class="kw">let </span>last_count = std::cmp::max(ext_spks.len(), int_spks.len());
+ <span class="kw">let </span>has_derivable = last_count > <span class="number">1</span>;
+
+ <span class="comment">// If at least one descriptor is derivable, we need to ensure scriptPubKeys are sufficiently
+ // cached.
+ </span><span class="kw">if </span>has_derivable && last_count < params.start_script_count {
+ <span class="kw">let </span>inner_err = MissingCachedScripts {
+ last_count,
+ missing_count: params.start_script_count - last_count,
};
- <span class="macro">debug!</span>(<span class="string">"requesting more spks with: {:?}"</span>, <span class="ident">inner_err</span>);
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::MissingCachedScripts</span>(<span class="ident">inner_err</span>));
+ <span class="macro">debug!</span>(<span class="string">"requesting more spks with: {:?}"</span>, inner_err);
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::MissingCachedScripts(inner_err));
}
- <span class="kw">let</span> <span class="ident">txs</span> <span class="op">=</span> <span class="ident">db</span>
- .<span class="ident">iter_txs</span>(<span class="bool-val">true</span>)<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> (<span class="ident">tx</span>.<span class="ident">txid</span>, <span class="ident">tx</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">HashMap</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ <span class="kw">let </span>txs = db
+ .iter_txs(<span class="bool-val">true</span>)<span class="question-mark">?
+ </span>.into_iter()
+ .map(|tx| (tx.txid, tx))
+ .collect::<HashMap<<span class="kw">_</span>, <span class="kw">_</span>>>();
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_utxos</span>()<span class="question-mark">?</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="ident">HashSet</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ <span class="kw">let </span>utxos = db.iter_utxos()<span class="question-mark">?</span>.into_iter().collect::<HashSet<<span class="kw">_</span>>>();
- <span class="kw">let</span> <span class="ident">last_indexes</span> <span class="op">=</span> [<span class="ident">KeychainKind::External</span>, <span class="ident">KeychainKind::Internal</span>]
- .<span class="ident">iter</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">keychain</span><span class="op">|</span> <span class="kw">match</span> <span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="kw-2">*</span><span class="ident">keychain</span>) {
- <span class="prelude-val">Ok</span>(<span class="ident">li_opt</span>) => <span class="ident">li_opt</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">li</span><span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="kw-2">*</span><span class="ident">keychain</span>, <span class="ident">li</span>))),
- <span class="prelude-val">Err</span>(<span class="ident">err</span>) => <span class="prelude-val">Some</span>(<span class="prelude-val">Err</span>(<span class="ident">err</span>)),
+ <span class="kw">let </span>last_indexes = [KeychainKind::External, KeychainKind::Internal]
+ .iter()
+ .filter_map(|keychain| <span class="kw">match </span>db.get_last_index(<span class="kw-2">*</span>keychain) {
+ <span class="prelude-val">Ok</span>(li_opt) => li_opt.map(|li| <span class="prelude-val">Ok</span>((<span class="kw-2">*</span>keychain, li))),
+ <span class="prelude-val">Err</span>(err) => <span class="prelude-val">Some</span>(<span class="prelude-val">Err</span>(err)),
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">HashMap</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="macro">info!</span>(<span class="string">"initial db state: txs={} utxos={}"</span>, <span class="ident">txs</span>.<span class="ident">len</span>(), <span class="ident">utxos</span>.<span class="ident">len</span>());
-
- <span class="comment">// "delta" fields</span>
- <span class="kw">let</span> <span class="ident">retained_txs</span> <span class="op">=</span> <span class="ident">HashSet::with_capacity</span>(<span class="ident">txs</span>.<span class="ident">len</span>());
- <span class="kw">let</span> <span class="ident">updated_txs</span> <span class="op">=</span> <span class="ident">HashSet::with_capacity</span>(<span class="ident">txs</span>.<span class="ident">len</span>());
- <span class="kw">let</span> <span class="ident">updated_utxos</span> <span class="op">=</span> <span class="ident">HashSet::with_capacity</span>(<span class="ident">utxos</span>.<span class="ident">len</span>());
-
- <span class="prelude-val">Ok</span>(<span class="self">Self</span> {
- <span class="ident">db</span>,
- <span class="ident">params</span>,
- <span class="ident">prog</span>,
- <span class="ident">ext_spks</span>,
- <span class="ident">int_spks</span>,
- <span class="ident">txs</span>,
- <span class="ident">utxos</span>,
- <span class="ident">last_indexes</span>,
- <span class="ident">retained_txs</span>,
- <span class="ident">updated_txs</span>,
- <span class="ident">updated_utxos</span>,
+ .collect::<<span class="prelude-ty">Result</span><HashMap<<span class="kw">_</span>, <span class="kw">_</span>>, Error>>()<span class="question-mark">?</span>;
+
+ <span class="macro">info!</span>(<span class="string">"initial db state: txs={} utxos={}"</span>, txs.len(), utxos.len());
+
+ <span class="comment">// "delta" fields
+ </span><span class="kw">let </span>retained_txs = HashSet::with_capacity(txs.len());
+ <span class="kw">let </span>updated_txs = HashSet::with_capacity(txs.len());
+ <span class="kw">let </span>updated_utxos = HashSet::with_capacity(utxos.len());
+
+ <span class="prelude-val">Ok</span>(<span class="self">Self </span>{
+ db,
+ params,
+ prog,
+ ext_spks,
+ int_spks,
+ txs,
+ utxos,
+ last_indexes,
+ retained_txs,
+ updated_txs,
+ updated_utxos,
})
}
- <span class="doccomment">/// Sync states of [BatchDatabase] and Core wallet.</span>
- <span class="doccomment">/// First we import all `scriptPubKey`s from database into core wallet</span>
- <span class="kw">fn</span> <span class="ident">sync_with_core</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>, <span class="ident">is_descriptor</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw-2">&mut</span> <span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// this tells Core wallet where to sync from for imported scripts</span>
- <span class="kw">let</span> <span class="ident">start_epoch</span> <span class="op">=</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">force_start_time</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">start_time</span>
- } <span class="kw">else</span> {
- <span class="self">self</span>.<span class="ident">db</span>
- .<span class="ident">get_sync_time</span>()<span class="question-mark">?</span>
- .<span class="ident">map_or</span>(<span class="self">self</span>.<span class="ident">params</span>.<span class="ident">start_time</span>, <span class="op">|</span><span class="ident">st</span><span class="op">|</span> <span class="ident">st</span>.<span class="ident">block_time</span>.<span class="ident">timestamp</span>)
+ <span class="doccomment">/// Sync states of [BatchDatabase] and Core wallet.
+ /// First we import all `scriptPubKey`s from database into core wallet
+ </span><span class="kw">fn </span>sync_with_core(<span class="kw-2">&mut </span><span class="self">self</span>, client: <span class="kw-2">&</span>Client, is_descriptor: bool) -> <span class="prelude-ty">Result</span><<span class="kw-2">&mut </span><span class="self">Self</span>, Error> {
+ <span class="comment">// this tells Core wallet where to sync from for imported scripts
+ </span><span class="kw">let </span>start_epoch = <span class="kw">if </span><span class="self">self</span>.params.force_start_time {
+ <span class="self">self</span>.params.start_time
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.db
+ .get_sync_time()<span class="question-mark">?
+ </span>.map_or(<span class="self">self</span>.params.start_time, |st| st.block_time.timestamp)
};
- <span class="comment">// sync scriptPubKeys from Database to Core wallet</span>
- <span class="kw">let</span> <span class="ident">scripts_iter</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">ext_spks</span>.<span class="ident">iter</span>().<span class="ident">chain</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">int_spks</span>);
- <span class="kw">if</span> <span class="ident">is_descriptor</span> {
- <span class="ident">import_descriptors</span>(<span class="ident">client</span>, <span class="ident">start_epoch</span>, <span class="ident">scripts_iter</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="ident">import_multi</span>(<span class="ident">client</span>, <span class="ident">start_epoch</span>, <span class="ident">scripts_iter</span>)<span class="question-mark">?</span>;
+ <span class="comment">// sync scriptPubKeys from Database to Core wallet
+ </span><span class="kw">let </span>scripts_iter = <span class="self">self</span>.ext_spks.iter().chain(<span class="kw-2">&</span><span class="self">self</span>.int_spks);
+ <span class="kw">if </span>is_descriptor {
+ import_descriptors(client, start_epoch, scripts_iter)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ import_multi(client, start_epoch, scripts_iter)<span class="question-mark">?</span>;
}
- <span class="comment">// wait for Core wallet to rescan (TODO: maybe make this async)</span>
- <span class="ident">await_wallet_scan</span>(<span class="ident">client</span>, <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">poll_rate_sec</span>, <span class="self">self</span>.<span class="ident">prog</span>)<span class="question-mark">?</span>;
+ <span class="comment">// wait for Core wallet to rescan (TODO: maybe make this async)
+ </span>await_wallet_scan(client, <span class="self">self</span>.params.poll_rate_sec, <span class="self">self</span>.prog)<span class="question-mark">?</span>;
- <span class="comment">// obtain iterator of pagenated `listtransactions` RPC calls</span>
- <span class="kw">const</span> <span class="ident">LIST_TX_PAGE_SIZE</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">100</span>; <span class="comment">// item count per page</span>
- <span class="kw">let</span> <span class="ident">tx_iter</span> <span class="op">=</span> <span class="ident">list_transactions</span>(<span class="ident">client</span>, <span class="ident">LIST_TX_PAGE_SIZE</span>)<span class="question-mark">?</span>.<span class="ident">filter</span>(<span class="op">|</span><span class="ident">item</span><span class="op">|</span> {
- <span class="comment">// filter out conflicting transactions - only accept transactions that are already</span>
- <span class="comment">// confirmed, or exists in mempool</span>
- <span class="ident">item</span>.<span class="ident">info</span>.<span class="ident">confirmations</span> <span class="op">></span> <span class="number">0</span> <span class="op">|</span><span class="op">|</span> <span class="ident">client</span>.<span class="ident">get_mempool_entry</span>(<span class="kw-2">&</span><span class="ident">item</span>.<span class="ident">info</span>.<span class="ident">txid</span>).<span class="ident">is_ok</span>()
+ <span class="comment">// obtain iterator of pagenated `listtransactions` RPC calls
+ </span><span class="kw">const </span>LIST_TX_PAGE_SIZE: usize = <span class="number">100</span>; <span class="comment">// item count per page
+ </span><span class="kw">let </span>tx_iter = list_transactions(client, LIST_TX_PAGE_SIZE)<span class="question-mark">?</span>.filter(|item| {
+ <span class="comment">// filter out conflicting transactions - only accept transactions that are already
+ // confirmed, or exists in mempool
+ </span>item.info.confirmations > <span class="number">0 </span>|| client.get_mempool_entry(<span class="kw-2">&</span>item.info.txid).is_ok()
});
- <span class="comment">// iterate through chronological results of `listtransactions`</span>
- <span class="kw">for</span> <span class="ident">tx_res</span> <span class="kw">in</span> <span class="ident">tx_iter</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">updated</span> <span class="op">=</span> <span class="bool-val">false</span>;
+ <span class="comment">// iterate through chronological results of `listtransactions`
+ </span><span class="kw">for </span>tx_res <span class="kw">in </span>tx_iter {
+ <span class="kw">let </span><span class="kw-2">mut </span>updated = <span class="bool-val">false</span>;
- <span class="kw">let</span> <span class="ident">db_tx</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">txs</span>.<span class="ident">entry</span>(<span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>).<span class="ident">or_insert_with</span>(<span class="op">|</span><span class="op">|</span> {
- <span class="ident">updated</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="ident">TransactionDetails</span> {
- <span class="ident">txid</span>: <span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>,
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
+ <span class="kw">let </span>db_tx = <span class="self">self</span>.txs.entry(tx_res.info.txid).or_insert_with(|| {
+ updated = <span class="bool-val">true</span>;
+ TransactionDetails {
+ txid: tx_res.info.txid,
+ transaction: <span class="prelude-val">None</span>,
- <span class="ident">received</span>: <span class="number">0</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">None</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">None</span>,
+ received: <span class="number">0</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">None</span>,
+ confirmation_time: <span class="prelude-val">None</span>,
}
});
- <span class="comment">// update raw tx (if needed)</span>
- <span class="kw">let</span> <span class="ident">raw_tx</span> <span class="op">=</span>
- <span class="kw-2">&</span><span class="kw-2">*</span><span class="kw">match</span> <span class="kw-2">&mut</span> <span class="ident">db_tx</span>.<span class="ident">transaction</span> {
- <span class="prelude-val">Some</span>(<span class="ident">raw_tx</span>) => <span class="ident">raw_tx</span>,
- <span class="ident">db_tx_opt</span> => {
- <span class="ident">updated</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="ident">db_tx_opt</span>.<span class="ident">insert</span>(<span class="ident">client</span>.<span class="ident">get_raw_transaction</span>(
- <span class="kw-2">&</span><span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>,
- <span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">blockhash</span>.<span class="ident">as_ref</span>(),
+ <span class="comment">// update raw tx (if needed)
+ </span><span class="kw">let </span>raw_tx =
+ <span class="kw-2">&*</span><span class="kw">match </span><span class="kw-2">&mut </span>db_tx.transaction {
+ <span class="prelude-val">Some</span>(raw_tx) => raw_tx,
+ db_tx_opt => {
+ updated = <span class="bool-val">true</span>;
+ db_tx_opt.insert(client.get_raw_transaction(
+ <span class="kw-2">&</span>tx_res.info.txid,
+ tx_res.info.blockhash.as_ref(),
)<span class="question-mark">?</span>)
}
};
- <span class="comment">// update fee (if needed)</span>
- <span class="kw">if</span> <span class="kw">let</span> (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="ident">new_fee</span>)) <span class="op">=</span> (<span class="ident">db_tx</span>.<span class="ident">fee</span>, <span class="ident">tx_res</span>.<span class="ident">detail</span>.<span class="ident">fee</span>) {
- <span class="ident">updated</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="ident">db_tx</span>.<span class="ident">fee</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">new_fee</span>.<span class="ident">to_sat</span>().<span class="ident">unsigned_abs</span>());
+ <span class="comment">// update fee (if needed)
+ </span><span class="kw">if let </span>(<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(new_fee)) = (db_tx.fee, tx_res.detail.fee) {
+ updated = <span class="bool-val">true</span>;
+ db_tx.fee = <span class="prelude-val">Some</span>(new_fee.to_sat().unsigned_abs());
}
- <span class="comment">// update confirmation time (if needed)</span>
- <span class="kw">let</span> <span class="ident">conf_time</span> <span class="op">=</span> <span class="ident">BlockTime::new</span>(<span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">blockheight</span>, <span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">blocktime</span>);
- <span class="kw">if</span> <span class="ident">db_tx</span>.<span class="ident">confirmation_time</span> <span class="op">!</span><span class="op">=</span> <span class="ident">conf_time</span> {
- <span class="ident">updated</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="ident">db_tx</span>.<span class="ident">confirmation_time</span> <span class="op">=</span> <span class="ident">conf_time</span>;
+ <span class="comment">// update confirmation time (if needed)
+ </span><span class="kw">let </span>conf_time = BlockTime::new(tx_res.info.blockheight, tx_res.info.blocktime);
+ <span class="kw">if </span>db_tx.confirmation_time != conf_time {
+ updated = <span class="bool-val">true</span>;
+ db_tx.confirmation_time = conf_time;
}
- <span class="comment">// update received (if needed)</span>
- <span class="kw">let</span> <span class="ident">received</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::received_from_raw_tx</span>(<span class="self">self</span>.<span class="ident">db</span>, <span class="ident">raw_tx</span>)<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">db_tx</span>.<span class="ident">received</span> <span class="op">!</span><span class="op">=</span> <span class="ident">received</span> {
- <span class="ident">updated</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="ident">db_tx</span>.<span class="ident">received</span> <span class="op">=</span> <span class="ident">received</span>;
+ <span class="comment">// update received (if needed)
+ </span><span class="kw">let </span>received = <span class="self">Self</span>::received_from_raw_tx(<span class="self">self</span>.db, raw_tx)<span class="question-mark">?</span>;
+ <span class="kw">if </span>db_tx.received != received {
+ updated = <span class="bool-val">true</span>;
+ db_tx.received = received;
}
- <span class="comment">// check if tx has an immature coinbase output (add to updated UTXOs)</span>
- <span class="comment">// this is required because `listunspent` does not include immature coinbase outputs</span>
- <span class="kw">if</span> <span class="ident">tx_res</span>.<span class="ident">detail</span>.<span class="ident">category</span> <span class="op">==</span> <span class="ident">GetTransactionResultDetailCategory::Immature</span> {
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">raw_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">get</span>(<span class="ident">tx_res</span>.<span class="ident">detail</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">cloned</span>()
- .<span class="ident">ok_or_else</span>(<span class="op">|</span><span class="op">|</span> {
- <span class="ident">Error::Generic</span>(<span class="macro">format!</span>(
+ <span class="comment">// check if tx has an immature coinbase output (add to updated UTXOs)
+ // this is required because `listunspent` does not include immature coinbase outputs
+ </span><span class="kw">if </span>tx_res.detail.category == GetTransactionResultDetailCategory::Immature {
+ <span class="kw">let </span>txout = raw_tx
+ .output
+ .get(tx_res.detail.vout <span class="kw">as </span>usize)
+ .cloned()
+ .ok_or_else(|| {
+ Error::Generic(<span class="macro">format!</span>(
<span class="string">"Core RPC returned detail with invalid vout '{}' for tx '{}'"</span>,
- <span class="ident">tx_res</span>.<span class="ident">detail</span>.<span class="ident">vout</span>, <span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>,
+ tx_res.detail.vout, tx_res.info.txid,
))
})<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">index</span>)) <span class="op">=</span>
- <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">txout</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::new</span>(<span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>, <span class="ident">tx_res</span>.<span class="ident">detail</span>.<span class="ident">vout</span>),
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ <span class="kw">if let </span><span class="prelude-val">Some</span>((keychain, index)) =
+ <span class="self">self</span>.db.get_path_from_script_pubkey(<span class="kw-2">&</span>txout.script_pubkey)<span class="question-mark">?
+ </span>{
+ <span class="kw">let </span>utxo = LocalUtxo {
+ outpoint: OutPoint::new(tx_res.info.txid, tx_res.detail.vout),
+ txout,
+ keychain,
+ is_spent: <span class="bool-val">false</span>,
};
- <span class="self">self</span>.<span class="ident">updated_utxos</span>.<span class="ident">insert</span>(<span class="ident">utxo</span>);
- <span class="self">self</span>.<span class="ident">update_last_index</span>(<span class="ident">keychain</span>, <span class="ident">index</span>);
+ <span class="self">self</span>.updated_utxos.insert(utxo);
+ <span class="self">self</span>.update_last_index(keychain, index);
}
}
- <span class="comment">// update tx deltas</span>
- <span class="self">self</span>.<span class="ident">retained_txs</span>.<span class="ident">insert</span>(<span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>);
- <span class="kw">if</span> <span class="ident">updated</span> {
- <span class="self">self</span>.<span class="ident">updated_txs</span>.<span class="ident">insert</span>(<span class="ident">tx_res</span>.<span class="ident">info</span>.<span class="ident">txid</span>);
+ <span class="comment">// update tx deltas
+ </span><span class="self">self</span>.retained_txs.insert(tx_res.info.txid);
+ <span class="kw">if </span>updated {
+ <span class="self">self</span>.updated_txs.insert(tx_res.info.txid);
}
}
- <span class="comment">// obtain vector of `TransactionDetails::sent` changes</span>
- <span class="kw">let</span> <span class="ident">sent_updates</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">txs</span>
- .<span class="ident">values</span>()
- <span class="comment">// only bother to update txs that are retained</span>
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">db_tx</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">retained_txs</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">db_tx</span>.<span class="ident">txid</span>))
- <span class="comment">// only bother to update txs where the raw tx is accessable</span>
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">db_tx</span><span class="op">|</span> (<span class="ident">db_tx</span>.<span class="ident">transaction</span>.<span class="ident">as_ref</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> (<span class="ident">tx</span>, <span class="ident">db_tx</span>.<span class="ident">sent</span>))))
- <span class="comment">// recalcuate sent value, only update txs in which sent value is changed</span>
- .<span class="ident">filter_map</span>(<span class="op">|</span>(<span class="ident">raw_tx</span>, <span class="ident">old_sent</span>)<span class="op">|</span> {
- <span class="self">self</span>.<span class="ident">sent_from_raw_tx</span>(<span class="ident">raw_tx</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">sent</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">sent</span> <span class="op">!</span><span class="op">=</span> <span class="ident">old_sent</span> {
- <span class="prelude-val">Some</span>((<span class="ident">raw_tx</span>.<span class="ident">txid</span>(), <span class="ident">sent</span>))
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- }
+ <span class="comment">// obtain vector of `TransactionDetails::sent` changes
+ </span><span class="kw">let </span>sent_updates = <span class="self">self
+ </span>.txs
+ .values()
+ <span class="comment">// only bother to update txs that are retained
+ </span>.filter(|db_tx| <span class="self">self</span>.retained_txs.contains(<span class="kw-2">&</span>db_tx.txid))
+ <span class="comment">// only bother to update txs where the raw tx is accessable
+ </span>.filter_map(|db_tx| (db_tx.transaction.as_ref().map(|tx| (tx, db_tx.sent))))
+ <span class="comment">// recalcuate sent value, only update txs in which sent value is changed
+ </span>.filter_map(|(raw_tx, old_sent)| {
+ <span class="self">self</span>.sent_from_raw_tx(raw_tx)
+ .map(|sent| {
+ <span class="kw">if </span>sent != old_sent {
+ <span class="prelude-val">Some</span>((raw_tx.txid(), sent))
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
})
- .<span class="ident">transpose</span>()
+ .transpose()
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="comment">// record send updates</span>
- <span class="ident">sent_updates</span>.<span class="ident">iter</span>().<span class="ident">for_each</span>(<span class="op">|</span><span class="kw-2">&</span>(<span class="ident">txid</span>, <span class="ident">sent</span>)<span class="op">|</span> {
- <span class="comment">// apply sent field changes</span>
- <span class="self">self</span>.<span class="ident">txs</span>.<span class="ident">entry</span>(<span class="ident">txid</span>).<span class="ident">and_modify</span>(<span class="op">|</span><span class="ident">db_tx</span><span class="op">|</span> <span class="ident">db_tx</span>.<span class="ident">sent</span> <span class="op">=</span> <span class="ident">sent</span>);
- <span class="comment">// mark tx as modified</span>
- <span class="self">self</span>.<span class="ident">updated_txs</span>.<span class="ident">insert</span>(<span class="ident">txid</span>);
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+
+ <span class="comment">// record send updates
+ </span>sent_updates.iter().for_each(|<span class="kw-2">&</span>(txid, sent)| {
+ <span class="comment">// apply sent field changes
+ </span><span class="self">self</span>.txs.entry(txid).and_modify(|db_tx| db_tx.sent = sent);
+ <span class="comment">// mark tx as modified
+ </span><span class="self">self</span>.updated_txs.insert(txid);
});
- <span class="comment">// obtain UTXOs from Core wallet</span>
- <span class="kw">let</span> <span class="ident">core_utxos</span> <span class="op">=</span> <span class="ident">client</span>
- .<span class="ident">list_unspent</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="bool-val">true</span>), <span class="prelude-val">None</span>)<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">utxo_entry</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">path_result</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">db</span>
- .<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">utxo_entry</span>.<span class="ident">script_pub_key</span>)
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">utxo_result</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">path_result</span> {
- <span class="prelude-val">Ok</span>((<span class="ident">keychain</span>, <span class="ident">index</span>)) => {
- <span class="self">self</span>.<span class="ident">update_last_index</span>(<span class="ident">keychain</span>, <span class="ident">index</span>);
- <span class="prelude-val">Ok</span>(<span class="ident"><span class="self">Self</span>::make_local_utxo</span>(<span class="ident">utxo_entry</span>, <span class="ident">keychain</span>, <span class="bool-val">false</span>))
+ <span class="comment">// obtain UTXOs from Core wallet
+ </span><span class="kw">let </span>core_utxos = client
+ .list_unspent(<span class="prelude-val">Some</span>(<span class="number">0</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="bool-val">true</span>), <span class="prelude-val">None</span>)<span class="question-mark">?
+ </span>.into_iter()
+ .filter_map(|utxo_entry| {
+ <span class="kw">let </span>path_result = <span class="self">self
+ </span>.db
+ .get_path_from_script_pubkey(<span class="kw-2">&</span>utxo_entry.script_pub_key)
+ .transpose()<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>utxo_result = <span class="kw">match </span>path_result {
+ <span class="prelude-val">Ok</span>((keychain, index)) => {
+ <span class="self">self</span>.update_last_index(keychain, index);
+ <span class="prelude-val">Ok</span>(<span class="self">Self</span>::make_local_utxo(utxo_entry, keychain, <span class="bool-val">false</span>))
}
- <span class="prelude-val">Err</span>(<span class="ident">err</span>) => <span class="prelude-val">Err</span>(<span class="ident">err</span>),
+ <span class="prelude-val">Err</span>(err) => <span class="prelude-val">Err</span>(err),
};
- <span class="prelude-val">Some</span>(<span class="ident">utxo_result</span>)
+ <span class="prelude-val">Some</span>(utxo_result)
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">HashSet</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
+ .collect::<<span class="prelude-ty">Result</span><HashSet<<span class="kw">_</span>>, Error>>()<span class="question-mark">?</span>;
- <span class="comment">// mark "spent utxos" to be updated in database</span>
- <span class="kw">let</span> <span class="ident">spent_utxos</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">utxos</span>.<span class="ident">difference</span>(<span class="kw-2">&</span><span class="ident">core_utxos</span>).<span class="ident">cloned</span>().<span class="ident">map</span>(<span class="op">|</span><span class="kw-2">mut</span> <span class="ident">utxo</span><span class="op">|</span> {
- <span class="ident">utxo</span>.<span class="ident">is_spent</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="ident">utxo</span>
+ <span class="comment">// mark "spent utxos" to be updated in database
+ </span><span class="kw">let </span>spent_utxos = <span class="self">self</span>.utxos.difference(<span class="kw-2">&</span>core_utxos).cloned().map(|<span class="kw-2">mut </span>utxo| {
+ utxo.is_spent = <span class="bool-val">true</span>;
+ utxo
});
- <span class="comment">// mark new utxos to be added in database</span>
- <span class="kw">let</span> <span class="ident">new_utxos</span> <span class="op">=</span> <span class="ident">core_utxos</span>.<span class="ident">difference</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">utxos</span>).<span class="ident">cloned</span>();
+ <span class="comment">// mark new utxos to be added in database
+ </span><span class="kw">let </span>new_utxos = core_utxos.difference(<span class="kw-2">&</span><span class="self">self</span>.utxos).cloned();
- <span class="comment">// add to updated utxos</span>
- <span class="self">self</span>.<span class="ident">updated_utxos</span>.<span class="ident">extend</span>(<span class="ident">spent_utxos</span>.<span class="ident">chain</span>(<span class="ident">new_utxos</span>));
+ <span class="comment">// add to updated utxos
+ </span><span class="self">self</span>.updated_utxos.extend(spent_utxos.chain(new_utxos));
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
- <span class="doccomment">/// Calculates received amount from raw tx.</span>
- <span class="kw">fn</span> <span class="ident">received_from_raw_tx</span>(<span class="ident">db</span>: <span class="kw-2">&</span><span class="ident">D</span>, <span class="ident">raw_tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="ident">raw_tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>().<span class="ident">try_fold</span>(<span class="number">0_u64</span>, <span class="op">|</span><span class="ident">recv</span>, <span class="ident">txo</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">v</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">db</span>.<span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="ident">txo</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span> {
- <span class="ident">txo</span>.<span class="ident">value</span>
- } <span class="kw">else</span> {
- <span class="number">0</span>
- };
- <span class="prelude-val">Ok</span>(<span class="ident">recv</span> <span class="op">+</span> <span class="ident">v</span>)
+ <span class="doccomment">/// Calculates received amount from raw tx.
+ </span><span class="kw">fn </span>received_from_raw_tx(db: <span class="kw-2">&</span>D, raw_tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><u64, Error> {
+ raw_tx.output.iter().try_fold(<span class="number">0_u64</span>, |recv, txo| {
+ <span class="kw">let </span>v = <span class="kw">if </span>db.is_mine(<span class="kw-2">&</span>txo.script_pubkey)<span class="question-mark">? </span>{
+ txo.value
+ } <span class="kw">else </span>{
+ <span class="number">0
+ </span>};
+ <span class="prelude-val">Ok</span>(recv + v)
})
}
- <span class="doccomment">/// Calculates sent from raw tx.</span>
- <span class="kw">fn</span> <span class="ident">sent_from_raw_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">raw_tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">get_output</span> <span class="op">=</span> <span class="op">|</span><span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">raw_tx</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">txs</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>.<span class="ident">txid</span>)<span class="question-mark">?</span>.<span class="ident">transaction</span>.<span class="ident">as_ref</span>()<span class="question-mark">?</span>;
- <span class="ident">raw_tx</span>.<span class="ident">output</span>.<span class="ident">get</span>(<span class="ident">outpoint</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>)
+ <span class="doccomment">/// Calculates sent from raw tx.
+ </span><span class="kw">fn </span>sent_from_raw_tx(<span class="kw-2">&</span><span class="self">self</span>, raw_tx: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><u64, Error> {
+ <span class="kw">let </span>get_output = |outpoint: <span class="kw-2">&</span>OutPoint| {
+ <span class="kw">let </span>raw_tx = <span class="self">self</span>.txs.get(<span class="kw-2">&</span>outpoint.txid)<span class="question-mark">?</span>.transaction.as_ref()<span class="question-mark">?</span>;
+ raw_tx.output.get(outpoint.vout <span class="kw">as </span>usize)
};
- <span class="ident">raw_tx</span>.<span class="ident">input</span>.<span class="ident">iter</span>().<span class="ident">try_fold</span>(<span class="number">0_u64</span>, <span class="op">|</span><span class="ident">sent</span>, <span class="ident">txin</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">v</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">get_output</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>) {
- <span class="prelude-val">Some</span>(<span class="ident">prev_txo</span>) => {
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="ident">prev_txo</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span> {
- <span class="ident">prev_txo</span>.<span class="ident">value</span>
- } <span class="kw">else</span> {
- <span class="number">0</span>
- }
+ raw_tx.input.iter().try_fold(<span class="number">0_u64</span>, |sent, txin| {
+ <span class="kw">let </span>v = <span class="kw">match </span>get_output(<span class="kw-2">&</span>txin.previous_output) {
+ <span class="prelude-val">Some</span>(prev_txo) => {
+ <span class="kw">if </span><span class="self">self</span>.db.is_mine(<span class="kw-2">&</span>prev_txo.script_pubkey)<span class="question-mark">? </span>{
+ prev_txo.value
+ } <span class="kw">else </span>{
+ <span class="number">0
+ </span>}
}
- <span class="prelude-val">None</span> => <span class="number">0_u64</span>,
+ <span class="prelude-val">None </span>=> <span class="number">0_u64</span>,
};
- <span class="prelude-val">Ok</span>(<span class="ident">sent</span> <span class="op">+</span> <span class="ident">v</span>)
+ <span class="prelude-val">Ok</span>(sent + v)
})
}
- <span class="comment">// updates the db state's last_index for the given keychain (if larger than current last_index)</span>
- <span class="kw">fn</span> <span class="ident">update_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">index</span>: <span class="ident">u32</span>) {
- <span class="self">self</span>.<span class="ident">last_indexes</span>
- .<span class="ident">entry</span>(<span class="ident">keychain</span>)
- .<span class="ident">and_modify</span>(<span class="op">|</span><span class="ident">last</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="kw-2">*</span><span class="ident">last</span> <span class="op"><</span> <span class="ident">index</span> {
- <span class="kw-2">*</span><span class="ident">last</span> <span class="op">=</span> <span class="ident">index</span>;
+ <span class="comment">// updates the db state's last_index for the given keychain (if larger than current last_index)
+ </span><span class="kw">fn </span>update_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, index: u32) {
+ <span class="self">self</span>.last_indexes
+ .entry(keychain)
+ .and_modify(|last| {
+ <span class="kw">if </span><span class="kw-2">*</span>last < index {
+ <span class="kw-2">*</span>last = index;
}
})
- .<span class="ident">or_insert_with</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">index</span>);
+ .or_insert_with(|| index);
}
- <span class="kw">fn</span> <span class="ident">make_local_utxo</span>(
- <span class="ident">entry</span>: <span class="ident">ListUnspentResultEntry</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">is_spent</span>: <span class="ident">bool</span>,
- ) -> <span class="ident">LocalUtxo</span> {
- <span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::new</span>(<span class="ident">entry</span>.<span class="ident">txid</span>, <span class="ident">entry</span>.<span class="ident">vout</span>),
- <span class="ident">txout</span>: <span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="ident">entry</span>.<span class="ident">amount</span>.<span class="ident">to_sat</span>(),
- <span class="ident">script_pubkey</span>: <span class="ident">entry</span>.<span class="ident">script_pub_key</span>,
+ <span class="kw">fn </span>make_local_utxo(
+ entry: ListUnspentResultEntry,
+ keychain: KeychainKind,
+ is_spent: bool,
+ ) -> LocalUtxo {
+ LocalUtxo {
+ outpoint: OutPoint::new(entry.txid, entry.vout),
+ txout: TxOut {
+ value: entry.amount.to_sat(),
+ script_pubkey: entry.script_pub_key,
},
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ keychain,
+ is_spent,
}
}
- <span class="doccomment">/// Prepare db batch operations.</span>
- <span class="kw">fn</span> <span class="ident">as_db_batch</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">D::Batch</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">begin_batch</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">del_txs</span> <span class="op">=</span> <span class="number">0_u32</span>;
-
- <span class="comment">// delete stale (not retained) txs from db</span>
- <span class="self">self</span>.<span class="ident">txs</span>
- .<span class="ident">keys</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">txid</span><span class="op">|</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">retained_txs</span>.<span class="ident">contains</span>(<span class="ident">txid</span>))
- .<span class="ident">try_for_each</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="ident">batch</span>.<span class="ident">del_tx</span>(<span class="ident">txid</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
- <span class="ident">del_txs</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
+ <span class="doccomment">/// Prepare db batch operations.
+ </span><span class="kw">fn </span>as_db_batch(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><D::Batch, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = <span class="self">self</span>.db.begin_batch();
+ <span class="kw">let </span><span class="kw-2">mut </span>del_txs = <span class="number">0_u32</span>;
+
+ <span class="comment">// delete stale (not retained) txs from db
+ </span><span class="self">self</span>.txs
+ .keys()
+ .filter(|<span class="kw-2">&</span>txid| !<span class="self">self</span>.retained_txs.contains(txid))
+ .try_for_each(|txid| -> <span class="prelude-ty">Result</span><(), Error> {
+ batch.del_tx(txid, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+ del_txs += <span class="number">1</span>;
<span class="prelude-val">Ok</span>(())
})<span class="question-mark">?</span>;
- <span class="comment">// update txs</span>
- <span class="self">self</span>.<span class="ident">updated_txs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">inspect</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">txid</span><span class="op">|</span> <span class="macro">debug!</span>(<span class="string">"updating tx: {}"</span>, <span class="ident">txid</span>))
- .<span class="ident">try_for_each</span>(<span class="op">|</span><span class="ident">txid</span><span class="op">|</span> <span class="ident">batch</span>.<span class="ident">set_tx</span>(<span class="self">self</span>.<span class="ident">txs</span>.<span class="ident">get</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>()))<span class="question-mark">?</span>;
+ <span class="comment">// update txs
+ </span><span class="self">self</span>.updated_txs
+ .iter()
+ .inspect(|<span class="kw-2">&</span>txid| <span class="macro">debug!</span>(<span class="string">"updating tx: {}"</span>, txid))
+ .try_for_each(|txid| batch.set_tx(<span class="self">self</span>.txs.get(txid).unwrap()))<span class="question-mark">?</span>;
- <span class="comment">// update utxos</span>
- <span class="self">self</span>.<span class="ident">updated_utxos</span>
- .<span class="ident">iter</span>()
- .<span class="ident">inspect</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">utxo</span><span class="op">|</span> <span class="macro">debug!</span>(<span class="string">"updating utxo: {}"</span>, <span class="ident">utxo</span>.<span class="ident">outpoint</span>))
- .<span class="ident">try_for_each</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> <span class="ident">batch</span>.<span class="ident">set_utxo</span>(<span class="ident">utxo</span>))<span class="question-mark">?</span>;
+ <span class="comment">// update utxos
+ </span><span class="self">self</span>.updated_utxos
+ .iter()
+ .inspect(|<span class="kw-2">&</span>utxo| <span class="macro">debug!</span>(<span class="string">"updating utxo: {}"</span>, utxo.outpoint))
+ .try_for_each(|utxo| batch.set_utxo(utxo))<span class="question-mark">?</span>;
- <span class="comment">// update last indexes</span>
- <span class="self">self</span>.<span class="ident">last_indexes</span>
- .<span class="ident">iter</span>()
- .<span class="ident">try_for_each</span>(<span class="op">|</span>(<span class="kw-2">&</span><span class="ident">keychain</span>, <span class="kw-2">&</span><span class="ident">index</span>)<span class="op">|</span> <span class="ident">batch</span>.<span class="ident">set_last_index</span>(<span class="ident">keychain</span>, <span class="ident">index</span>))<span class="question-mark">?</span>;
+ <span class="comment">// update last indexes
+ </span><span class="self">self</span>.last_indexes
+ .iter()
+ .try_for_each(|(<span class="kw-2">&</span>keychain, <span class="kw-2">&</span>index)| batch.set_last_index(keychain, index))<span class="question-mark">?</span>;
<span class="macro">info!</span>(
<span class="string">"db batch updates: del_txs={}, update_txs={}, update_utxos={}"</span>,
- <span class="ident">del_txs</span>,
- <span class="self">self</span>.<span class="ident">updated_txs</span>.<span class="ident">len</span>(),
- <span class="self">self</span>.<span class="ident">updated_utxos</span>.<span class="ident">len</span>()
+ del_txs,
+ <span class="self">self</span>.updated_txs.len(),
+ <span class="self">self</span>.updated_utxos.len()
);
- <span class="prelude-val">Ok</span>(<span class="ident">batch</span>)
+ <span class="prelude-val">Ok</span>(batch)
}
}
-<span class="kw">fn</span> <span class="ident">import_descriptors</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">S</span><span class="op">></span>(
- <span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>,
- <span class="ident">start_epoch</span>: <span class="ident">u64</span>,
- <span class="ident">scripts_iter</span>: <span class="ident">S</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">S</span>: <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Script</span><span class="op">></span>,
+<span class="kw">fn </span>import_descriptors<<span class="lifetime">'a</span>, S>(
+ client: <span class="kw-2">&</span>Client,
+ start_epoch: u64,
+ scripts_iter: S,
+) -> <span class="prelude-ty">Result</span><(), Error>
+<span class="kw">where
+ </span>S: Iterator<Item = <span class="kw-2">&</span><span class="lifetime">'a </span>Script>,
{
- <span class="kw">let</span> <span class="ident">requests</span> <span class="op">=</span> <span class="ident">Value::Array</span>(
- <span class="ident">scripts_iter</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">script</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="ident">descriptor_from_script_pubkey</span>(<span class="ident">script</span>);
- <span class="macro">json!</span>({ <span class="string">"timestamp"</span>: <span class="ident">start_epoch</span>, <span class="string">"desc"</span>: <span class="ident">desc</span> })
+ <span class="kw">let </span>requests = Value::Array(
+ scripts_iter
+ .map(|script| {
+ <span class="kw">let </span>desc = descriptor_from_script_pubkey(script);
+ <span class="macro">json!</span>({ <span class="string">"timestamp"</span>: start_epoch, <span class="string">"desc"</span>: desc })
})
- .<span class="ident">collect</span>(),
+ .collect(),
);
- <span class="kw">for</span> <span class="ident">v</span> <span class="kw">in</span> <span class="ident">client</span>.<span class="ident">call</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Value</span><span class="op">></span><span class="op">></span>(<span class="string">"importdescriptors"</span>, <span class="kw-2">&</span>[<span class="ident">requests</span>])<span class="question-mark">?</span> {
- <span class="kw">match</span> <span class="ident">v</span>[<span class="string">"success"</span>].<span class="ident">as_bool</span>() {
+ <span class="kw">for </span>v <span class="kw">in </span>client.call::<Vec<Value>>(<span class="string">"importdescriptors"</span>, <span class="kw-2">&</span>[requests])<span class="question-mark">? </span>{
+ <span class="kw">match </span>v[<span class="string">"success"</span>].as_bool() {
<span class="prelude-val">Some</span>(<span class="bool-val">true</span>) => <span class="kw">continue</span>,
<span class="prelude-val">Some</span>(<span class="bool-val">false</span>) => {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(
- <span class="ident">v</span>[<span class="string">"error"</span>][<span class="string">"message"</span>]
- .<span class="ident">as_str</span>()
- .<span class="ident">map_or</span>(<span class="string">"unknown error"</span>.<span class="ident">into</span>(), <span class="ident">ToString::to_string</span>),
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(
+ v[<span class="string">"error"</span>][<span class="string">"message"</span>]
+ .as_str()
+ .map_or(<span class="string">"unknown error"</span>.into(), ToString::to_string),
))
}
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="string">"Unexpected response form Core"</span>.<span class="ident">to_string</span>())),
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="string">"Unexpected response form Core"</span>.to_string())),
}
}
<span class="prelude-val">Ok</span>(())
}
-<span class="kw">fn</span> <span class="ident">import_multi</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">S</span><span class="op">></span>(<span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>, <span class="ident">start_epoch</span>: <span class="ident">u64</span>, <span class="ident">scripts_iter</span>: <span class="ident">S</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">S</span>: <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Script</span><span class="op">></span>,
+<span class="kw">fn </span>import_multi<<span class="lifetime">'a</span>, S>(client: <span class="kw-2">&</span>Client, start_epoch: u64, scripts_iter: S) -> <span class="prelude-ty">Result</span><(), Error>
+<span class="kw">where
+ </span>S: Iterator<Item = <span class="kw-2">&</span><span class="lifetime">'a </span>Script>,
{
- <span class="kw">let</span> <span class="ident">requests</span> <span class="op">=</span> <span class="ident">scripts_iter</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">script</span><span class="op">|</span> <span class="ident">ImportMultiRequest</span> {
- <span class="ident">timestamp</span>: <span class="ident">ImportMultiRescanSince::Timestamp</span>(<span class="ident">start_epoch</span>),
- <span class="ident">script_pubkey</span>: <span class="prelude-val">Some</span>(<span class="ident">ImportMultiRequestScriptPubkey::Script</span>(<span class="ident">script</span>)),
- <span class="ident">watchonly</span>: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span>requests = scripts_iter
+ .map(|script| ImportMultiRequest {
+ timestamp: ImportMultiRescanSince::Timestamp(start_epoch),
+ script_pubkey: <span class="prelude-val">Some</span>(ImportMultiRequestScriptPubkey::Script(script)),
+ watchonly: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+ ..Default::default()
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">ImportMultiOptions</span> { <span class="ident">rescan</span>: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>) };
- <span class="kw">for</span> <span class="ident">v</span> <span class="kw">in</span> <span class="ident">client</span>.<span class="ident">import_multi</span>(<span class="kw-2">&</span><span class="ident">requests</span>, <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">options</span>))<span class="question-mark">?</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">err</span>) <span class="op">=</span> <span class="ident">v</span>.<span class="ident">error</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="macro">format!</span>(
+ .collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">let </span>options = ImportMultiOptions { rescan: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>) };
+ <span class="kw">for </span>v <span class="kw">in </span>client.import_multi(<span class="kw-2">&</span>requests, <span class="prelude-val">Some</span>(<span class="kw-2">&</span>options))<span class="question-mark">? </span>{
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(err) = v.error {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="macro">format!</span>(
<span class="string">"{} (code: {})"</span>,
- <span class="ident">err</span>.<span class="ident">message</span>, <span class="ident">err</span>.<span class="ident">code</span>
+ err.message, err.code
)));
}
}
<span class="prelude-val">Ok</span>(())
}
-<span class="doccomment">/// Calls the `listtransactions` RPC method in `page_size`s and returns iterator of the tx results</span>
-<span class="doccomment">/// in chronological order.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// `page_size` cannot be less than 1 and cannot be greater than 1000.</span>
-<span class="kw">fn</span> <span class="ident">list_transactions</span>(
- <span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>,
- <span class="ident">page_size</span>: <span class="ident">usize</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="ident">ListTransactionResult</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">if</span> <span class="op">!</span>(<span class="number">1</span>..<span class="op">=</span><span class="number">1000</span>).<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">page_size</span>) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="macro">format!</span>(
+<span class="doccomment">/// Calls the `listtransactions` RPC method in `page_size`s and returns iterator of the tx results
+/// in chronological order.
+///
+/// `page_size` cannot be less than 1 and cannot be greater than 1000.
+</span><span class="kw">fn </span>list_transactions(
+ client: <span class="kw-2">&</span>Client,
+ page_size: usize,
+) -> <span class="prelude-ty">Result</span><<span class="kw">impl </span>Iterator<Item = ListTransactionResult>, Error> {
+ <span class="kw">if </span>!(<span class="number">1</span>..=<span class="number">1000</span>).contains(<span class="kw-2">&</span>page_size) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="macro">format!</span>(
<span class="string">"Core RPC method `listtransactions` must have `page_size` in range [1 to 1000]: got {}"</span>,
- <span class="ident">page_size</span>
+ page_size
)));
}
- <span class="comment">// `.take_while` helper to obtain the first error (TODO: remove when we can use `.map_while`)</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">got_err</span> <span class="op">=</span> <span class="bool-val">false</span>;
+ <span class="comment">// `.take_while` helper to obtain the first error (TODO: remove when we can use `.map_while`)
+ </span><span class="kw">let </span><span class="kw-2">mut </span>got_err = <span class="bool-val">false</span>;
- <span class="comment">// obtain results in batches (of `page_size`)</span>
- <span class="kw">let</span> <span class="ident">nested_list</span> <span class="op">=</span> (<span class="number">0_usize</span>..)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">page_index</span><span class="op">|</span> {
- <span class="ident">client</span>.<span class="ident">list_transactions</span>(
+ <span class="comment">// obtain results in batches (of `page_size`)
+ </span><span class="kw">let </span>nested_list = (<span class="number">0_usize</span>..)
+ .map(|page_index| {
+ client.list_transactions(
<span class="prelude-val">None</span>,
- <span class="prelude-val">Some</span>(<span class="ident">page_size</span>),
- <span class="prelude-val">Some</span>(<span class="ident">page_size</span> <span class="op">*</span> <span class="ident">page_index</span>),
+ <span class="prelude-val">Some</span>(page_size),
+ <span class="prelude-val">Some</span>(page_size * page_index),
<span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
)
})
- <span class="comment">// take until returned rpc call is empty or until error</span>
- <span class="comment">// TODO: replace with the following when MSRV is 1.57.0:</span>
- <span class="comment">// `.map_while(|res| res.map(|l| if l.is_empty() { None } else { Some(l) }).transpose())`</span>
- .<span class="ident">take_while</span>(<span class="op">|</span><span class="ident">res</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">got_err</span> <span class="op">|</span><span class="op">|</span> <span class="macro">matches!</span>(<span class="ident">res</span>, <span class="prelude-val">Ok</span>(<span class="ident">list</span>) <span class="kw">if</span> <span class="ident">list</span>.<span class="ident">is_empty</span>()) {
- <span class="comment">// break if last iteration was an error, or if the current result is empty</span>
- <span class="bool-val">false</span>
- } <span class="kw">else</span> {
- <span class="comment">// record whether result is error or not</span>
- <span class="ident">got_err</span> <span class="op">=</span> <span class="ident">res</span>.<span class="ident">is_err</span>();
- <span class="comment">// continue on non-empty result or first error</span>
- <span class="bool-val">true</span>
- }
+ <span class="comment">// take until returned rpc call is empty or until error
+ // TODO: replace with the following when MSRV is 1.57.0:
+ // `.map_while(|res| res.map(|l| if l.is_empty() { None } else { Some(l) }).transpose())`
+ </span>.take_while(|res| {
+ <span class="kw">if </span>got_err || <span class="macro">matches!</span>(res, <span class="prelude-val">Ok</span>(list) <span class="kw">if </span>list.is_empty()) {
+ <span class="comment">// break if last iteration was an error, or if the current result is empty
+ </span><span class="bool-val">false
+ </span>} <span class="kw">else </span>{
+ <span class="comment">// record whether result is error or not
+ </span>got_err = res.is_err();
+ <span class="comment">// continue on non-empty result or first error
+ </span><span class="bool-val">true
+ </span>}
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
- .<span class="ident">map_err</span>(<span class="ident">Error::Rpc</span>)<span class="question-mark">?</span>;
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()
+ .map_err(Error::Rpc)<span class="question-mark">?</span>;
- <span class="comment">// reverse here to have txs in chronological order</span>
- <span class="prelude-val">Ok</span>(<span class="ident">nested_list</span>.<span class="ident">into_iter</span>().<span class="ident">rev</span>().<span class="ident">flatten</span>())
+ <span class="comment">// reverse here to have txs in chronological order
+ </span><span class="prelude-val">Ok</span>(nested_list.into_iter().rev().flatten())
}
-<span class="kw">fn</span> <span class="ident">await_wallet_scan</span>(<span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>, <span class="ident">rate_sec</span>: <span class="ident">u64</span>, <span class="ident">progress</span>: <span class="kw-2">&</span><span class="kw">dyn</span> <span class="ident">Progress</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>)]</span>
- <span class="kw">struct</span> <span class="ident">CallResult</span> {
- <span class="ident">scanning</span>: <span class="ident">ScanningDetails</span>,
+<span class="kw">fn </span>await_wallet_scan(client: <span class="kw-2">&</span>Client, rate_sec: u64, progress: <span class="kw-2">&</span><span class="kw">dyn </span>Progress) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="attr">#[derive(Deserialize)]
+ </span><span class="kw">struct </span>CallResult {
+ scanning: ScanningDetails,
}
- <span class="kw">let</span> <span class="ident">dur</span> <span class="op">=</span> <span class="ident">Duration::from_secs</span>(<span class="ident">rate_sec</span>);
- <span class="kw">loop</span> {
- <span class="kw">match</span> <span class="ident">client</span>.<span class="ident">call</span>::<span class="op"><</span><span class="ident">CallResult</span><span class="op">></span>(<span class="string">"getwalletinfo"</span>, <span class="kw-2">&</span>[])<span class="question-mark">?</span>.<span class="ident">scanning</span> {
- <span class="ident">ScanningDetails::Scanning</span> {
- <span class="ident">duration</span>,
- <span class="ident">progress</span>: <span class="ident">pc</span>,
+ <span class="kw">let </span>dur = Duration::from_secs(rate_sec);
+ <span class="kw">loop </span>{
+ <span class="kw">match </span>client.call::<CallResult>(<span class="string">"getwalletinfo"</span>, <span class="kw-2">&</span>[])<span class="question-mark">?</span>.scanning {
+ ScanningDetails::Scanning {
+ duration,
+ progress: pc,
} => {
- <span class="macro">debug!</span>(<span class="string">"scanning: duration={}, progress={}"</span>, <span class="ident">duration</span>, <span class="ident">pc</span>);
- <span class="ident">progress</span>.<span class="ident">update</span>(<span class="ident">pc</span>, <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"elapsed for {} seconds"</span>, <span class="ident">duration</span>)))<span class="question-mark">?</span>;
- <span class="ident">thread::sleep</span>(<span class="ident">dur</span>);
+ <span class="macro">debug!</span>(<span class="string">"scanning: duration={}, progress={}"</span>, duration, pc);
+ progress.update(pc, <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"elapsed for {} seconds"</span>, duration)))<span class="question-mark">?</span>;
+ thread::sleep(dur);
}
- <span class="ident">ScanningDetails::NotScanning</span>(<span class="kw">_</span>) => {
- <span class="ident">progress</span>.<span class="ident">update</span>(<span class="number">1.0</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
+ ScanningDetails::NotScanning(<span class="kw">_</span>) => {
+ progress.update(<span class="number">1.0</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
<span class="macro">info!</span>(<span class="string">"scanning: done!"</span>);
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
};
}
}
-<span class="doccomment">/// Returns whether a wallet is legacy or descriptors by calling `getwalletinfo`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This API is mapped by bitcoincore_rpc, but it doesn't have the fields we need (either</span>
-<span class="doccomment">/// "descriptors" or "format") so we have to call the RPC manually</span>
-<span class="kw">fn</span> <span class="ident">is_wallet_descriptor</span>(<span class="ident">client</span>: <span class="kw-2">&</span><span class="ident">Client</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>)]</span>
- <span class="kw">struct</span> <span class="ident">CallResult</span> {
- <span class="ident">descriptors</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>,
+<span class="doccomment">/// Returns whether a wallet is legacy or descriptors by calling `getwalletinfo`.
+///
+/// This API is mapped by bitcoincore_rpc, but it doesn't have the fields we need (either
+/// "descriptors" or "format") so we have to call the RPC manually
+</span><span class="kw">fn </span>is_wallet_descriptor(client: <span class="kw-2">&</span>Client) -> <span class="prelude-ty">Result</span><bool, Error> {
+ <span class="attr">#[derive(Deserialize)]
+ </span><span class="kw">struct </span>CallResult {
+ descriptors: <span class="prelude-ty">Option</span><bool>,
}
- <span class="kw">let</span> <span class="ident">result</span>: <span class="ident">CallResult</span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">call</span>(<span class="string">"getwalletinfo"</span>, <span class="kw-2">&</span>[])<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">result</span>.<span class="ident">descriptors</span>.<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>))
+ <span class="kw">let </span>result: CallResult = client.call(<span class="string">"getwalletinfo"</span>, <span class="kw-2">&</span>[])<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(result.descriptors.unwrap_or(<span class="bool-val">false</span>))
}
-<span class="kw">fn</span> <span class="ident">descriptor_from_script_pubkey</span>(<span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="ident">String</span> {
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">"raw({})"</span>, <span class="ident">script</span>.<span class="ident">to_hex</span>());
- <span class="macro">format!</span>(<span class="string">"{}#{}"</span>, <span class="ident">desc</span>, <span class="ident">calc_checksum</span>(<span class="kw-2">&</span><span class="ident">desc</span>).<span class="ident">unwrap</span>())
+<span class="kw">fn </span>descriptor_from_script_pubkey(script: <span class="kw-2">&</span>Script) -> String {
+ <span class="kw">let </span>desc = <span class="macro">format!</span>(<span class="string">"raw({})"</span>, script.to_hex());
+ <span class="macro">format!</span>(<span class="string">"{}#{}"</span>, desc, calc_checksum(<span class="kw-2">&</span>desc).unwrap())
}
-<span class="doccomment">/// Factory of [`RpcBlockchain`] instances, implements [`BlockchainFactory`]</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Internally caches the node url and authentication params and allows getting many different [`RpcBlockchain`]</span>
-<span class="doccomment">/// objects for different wallet names and with different rescan heights.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```no_run</span>
-<span class="doccomment">/// # use bdk::bitcoin::Network;</span>
-<span class="doccomment">/// # use bdk::blockchain::BlockchainFactory;</span>
-<span class="doccomment">/// # use bdk::blockchain::rpc::{Auth, RpcBlockchainFactory};</span>
-<span class="doccomment">/// # fn main() -> Result<(), Box<dyn std::error::Error>> {</span>
-<span class="doccomment">/// let factory = RpcBlockchainFactory {</span>
-<span class="doccomment">/// url: "http://127.0.0.1:18332".to_string(),</span>
-<span class="doccomment">/// auth: Auth::Cookie {</span>
-<span class="doccomment">/// file: "/home/user/.bitcoin/.cookie".into(),</span>
-<span class="doccomment">/// },</span>
-<span class="doccomment">/// network: Network::Testnet,</span>
-<span class="doccomment">/// wallet_name_prefix: Some("prefix-".to_string()),</span>
-<span class="doccomment">/// default_skip_blocks: 100_000,</span>
-<span class="doccomment">/// sync_params: None,</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">/// let main_wallet_blockchain = factory.build("main_wallet", Some(200_000))?;</span>
-<span class="doccomment">/// # Ok(())</span>
-<span class="doccomment">/// # }</span>
-<span class="doccomment">/// ```</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">RpcBlockchainFactory</span> {
- <span class="doccomment">/// The bitcoin node url</span>
- <span class="kw">pub</span> <span class="ident">url</span>: <span class="ident">String</span>,
- <span class="doccomment">/// The bitcoin node authentication mechanism</span>
- <span class="kw">pub</span> <span class="ident">auth</span>: <span class="ident">Auth</span>,
- <span class="doccomment">/// The network we are using (it will be checked the bitcoin node network matches this)</span>
- <span class="kw">pub</span> <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="doccomment">/// The optional prefix used to build the full wallet name for blockchains</span>
- <span class="kw">pub</span> <span class="ident">wallet_name_prefix</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
- <span class="doccomment">/// Default number of blocks to skip which will be inherited by blockchain unless overridden</span>
- <span class="kw">pub</span> <span class="ident">default_skip_blocks</span>: <span class="ident">u32</span>,
- <span class="doccomment">/// Sync parameters</span>
- <span class="kw">pub</span> <span class="ident">sync_params</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">RpcSyncParams</span><span class="op">></span>,
+<span class="doccomment">/// Factory of [`RpcBlockchain`] instances, implements [`BlockchainFactory`]
+///
+/// Internally caches the node url and authentication params and allows getting many different [`RpcBlockchain`]
+/// objects for different wallet names and with different rescan heights.
+///
+/// ## Example
+///
+/// ```no_run
+/// # use bdk::bitcoin::Network;
+/// # use bdk::blockchain::BlockchainFactory;
+/// # use bdk::blockchain::rpc::{Auth, RpcBlockchainFactory};
+/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+/// let factory = RpcBlockchainFactory {
+/// url: "http://127.0.0.1:18332".to_string(),
+/// auth: Auth::Cookie {
+/// file: "/home/user/.bitcoin/.cookie".into(),
+/// },
+/// network: Network::Testnet,
+/// wallet_name_prefix: Some("prefix-".to_string()),
+/// default_skip_blocks: 100_000,
+/// sync_params: None,
+/// };
+/// let main_wallet_blockchain = factory.build("main_wallet", Some(200_000))?;
+/// # Ok(())
+/// # }
+/// ```
+</span><span class="attr">#[derive(Debug, Clone)]
+</span><span class="kw">pub struct </span>RpcBlockchainFactory {
+ <span class="doccomment">/// The bitcoin node url
+ </span><span class="kw">pub </span>url: String,
+ <span class="doccomment">/// The bitcoin node authentication mechanism
+ </span><span class="kw">pub </span>auth: Auth,
+ <span class="doccomment">/// The network we are using (it will be checked the bitcoin node network matches this)
+ </span><span class="kw">pub </span>network: Network,
+ <span class="doccomment">/// The optional prefix used to build the full wallet name for blockchains
+ </span><span class="kw">pub </span>wallet_name_prefix: <span class="prelude-ty">Option</span><String>,
+ <span class="doccomment">/// Default number of blocks to skip which will be inherited by blockchain unless overridden
+ </span><span class="kw">pub </span>default_skip_blocks: u32,
+ <span class="doccomment">/// Sync parameters
+ </span><span class="kw">pub </span>sync_params: <span class="prelude-ty">Option</span><RpcSyncParams>,
}
-<span class="kw">impl</span> <span class="ident">BlockchainFactory</span> <span class="kw">for</span> <span class="ident">RpcBlockchainFactory</span> {
- <span class="kw">type</span> <span class="ident">Inner</span> <span class="op">=</span> <span class="ident">RpcBlockchain</span>;
+<span class="kw">impl </span>BlockchainFactory <span class="kw">for </span>RpcBlockchainFactory {
+ <span class="kw">type </span>Inner = RpcBlockchain;
- <span class="kw">fn</span> <span class="ident">build</span>(
+ <span class="kw">fn </span>build(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">checksum</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- <span class="ident">_override_skip_blocks</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident"><span class="self">Self</span>::Inner</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="ident">RpcBlockchain::from_config</span>(<span class="kw-2">&</span><span class="ident">RpcConfig</span> {
- <span class="ident">url</span>: <span class="self">self</span>.<span class="ident">url</span>.<span class="ident">clone</span>(),
- <span class="ident">auth</span>: <span class="self">self</span>.<span class="ident">auth</span>.<span class="ident">clone</span>(),
- <span class="ident">network</span>: <span class="self">self</span>.<span class="ident">network</span>,
- <span class="ident">wallet_name</span>: <span class="macro">format!</span>(
+ checksum: <span class="kw-2">&</span>str,
+ _override_skip_blocks: <span class="prelude-ty">Option</span><u32>,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>::Inner, Error> {
+ RpcBlockchain::from_config(<span class="kw-2">&</span>RpcConfig {
+ url: <span class="self">self</span>.url.clone(),
+ auth: <span class="self">self</span>.auth.clone(),
+ network: <span class="self">self</span>.network,
+ wallet_name: <span class="macro">format!</span>(
<span class="string">"{}{}"</span>,
- <span class="self">self</span>.<span class="ident">wallet_name_prefix</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap_or</span>(<span class="kw-2">&</span><span class="ident">String::new</span>()),
- <span class="ident">checksum</span>
+ <span class="self">self</span>.wallet_name_prefix.as_ref().unwrap_or(<span class="kw-2">&</span>String::new()),
+ checksum
),
- <span class="ident">sync_params</span>: <span class="self">self</span>.<span class="ident">sync_params</span>.<span class="ident">clone</span>(),
+ sync_params: <span class="self">self</span>.sync_params.clone(),
})
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">any</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-rpc"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-rpc-legacy"</span>))]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="kw">crate</span>::{
- <span class="ident">descriptor::into_wallet_descriptor_checked</span>, <span class="ident">testutils::blockchain_tests::TestClient</span>,
- <span class="ident">wallet::utils::SecpCtx</span>,
+<span class="attr">#[cfg(test)]
+#[cfg(any(feature = <span class="string">"test-rpc"</span>, feature = <span class="string">"test-rpc-legacy"</span>))]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use crate</span>::{
+ descriptor::into_wallet_descriptor_checked, testutils::blockchain_tests::TestClient,
+ wallet::utils::SecpCtx,
};
- <span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Address</span>, <span class="ident">Network</span>};
- <span class="kw">use</span> <span class="ident">bitcoincore_rpc::RpcApi</span>;
- <span class="kw">use</span> <span class="ident">log::LevelFilter</span>;
-
- <span class="macro">crate::bdk_blockchain_tests!</span> {
- <span class="kw">fn</span> <span class="ident">test_instance</span>(<span class="ident">test_client</span>: <span class="kw-2">&</span><span class="ident">TestClient</span>) -> <span class="ident">RpcBlockchain</span> {
- <span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">RpcConfig</span> {
- <span class="ident">url</span>: <span class="ident">test_client</span>.<span class="ident">bitcoind</span>.<span class="ident">rpc_url</span>(),
- <span class="ident">auth</span>: <span class="ident">Auth::Cookie</span> { <span class="ident">file</span>: <span class="ident">test_client</span>.<span class="ident">bitcoind</span>.<span class="ident">params</span>.<span class="ident">cookie_file</span>.<span class="ident">clone</span>() },
- <span class="ident">network</span>: <span class="ident">Network::Regtest</span>,
- <span class="ident">wallet_name</span>: <span class="macro">format!</span>(<span class="string">"client-wallet-test-{}"</span>, <span class="ident">std::time::SystemTime::now</span>().<span class="ident">duration_since</span>(<span class="ident">std::time::UNIX_EPOCH</span>).<span class="ident">unwrap</span>().<span class="ident">as_nanos</span>() ),
- <span class="ident">sync_params</span>: <span class="prelude-val">None</span>,
+ <span class="kw">use </span>bitcoin::{Address, Network};
+ <span class="kw">use </span>bitcoincore_rpc::RpcApi;
+ <span class="kw">use </span>log::LevelFilter;
+
+ <span class="macro">crate::bdk_blockchain_tests! </span>{
+ <span class="kw">fn </span>test_instance(test_client: <span class="kw-2">&</span>TestClient) -> RpcBlockchain {
+ <span class="kw">let </span>config = RpcConfig {
+ url: test_client.bitcoind.rpc_url(),
+ auth: Auth::Cookie { file: test_client.bitcoind.params.cookie_file.clone() },
+ network: Network::Regtest,
+ wallet_name: <span class="macro">format!</span>(<span class="string">"client-wallet-test-{}"</span>, std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_nanos() ),
+ sync_params: <span class="prelude-val">None</span>,
};
- <span class="ident">RpcBlockchain::from_config</span>(<span class="kw-2">&</span><span class="ident">config</span>).<span class="ident">unwrap</span>()
+ RpcBlockchain::from_config(<span class="kw-2">&</span>config).unwrap()
}
}
- <span class="kw">fn</span> <span class="ident">get_factory</span>() -> (<span class="ident">TestClient</span>, <span class="ident">RpcBlockchainFactory</span>) {
- <span class="kw">let</span> <span class="ident">test_client</span> <span class="op">=</span> <span class="ident">TestClient::default</span>();
+ <span class="kw">fn </span>get_factory() -> (TestClient, RpcBlockchainFactory) {
+ <span class="kw">let </span>test_client = TestClient::default();
- <span class="kw">let</span> <span class="ident">factory</span> <span class="op">=</span> <span class="ident">RpcBlockchainFactory</span> {
- <span class="ident">url</span>: <span class="ident">test_client</span>.<span class="ident">bitcoind</span>.<span class="ident">rpc_url</span>(),
- <span class="ident">auth</span>: <span class="ident">Auth::Cookie</span> {
- <span class="ident">file</span>: <span class="ident">test_client</span>.<span class="ident">bitcoind</span>.<span class="ident">params</span>.<span class="ident">cookie_file</span>.<span class="ident">clone</span>(),
+ <span class="kw">let </span>factory = RpcBlockchainFactory {
+ url: test_client.bitcoind.rpc_url(),
+ auth: Auth::Cookie {
+ file: test_client.bitcoind.params.cookie_file.clone(),
},
- <span class="ident">network</span>: <span class="ident">Network::Regtest</span>,
- <span class="ident">wallet_name_prefix</span>: <span class="prelude-val">Some</span>(<span class="string">"prefix-"</span>.<span class="ident">into</span>()),
- <span class="ident">default_skip_blocks</span>: <span class="number">0</span>,
- <span class="ident">sync_params</span>: <span class="prelude-val">None</span>,
+ network: Network::Regtest,
+ wallet_name_prefix: <span class="prelude-val">Some</span>(<span class="string">"prefix-"</span>.into()),
+ default_skip_blocks: <span class="number">0</span>,
+ sync_params: <span class="prelude-val">None</span>,
};
- (<span class="ident">test_client</span>, <span class="ident">factory</span>)
+ (test_client, factory)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_rpc_blockchain_factory</span>() {
- <span class="kw">let</span> (<span class="ident">_test_client</span>, <span class="ident">factory</span>) <span class="op">=</span> <span class="ident">get_factory</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_rpc_blockchain_factory() {
+ <span class="kw">let </span>(_test_client, factory) = get_factory();
- <span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> <span class="ident">factory</span>.<span class="ident">build</span>(<span class="string">"aaaaaa"</span>, <span class="prelude-val">None</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>a = factory.build(<span class="string">"aaaaaa"</span>, <span class="prelude-val">None</span>).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">a</span>.<span class="ident">client</span>
- .<span class="ident">get_wallet_info</span>()
- .<span class="ident">expect</span>(<span class="string">"Node connection isn't working"</span>)
- .<span class="ident">wallet_name</span>,
- <span class="string">"prefix-aaaaaa"</span>
- );
-
- <span class="kw">let</span> <span class="ident">b</span> <span class="op">=</span> <span class="ident">factory</span>.<span class="ident">build</span>(<span class="string">"bbbbbb"</span>, <span class="prelude-val">Some</span>(<span class="number">100</span>)).<span class="ident">unwrap</span>();
+ a.client
+ .get_wallet_info()
+ .expect(<span class="string">"Node connection isn't working"</span>)
+ .wallet_name,
+ <span class="string">"prefix-aaaaaa"
+ </span>);
+
+ <span class="kw">let </span>b = factory.build(<span class="string">"bbbbbb"</span>, <span class="prelude-val">Some</span>(<span class="number">100</span>)).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">b</span>.<span class="ident">client</span>
- .<span class="ident">get_wallet_info</span>()
- .<span class="ident">expect</span>(<span class="string">"Node connection isn't working"</span>)
- .<span class="ident">wallet_name</span>,
- <span class="string">"prefix-bbbbbb"</span>
- );
+ b.client
+ .get_wallet_info()
+ .expect(<span class="string">"Node connection isn't working"</span>)
+ .wallet_name,
+ <span class="string">"prefix-bbbbbb"
+ </span>);
}
- <span class="doccomment">/// This test ensures that [list_transactions] always iterates through transactions in</span>
- <span class="doccomment">/// chronological order, independent of the `page_size`.</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_list_transactions</span>() {
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">env_logger::builder</span>()
- .<span class="ident">filter_level</span>(<span class="ident">LevelFilter::Info</span>)
- .<span class="ident">default_format</span>()
- .<span class="ident">try_init</span>();
-
- <span class="kw">const</span> <span class="ident">DESC</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> <span class="op">=</span> <span class="string">"wpkh(tpubD9zMNV59kgbWgKK55SHJugmKKSt6wQXczxpucGYqNKwGmJp1x7Ar2nrLUXYHDdCctXmyDoSCn2JVMzMUDfib3FaDhwxCEMUELoq19xLSx66/*)"</span>;
- <span class="kw">const</span> <span class="ident">AMOUNT_PER_TX</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">10_000</span>;
- <span class="kw">const</span> <span class="ident">TX_COUNT</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="number">50</span>;
-
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">SecpCtx::default</span>();
- <span class="kw">let</span> <span class="ident">network</span> <span class="op">=</span> <span class="ident">Network::Regtest</span>;
- <span class="kw">let</span> (<span class="ident">desc</span>, ..) <span class="op">=</span> <span class="ident">into_wallet_descriptor_checked</span>(<span class="ident">DESC</span>, <span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">network</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">test_client</span>, <span class="ident">factory</span>) <span class="op">=</span> <span class="ident">get_factory</span>();
- <span class="kw">let</span> <span class="ident">bc</span> <span class="op">=</span> <span class="ident">factory</span>.<span class="ident">build</span>(<span class="string">"itertest"</span>, <span class="prelude-val">None</span>).<span class="ident">unwrap</span>();
-
- <span class="comment">// generate scripts (1 tx per script)</span>
- <span class="kw">let</span> <span class="ident">scripts</span> <span class="op">=</span> (<span class="number">0</span>..<span class="ident">TX_COUNT</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">index</span><span class="op">|</span> <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="ident">index</span>).<span class="ident">script_pubkey</span>())
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
-
- <span class="comment">// import scripts and wait</span>
- <span class="kw">if</span> <span class="ident">bc</span>.<span class="ident">is_descriptors</span> {
- <span class="ident">import_descriptors</span>(<span class="kw-2">&</span><span class="ident">bc</span>.<span class="ident">client</span>, <span class="number">0</span>, <span class="ident">scripts</span>.<span class="ident">iter</span>()).<span class="ident">unwrap</span>();
- } <span class="kw">else</span> {
- <span class="ident">import_multi</span>(<span class="kw-2">&</span><span class="ident">bc</span>.<span class="ident">client</span>, <span class="number">0</span>, <span class="ident">scripts</span>.<span class="ident">iter</span>()).<span class="ident">unwrap</span>();
+ <span class="doccomment">/// This test ensures that [list_transactions] always iterates through transactions in
+ /// chronological order, independent of the `page_size`.
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_list_transactions() {
+ <span class="kw">let _ </span>= env_logger::builder()
+ .filter_level(LevelFilter::Info)
+ .default_format()
+ .try_init();
+
+ <span class="kw">const </span>DESC: <span class="kw-2">&</span><span class="lifetime">'static </span>str = <span class="string">"wpkh(tpubD9zMNV59kgbWgKK55SHJugmKKSt6wQXczxpucGYqNKwGmJp1x7Ar2nrLUXYHDdCctXmyDoSCn2JVMzMUDfib3FaDhwxCEMUELoq19xLSx66/*)"</span>;
+ <span class="kw">const </span>AMOUNT_PER_TX: u64 = <span class="number">10_000</span>;
+ <span class="kw">const </span>TX_COUNT: u32 = <span class="number">50</span>;
+
+ <span class="kw">let </span>secp = SecpCtx::default();
+ <span class="kw">let </span>network = Network::Regtest;
+ <span class="kw">let </span>(desc, ..) = into_wallet_descriptor_checked(DESC, <span class="kw-2">&</span>secp, network).unwrap();
+
+ <span class="kw">let </span>(<span class="kw-2">mut </span>test_client, factory) = get_factory();
+ <span class="kw">let </span>bc = factory.build(<span class="string">"itertest"</span>, <span class="prelude-val">None</span>).unwrap();
+
+ <span class="comment">// generate scripts (1 tx per script)
+ </span><span class="kw">let </span>scripts = (<span class="number">0</span>..TX_COUNT)
+ .map(|index| desc.at_derivation_index(index).script_pubkey())
+ .collect::<Vec<<span class="kw">_</span>>>();
+
+ <span class="comment">// import scripts and wait
+ </span><span class="kw">if </span>bc.is_descriptors {
+ import_descriptors(<span class="kw-2">&</span>bc.client, <span class="number">0</span>, scripts.iter()).unwrap();
+ } <span class="kw">else </span>{
+ import_multi(<span class="kw-2">&</span>bc.client, <span class="number">0</span>, scripts.iter()).unwrap();
}
- <span class="ident">await_wallet_scan</span>(<span class="kw-2">&</span><span class="ident">bc</span>.<span class="ident">client</span>, <span class="number">2</span>, <span class="kw-2">&</span><span class="ident">NoopProgress</span>).<span class="ident">unwrap</span>();
-
- <span class="comment">// create and broadcast txs</span>
- <span class="kw">let</span> <span class="ident">expected_txids</span> <span class="op">=</span> <span class="ident">scripts</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">script</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_script</span>(<span class="ident">script</span>, <span class="ident">network</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span>
- <span class="ident">test_client</span>.<span class="ident">receive</span>(<span class="macro">testutils!</span> { @<span class="ident">tx</span> ( (@<span class="ident">addr</span> <span class="ident">addr</span>) => <span class="ident">AMOUNT_PER_TX</span> ) });
- <span class="ident">test_client</span>.<span class="ident">generate</span>(<span class="number">1</span>, <span class="prelude-val">None</span>);
- <span class="ident">txid</span>
+ await_wallet_scan(<span class="kw-2">&</span>bc.client, <span class="number">2</span>, <span class="kw-2">&</span>NoopProgress).unwrap();
+
+ <span class="comment">// create and broadcast txs
+ </span><span class="kw">let </span>expected_txids = scripts
+ .iter()
+ .map(|script| {
+ <span class="kw">let </span>addr = Address::from_script(script, network).unwrap();
+ <span class="kw">let </span>txid =
+ test_client.receive(<span class="macro">testutils! </span>{ @tx ( (@addr addr) => AMOUNT_PER_TX ) });
+ test_client.generate(<span class="number">1</span>, <span class="prelude-val">None</span>);
+ txid
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ .collect::<Vec<<span class="kw">_</span>>>();
- <span class="comment">// iterate through different page sizes - should always return txs in chronological order</span>
- [<span class="number">1000</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">25</span>, <span class="number">49</span>, <span class="number">50</span>].<span class="ident">iter</span>().<span class="ident">for_each</span>(<span class="op">|</span><span class="ident">page_size</span><span class="op">|</span> {
- <span class="macro">println!</span>(<span class="string">"trying with page_size: {}"</span>, <span class="ident">page_size</span>);
+ <span class="comment">// iterate through different page sizes - should always return txs in chronological order
+ </span>[<span class="number">1000</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">25</span>, <span class="number">49</span>, <span class="number">50</span>].iter().for_each(|page_size| {
+ <span class="macro">println!</span>(<span class="string">"trying with page_size: {}"</span>, page_size);
- <span class="kw">let</span> <span class="ident">txids</span> <span class="op">=</span> <span class="ident">list_transactions</span>(<span class="kw-2">&</span><span class="ident">bc</span>.<span class="ident">client</span>, <span class="kw-2">*</span><span class="ident">page_size</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">res</span><span class="op">|</span> <span class="ident">res</span>.<span class="ident">info</span>.<span class="ident">txid</span>)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ <span class="kw">let </span>txids = list_transactions(<span class="kw-2">&</span>bc.client, <span class="kw-2">*</span>page_size)
+ .unwrap()
+ .map(|res| res.info.txid)
+ .collect::<Vec<<span class="kw">_</span>>>();
- <span class="macro">assert_eq!</span>(<span class="ident">txids</span>.<span class="ident">len</span>(), <span class="ident">expected_txids</span>.<span class="ident">len</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">txids</span>, <span class="ident">expected_txids</span>);
+ <span class="macro">assert_eq!</span>(txids.len(), expected_txids.len());
+ <span class="macro">assert_eq!</span>(txids, expected_txids);
});
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/script_sync.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>script_sync.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/blockchain/script_sync.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>script_sync.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
</pre><pre class="rust"><code><span class="doccomment">/*!
This models a how a sync happens where you have a server that you send your script pubkeys to and it
returns associated transactions i.e. electrum.
-*/</span>
-<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">dead_code</span>)]</span>
-<span class="kw">use</span> <span class="kw">crate</span>::{
- <span class="ident">database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">DatabaseUtils</span>},
- <span class="ident">error::MissingCachedScripts</span>,
- <span class="ident">wallet::time::Instant</span>,
- <span class="ident">BlockTime</span>, <span class="ident">Error</span>, <span class="ident">KeychainKind</span>, <span class="ident">LocalUtxo</span>, <span class="ident">TransactionDetails</span>,
+*/
+</span><span class="attr">#![allow(dead_code)]
+</span><span class="kw">use crate</span>::{
+ database::{BatchDatabase, BatchOperations, DatabaseUtils},
+ error::MissingCachedScripts,
+ wallet::time::Instant,
+ BlockTime, Error, KeychainKind, LocalUtxo, TransactionDetails,
};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">Transaction</span>, <span class="ident">TxOut</span>, <span class="ident">Txid</span>};
-<span class="kw">use</span> <span class="ident">log</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">BTreeMap</span>, <span class="ident">BTreeSet</span>, <span class="ident">HashMap</span>, <span class="ident">HashSet</span>, <span class="ident">VecDeque</span>};
-
-<span class="doccomment">/// A request for on-chain information</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Request</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> {
- <span class="doccomment">/// A request for transactions related to script pubkeys.</span>
- <span class="ident">Script</span>(<span class="ident">ScriptReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>),
- <span class="doccomment">/// A request for confirmation times for some transactions.</span>
- <span class="ident">Conftime</span>(<span class="ident">ConftimeReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>),
- <span class="doccomment">/// A request for full transaction details of some transactions.</span>
- <span class="ident">Tx</span>(<span class="ident">TxReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>),
- <span class="doccomment">/// Requests are finished here's a batch database update to reflect data gathered.</span>
- <span class="ident">Finish</span>(<span class="ident">D::Batch</span>),
+<span class="kw">use </span>bitcoin::{OutPoint, Script, Transaction, TxOut, Txid};
+<span class="kw">use </span>log::<span class="kw-2">*</span>;
+<span class="kw">use </span>std::collections::{BTreeMap, BTreeSet, HashMap, HashSet, VecDeque};
+
+<span class="doccomment">/// A request for on-chain information
+</span><span class="kw">pub enum </span>Request<<span class="lifetime">'a</span>, D: BatchDatabase> {
+ <span class="doccomment">/// A request for transactions related to script pubkeys.
+ </span>Script(ScriptReq<<span class="lifetime">'a</span>, D>),
+ <span class="doccomment">/// A request for confirmation times for some transactions.
+ </span>Conftime(ConftimeReq<<span class="lifetime">'a</span>, D>),
+ <span class="doccomment">/// A request for full transaction details of some transactions.
+ </span>Tx(TxReq<<span class="lifetime">'a</span>, D>),
+ <span class="doccomment">/// Requests are finished here's a batch database update to reflect data gathered.
+ </span>Finish(D::Batch),
}
-<span class="doccomment">/// starts a sync</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">start</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(<span class="ident">db</span>: <span class="kw-2">&</span><span class="ident">D</span>, <span class="ident">stop_gap</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Request</span><span class="op"><</span><span class="lifetime">'_</span>, <span class="ident">D</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">use</span> <span class="ident">rand::seq::SliceRandom</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">keychains</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">KeychainKind::Internal</span>, <span class="ident">KeychainKind::External</span>];
- <span class="comment">// shuffling improve privacy, the server doesn't know my first request is from my internal or external addresses</span>
- <span class="ident">keychains</span>.<span class="ident">shuffle</span>(<span class="kw-2">&mut</span> <span class="ident">rand::thread_rng</span>());
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">keychains</span>.<span class="ident">pop</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">scripts_needed</span> <span class="op">=</span> <span class="ident">db</span>
- .<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">Some</span>(<span class="ident">keychain</span>))<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">VecDeque</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">let</span> <span class="ident">state</span> <span class="op">=</span> <span class="ident">State::new</span>(<span class="ident">db</span>);
-
- <span class="prelude-val">Ok</span>(<span class="ident">Request::Script</span>(<span class="ident">ScriptReq</span> {
- <span class="ident">state</span>,
- <span class="ident">initial_scripts_needed</span>: <span class="ident">scripts_needed</span>.<span class="ident">len</span>(),
- <span class="ident">scripts_needed</span>,
- <span class="ident">script_index</span>: <span class="number">0</span>,
- <span class="ident">stop_gap</span>,
- <span class="ident">keychain</span>,
- <span class="ident">next_keychains</span>: <span class="ident">keychains</span>,
+<span class="doccomment">/// starts a sync
+</span><span class="kw">pub fn </span>start<D: BatchDatabase>(db: <span class="kw-2">&</span>D, stop_gap: usize) -> <span class="prelude-ty">Result</span><Request<<span class="lifetime">'_</span>, D>, Error> {
+ <span class="kw">use </span>rand::seq::SliceRandom;
+ <span class="kw">let </span><span class="kw-2">mut </span>keychains = <span class="macro">vec!</span>[KeychainKind::Internal, KeychainKind::External];
+ <span class="comment">// shuffling improve privacy, the server doesn't know my first request is from my internal or external addresses
+ </span>keychains.shuffle(<span class="kw-2">&mut </span>rand::thread_rng());
+ <span class="kw">let </span>keychain = keychains.pop().unwrap();
+ <span class="kw">let </span>scripts_needed = db
+ .iter_script_pubkeys(<span class="prelude-val">Some</span>(keychain))<span class="question-mark">?
+ </span>.into_iter()
+ .collect::<VecDeque<<span class="kw">_</span>>>();
+ <span class="kw">let </span>state = State::new(db);
+
+ <span class="prelude-val">Ok</span>(Request::Script(ScriptReq {
+ state,
+ initial_scripts_needed: scripts_needed.len(),
+ scripts_needed,
+ script_index: <span class="number">0</span>,
+ stop_gap,
+ keychain,
+ next_keychains: keychains,
}))
}
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ScriptReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> {
- <span class="ident">state</span>: <span class="ident">State</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>,
- <span class="ident">script_index</span>: <span class="ident">usize</span>,
- <span class="ident">initial_scripts_needed</span>: <span class="ident">usize</span>, <span class="comment">// if this is 1, we assume the descriptor is not derivable</span>
- <span class="ident">scripts_needed</span>: <span class="ident">VecDeque</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>,
- <span class="ident">stop_gap</span>: <span class="ident">usize</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">next_keychains</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>,
+<span class="kw">pub struct </span>ScriptReq<<span class="lifetime">'a</span>, D: BatchDatabase> {
+ state: State<<span class="lifetime">'a</span>, D>,
+ script_index: usize,
+ initial_scripts_needed: usize, <span class="comment">// if this is 1, we assume the descriptor is not derivable
+ </span>scripts_needed: VecDeque<Script>,
+ stop_gap: usize,
+ keychain: KeychainKind,
+ next_keychains: Vec<KeychainKind>,
}
-<span class="doccomment">/// The sync starts by returning script pubkeys we are interested in.</span>
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> <span class="ident">ScriptReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">request</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">Script</span><span class="op">></span> <span class="op">+</span> <span class="ident">Clone</span> {
- <span class="self">self</span>.<span class="ident">scripts_needed</span>.<span class="ident">iter</span>()
+<span class="doccomment">/// The sync starts by returning script pubkeys we are interested in.
+</span><span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase> ScriptReq<<span class="lifetime">'a</span>, D> {
+ <span class="kw">pub fn </span>request(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl </span>Iterator<Item = <span class="kw-2">&</span>Script> + Clone {
+ <span class="self">self</span>.scripts_needed.iter()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">satisfy</span>(
- <span class="kw-2">mut</span> <span class="self">self</span>,
- <span class="comment">// we want to know the txids assoiciated with the script and their height</span>
- <span class="ident">txids</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span>(<span class="ident">Txid</span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>)<span class="op">></span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Request</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">for</span> (<span class="ident">txid_list</span>, <span class="ident">script</span>) <span class="kw">in</span> <span class="ident">txids</span>.<span class="ident">iter</span>().<span class="ident">zip</span>(<span class="self">self</span>.<span class="ident">scripts_needed</span>.<span class="ident">iter</span>()) {
+ <span class="kw">pub fn </span>satisfy(
+ <span class="kw-2">mut </span><span class="self">self</span>,
+ <span class="comment">// we want to know the txids assoiciated with the script and their height
+ </span>txids: Vec<Vec<(Txid, <span class="prelude-ty">Option</span><u32>)>>,
+ ) -> <span class="prelude-ty">Result</span><Request<<span class="lifetime">'a</span>, D>, Error> {
+ <span class="kw">for </span>(txid_list, script) <span class="kw">in </span>txids.iter().zip(<span class="self">self</span>.scripts_needed.iter()) {
<span class="macro">debug!</span>(
<span class="string">"found {} transactions for script pubkey {}"</span>,
- <span class="ident">txid_list</span>.<span class="ident">len</span>(),
- <span class="ident">script</span>
+ txid_list.len(),
+ script
);
- <span class="kw">if</span> <span class="op">!</span><span class="ident">txid_list</span>.<span class="ident">is_empty</span>() {
- <span class="comment">// the address is active</span>
- <span class="self">self</span>.<span class="ident">state</span>
- .<span class="ident">last_active_index</span>
- .<span class="ident">insert</span>(<span class="self">self</span>.<span class="ident">keychain</span>, <span class="self">self</span>.<span class="ident">script_index</span>);
+ <span class="kw">if </span>!txid_list.is_empty() {
+ <span class="comment">// the address is active
+ </span><span class="self">self</span>.state
+ .last_active_index
+ .insert(<span class="self">self</span>.keychain, <span class="self">self</span>.script_index);
}
- <span class="kw">for</span> (<span class="ident">txid</span>, <span class="ident">height</span>) <span class="kw">in</span> <span class="ident">txid_list</span> {
- <span class="comment">// have we seen this txid already?</span>
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">db</span>.<span class="ident">get_tx</span>(<span class="ident">txid</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="kw-2">mut</span> <span class="ident">details</span>) => {
- <span class="kw">let</span> <span class="ident">old_height</span> <span class="op">=</span> <span class="ident">details</span>.<span class="ident">confirmation_time</span>.<span class="ident">as_ref</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">height</span>);
- <span class="kw">match</span> (<span class="ident">old_height</span>, <span class="ident">height</span>) {
+ <span class="kw">for </span>(txid, height) <span class="kw">in </span>txid_list {
+ <span class="comment">// have we seen this txid already?
+ </span><span class="kw">match </span><span class="self">self</span>.state.db.get_tx(txid, <span class="bool-val">true</span>)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(<span class="kw-2">mut </span>details) => {
+ <span class="kw">let </span>old_height = details.confirmation_time.as_ref().map(|x| x.height);
+ <span class="kw">match </span>(old_height, height) {
(<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="kw">_</span>)) => {
- <span class="comment">// It looks like the tx has confirmed since we last saw it -- we</span>
- <span class="comment">// need to know the confirmation time.</span>
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_missing_conftime</span>.<span class="ident">insert</span>(<span class="kw-2">*</span><span class="ident">txid</span>, <span class="ident">details</span>);
+ <span class="comment">// It looks like the tx has confirmed since we last saw it -- we
+ // need to know the confirmation time.
+ </span><span class="self">self</span>.state.tx_missing_conftime.insert(<span class="kw-2">*</span>txid, details);
}
- (<span class="prelude-val">Some</span>(<span class="ident">old_height</span>), <span class="prelude-val">Some</span>(<span class="ident">new_height</span>)) <span class="kw">if</span> <span class="ident">old_height</span> <span class="op">!</span><span class="op">=</span> <span class="kw-2">*</span><span class="ident">new_height</span> => {
- <span class="comment">// The height of the tx has changed !? -- It's a reorg get the new confirmation time.</span>
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_missing_conftime</span>.<span class="ident">insert</span>(<span class="kw-2">*</span><span class="ident">txid</span>, <span class="ident">details</span>);
+ (<span class="prelude-val">Some</span>(old_height), <span class="prelude-val">Some</span>(new_height)) <span class="kw">if </span>old_height != <span class="kw-2">*</span>new_height => {
+ <span class="comment">// The height of the tx has changed !? -- It's a reorg get the new confirmation time.
+ </span><span class="self">self</span>.state.tx_missing_conftime.insert(<span class="kw-2">*</span>txid, details);
}
(<span class="prelude-val">Some</span>(<span class="kw">_</span>), <span class="prelude-val">None</span>) => {
- <span class="comment">// A re-org where the tx is not in the chain anymore.</span>
- <span class="ident">details</span>.<span class="ident">confirmation_time</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">finished_txs</span>.<span class="ident">push</span>(<span class="ident">details</span>);
+ <span class="comment">// A re-org where the tx is not in the chain anymore.
+ </span>details.confirmation_time = <span class="prelude-val">None</span>;
+ <span class="self">self</span>.state.finished_txs.push(details);
}
- <span class="kw">_</span> => <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">finished_txs</span>.<span class="ident">push</span>(<span class="ident">details</span>),
+ <span class="kw">_ </span>=> <span class="self">self</span>.state.finished_txs.push(details),
}
}
- <span class="prelude-val">None</span> => {
- <span class="comment">// we've never seen it let's get the whole thing</span>
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_needed</span>.<span class="ident">insert</span>(<span class="kw-2">*</span><span class="ident">txid</span>);
+ <span class="prelude-val">None </span>=> {
+ <span class="comment">// we've never seen it let's get the whole thing
+ </span><span class="self">self</span>.state.tx_needed.insert(<span class="kw-2">*</span>txid);
}
};
}
- <span class="self">self</span>.<span class="ident">script_index</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
+ <span class="self">self</span>.script_index += <span class="number">1</span>;
}
- <span class="self">self</span>.<span class="ident">scripts_needed</span>.<span class="ident">drain</span>(..<span class="ident">txids</span>.<span class="ident">len</span>());
+ <span class="self">self</span>.scripts_needed.drain(..txids.len());
- <span class="comment">// last active index: 0 => No last active</span>
- <span class="kw">let</span> <span class="ident">last</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">state</span>
- .<span class="ident">last_active_index</span>
- .<span class="ident">get</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">keychain</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">l</span><span class="op">|</span> <span class="ident">l</span> <span class="op">+</span> <span class="number">1</span>)
- .<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="comment">// remaining scripts left to check</span>
- <span class="kw">let</span> <span class="ident">remaining</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">scripts_needed</span>.<span class="ident">len</span>();
- <span class="comment">// difference between current index and last active index</span>
- <span class="kw">let</span> <span class="ident">current_gap</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">script_index</span> <span class="op">-</span> <span class="ident">last</span>;
+ <span class="comment">// last active index: 0 => No last active
+ </span><span class="kw">let </span>last = <span class="self">self
+ </span>.state
+ .last_active_index
+ .get(<span class="kw-2">&</span><span class="self">self</span>.keychain)
+ .map(|<span class="kw-2">&</span>l| l + <span class="number">1</span>)
+ .unwrap_or(<span class="number">0</span>);
+ <span class="comment">// remaining scripts left to check
+ </span><span class="kw">let </span>remaining = <span class="self">self</span>.scripts_needed.len();
+ <span class="comment">// difference between current index and last active index
+ </span><span class="kw">let </span>current_gap = <span class="self">self</span>.script_index - last;
- <span class="comment">// this is a hack to check whether the scripts are coming from a derivable descriptor</span>
- <span class="comment">// we assume for non-derivable descriptors, the initial script count is always 1</span>
- <span class="kw">let</span> <span class="ident">is_derivable</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">initial_scripts_needed</span> <span class="op">></span> <span class="number">1</span>;
+ <span class="comment">// this is a hack to check whether the scripts are coming from a derivable descriptor
+ // we assume for non-derivable descriptors, the initial script count is always 1
+ </span><span class="kw">let </span>is_derivable = <span class="self">self</span>.initial_scripts_needed > <span class="number">1</span>;
<span class="macro">debug!</span>(
<span class="string">"sync: last={}, remaining={}, diff={}, stop_gap={}"</span>,
- <span class="ident">last</span>, <span class="ident">remaining</span>, <span class="ident">current_gap</span>, <span class="self">self</span>.<span class="ident">stop_gap</span>
+ last, remaining, current_gap, <span class="self">self</span>.stop_gap
);
- <span class="kw">if</span> <span class="ident">is_derivable</span> {
- <span class="kw">if</span> <span class="ident">remaining</span> <span class="op">></span> <span class="number">0</span> {
- <span class="comment">// we still have scriptPubKeys to do requests for</span>
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="ident">Request::Script</span>(<span class="self">self</span>));
+ <span class="kw">if </span>is_derivable {
+ <span class="kw">if </span>remaining > <span class="number">0 </span>{
+ <span class="comment">// we still have scriptPubKeys to do requests for
+ </span><span class="kw">return </span><span class="prelude-val">Ok</span>(Request::Script(<span class="self">self</span>));
}
- <span class="kw">if</span> <span class="ident">last</span> <span class="op">></span> <span class="number">0</span> <span class="op">&&</span> <span class="ident">current_gap</span> <span class="op"><</span> <span class="self">self</span>.<span class="ident">stop_gap</span> {
- <span class="comment">// current gap is not large enough to stop, but we are unable to keep checking since</span>
- <span class="comment">// we have exhausted cached scriptPubKeys, so return error</span>
- <span class="kw">let</span> <span class="ident">err</span> <span class="op">=</span> <span class="ident">MissingCachedScripts</span> {
- <span class="ident">last_count</span>: <span class="self">self</span>.<span class="ident">script_index</span>,
- <span class="ident">missing_count</span>: <span class="self">self</span>.<span class="ident">stop_gap</span> <span class="op">-</span> <span class="ident">current_gap</span>,
+ <span class="kw">if </span>last > <span class="number">0 </span>&& current_gap < <span class="self">self</span>.stop_gap {
+ <span class="comment">// current gap is not large enough to stop, but we are unable to keep checking since
+ // we have exhausted cached scriptPubKeys, so return error
+ </span><span class="kw">let </span>err = MissingCachedScripts {
+ last_count: <span class="self">self</span>.script_index,
+ missing_count: <span class="self">self</span>.stop_gap - current_gap,
};
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::MissingCachedScripts</span>(<span class="ident">err</span>));
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::MissingCachedScripts(err));
}
- <span class="comment">// we have exhausted cached scriptPubKeys and found no txs, continue</span>
- }
+ <span class="comment">// we have exhausted cached scriptPubKeys and found no txs, continue
+ </span>}
<span class="macro">debug!</span>(
<span class="string">"finished scanning for txs of keychain {:?} at index {:?}"</span>,
- <span class="self">self</span>.<span class="ident">keychain</span>, <span class="ident">last</span>
+ <span class="self">self</span>.keychain, last
);
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">keychain</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">next_keychains</span>.<span class="ident">pop</span>() {
- <span class="comment">// we still have another keychain to request txs with</span>
- <span class="kw">let</span> <span class="ident">scripts_needed</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">state</span>
- .<span class="ident">db</span>
- .<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">Some</span>(<span class="ident">keychain</span>))<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">VecDeque</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
-
- <span class="self">self</span>.<span class="ident">keychain</span> <span class="op">=</span> <span class="ident">keychain</span>;
- <span class="self">self</span>.<span class="ident">script_index</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="self">self</span>.<span class="ident">initial_scripts_needed</span> <span class="op">=</span> <span class="ident">scripts_needed</span>.<span class="ident">len</span>();
- <span class="self">self</span>.<span class="ident">scripts_needed</span> <span class="op">=</span> <span class="ident">scripts_needed</span>;
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="ident">Request::Script</span>(<span class="self">self</span>));
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(keychain) = <span class="self">self</span>.next_keychains.pop() {
+ <span class="comment">// we still have another keychain to request txs with
+ </span><span class="kw">let </span>scripts_needed = <span class="self">self
+ </span>.state
+ .db
+ .iter_script_pubkeys(<span class="prelude-val">Some</span>(keychain))<span class="question-mark">?
+ </span>.into_iter()
+ .collect::<VecDeque<<span class="kw">_</span>>>();
+
+ <span class="self">self</span>.keychain = keychain;
+ <span class="self">self</span>.script_index = <span class="number">0</span>;
+ <span class="self">self</span>.initial_scripts_needed = scripts_needed.len();
+ <span class="self">self</span>.scripts_needed = scripts_needed;
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(Request::Script(<span class="self">self</span>));
}
- <span class="comment">// We have finished requesting txids, let's get the actual txs.</span>
- <span class="prelude-val">Ok</span>(<span class="ident">Request::Tx</span>(<span class="ident">TxReq</span> { <span class="ident">state</span>: <span class="self">self</span>.<span class="ident">state</span> }))
+ <span class="comment">// We have finished requesting txids, let's get the actual txs.
+ </span><span class="prelude-val">Ok</span>(Request::Tx(TxReq { state: <span class="self">self</span>.state }))
}
}
-<span class="doccomment">/// Then we get full transactions</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TxReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="ident">state</span>: <span class="ident">State</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>,
+<span class="doccomment">/// Then we get full transactions
+</span><span class="kw">pub struct </span>TxReq<<span class="lifetime">'a</span>, D> {
+ state: State<<span class="lifetime">'a</span>, D>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> <span class="ident">TxReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">request</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">Txid</span><span class="op">></span> <span class="op">+</span> <span class="ident">Clone</span> {
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_needed</span>.<span class="ident">iter</span>()
+<span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase> TxReq<<span class="lifetime">'a</span>, D> {
+ <span class="kw">pub fn </span>request(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl </span>Iterator<Item = <span class="kw-2">&</span>Txid> + Clone {
+ <span class="self">self</span>.state.tx_needed.iter()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">satisfy</span>(
- <span class="kw-2">mut</span> <span class="self">self</span>,
- <span class="ident">tx_details</span>: <span class="ident">Vec</span><span class="op"><</span>(<span class="ident">Vec</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span><span class="op">></span>, <span class="ident">Transaction</span>)<span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Request</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">tx_details</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span> <span class="op">=</span> <span class="ident">tx_details</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">zip</span>(<span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_needed</span>.<span class="ident">iter</span>())
- .<span class="ident">map</span>(<span class="op">|</span>((<span class="ident">vout</span>, <span class="ident">tx</span>), <span class="ident">txid</span>)<span class="op">|</span> {
- <span class="macro">debug!</span>(<span class="string">"found tx_details for {}"</span>, <span class="ident">txid</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="kw-2">*</span><span class="ident">txid</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">sent</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">received</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">inputs_sum</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">outputs_sum</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
-
- <span class="kw">for</span> (<span class="ident">txout</span>, (<span class="ident">_input_index</span>, <span class="ident">input</span>)) <span class="kw">in</span>
- <span class="ident">vout</span>.<span class="ident">into_iter</span>().<span class="ident">zip</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>())
+ <span class="kw">pub fn </span>satisfy(
+ <span class="kw-2">mut </span><span class="self">self</span>,
+ tx_details: Vec<(Vec<<span class="prelude-ty">Option</span><TxOut>>, Transaction)>,
+ ) -> <span class="prelude-ty">Result</span><Request<<span class="lifetime">'a</span>, D>, Error> {
+ <span class="kw">let </span>tx_details: Vec<TransactionDetails> = tx_details
+ .into_iter()
+ .zip(<span class="self">self</span>.state.tx_needed.iter())
+ .map(|((vout, tx), txid)| {
+ <span class="macro">debug!</span>(<span class="string">"found tx_details for {}"</span>, txid);
+ <span class="macro">assert_eq!</span>(tx.txid(), <span class="kw-2">*</span>txid);
+ <span class="kw">let </span><span class="kw-2">mut </span>sent: u64 = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>received: u64 = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>inputs_sum: u64 = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>outputs_sum: u64 = <span class="number">0</span>;
+
+ <span class="kw">for </span>(txout, (_input_index, input)) <span class="kw">in
+ </span>vout.into_iter().zip(tx.input.iter().enumerate())
{
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">txout</span> {
- <span class="prelude-val">Some</span>(<span class="ident">txout</span>) => <span class="ident">txout</span>,
- <span class="prelude-val">None</span> => {
- <span class="comment">// skip coinbase inputs</span>
- <span class="macro">debug_assert!</span>(
- <span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">is_null</span>(),
- <span class="string">"prevout should only be missing for coinbase"</span>
- );
+ <span class="kw">let </span>txout = <span class="kw">match </span>txout {
+ <span class="prelude-val">Some</span>(txout) => txout,
+ <span class="prelude-val">None </span>=> {
+ <span class="comment">// skip coinbase inputs
+ </span><span class="macro">debug_assert!</span>(
+ input.previous_output.is_null(),
+ <span class="string">"prevout should only be missing for coinbase"
+ </span>);
<span class="kw">continue</span>;
}
};
- <span class="comment">// Verify this input if requested via feature flag</span>
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"verify"</span>)]</span>
- {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::verify::VerifyError</span>;
- <span class="kw">let</span> <span class="ident">serialized_tx</span> <span class="op">=</span> <span class="ident">bitcoin::consensus::serialize</span>(<span class="kw-2">&</span><span class="ident">tx</span>);
- <span class="ident">bitcoinconsensus::verify</span>(
- <span class="ident">txout</span>.<span class="ident">script_pubkey</span>.<span class="ident">to_bytes</span>().<span class="ident">as_ref</span>(),
- <span class="ident">txout</span>.<span class="ident">value</span>,
- <span class="kw-2">&</span><span class="ident">serialized_tx</span>,
- <span class="ident">_input_index</span>,
+ <span class="comment">// Verify this input if requested via feature flag
+ </span><span class="attr">#[cfg(feature = <span class="string">"verify"</span>)]
+ </span>{
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::verify::VerifyError;
+ <span class="kw">let </span>serialized_tx = bitcoin::consensus::serialize(<span class="kw-2">&</span>tx);
+ bitcoinconsensus::verify(
+ txout.script_pubkey.to_bytes().as_ref(),
+ txout.value,
+ <span class="kw-2">&</span>serialized_tx,
+ _input_index,
)
- .<span class="ident">map_err</span>(<span class="ident">VerifyError::from</span>)<span class="question-mark">?</span>;
+ .map_err(VerifyError::from)<span class="question-mark">?</span>;
}
- <span class="ident">inputs_sum</span> <span class="op">+</span><span class="op">=</span> <span class="ident">txout</span>.<span class="ident">value</span>;
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">db</span>.<span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="ident">txout</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span> {
- <span class="ident">sent</span> <span class="op">+</span><span class="op">=</span> <span class="ident">txout</span>.<span class="ident">value</span>;
+ inputs_sum += txout.value;
+ <span class="kw">if </span><span class="self">self</span>.state.db.is_mine(<span class="kw-2">&</span>txout.script_pubkey)<span class="question-mark">? </span>{
+ sent += txout.value;
}
}
- <span class="kw">for</span> <span class="ident">out</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">output</span> {
- <span class="ident">outputs_sum</span> <span class="op">+</span><span class="op">=</span> <span class="ident">out</span>.<span class="ident">value</span>;
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">db</span>.<span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="ident">out</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span> {
- <span class="ident">received</span> <span class="op">+</span><span class="op">=</span> <span class="ident">out</span>.<span class="ident">value</span>;
+ <span class="kw">for </span>out <span class="kw">in </span><span class="kw-2">&</span>tx.output {
+ outputs_sum += out.value;
+ <span class="kw">if </span><span class="self">self</span>.state.db.is_mine(<span class="kw-2">&</span>out.script_pubkey)<span class="question-mark">? </span>{
+ received += out.value;
}
}
- <span class="comment">// we need to saturating sub since we want coinbase txs to map to 0 fee and</span>
- <span class="comment">// this subtraction will be negative for coinbase txs.</span>
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">inputs_sum</span>.<span class="ident">saturating_sub</span>(<span class="ident">outputs_sum</span>);
- <span class="prelude-ty">Result</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span><span class="ident">::Ok</span>(<span class="ident">TransactionDetails</span> {
- <span class="ident">txid</span>: <span class="kw-2">*</span><span class="ident">txid</span>,
- <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>),
- <span class="ident">received</span>,
- <span class="ident">sent</span>,
- <span class="comment">// we're going to fill this in later</span>
- <span class="ident">confirmation_time</span>: <span class="prelude-val">None</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="ident">fee</span>),
+ <span class="comment">// we need to saturating sub since we want coinbase txs to map to 0 fee and
+ // this subtraction will be negative for coinbase txs.
+ </span><span class="kw">let </span>fee = inputs_sum.saturating_sub(outputs_sum);
+ <span class="prelude-ty">Result</span>::<<span class="kw">_</span>, Error>::Ok(TransactionDetails {
+ txid: <span class="kw-2">*</span>txid,
+ transaction: <span class="prelude-val">Some</span>(tx),
+ received,
+ sent,
+ <span class="comment">// we're going to fill this in later
+ </span>confirmation_time: <span class="prelude-val">None</span>,
+ fee: <span class="prelude-val">Some</span>(fee),
})
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
- <span class="kw">for</span> <span class="ident">tx_detail</span> <span class="kw">in</span> <span class="ident">tx_details</span> {
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_needed</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">tx_detail</span>.<span class="ident">txid</span>);
- <span class="self">self</span>.<span class="ident">state</span>
- .<span class="ident">tx_missing_conftime</span>
- .<span class="ident">insert</span>(<span class="ident">tx_detail</span>.<span class="ident">txid</span>, <span class="ident">tx_detail</span>);
+ <span class="kw">for </span>tx_detail <span class="kw">in </span>tx_details {
+ <span class="self">self</span>.state.tx_needed.remove(<span class="kw-2">&</span>tx_detail.txid);
+ <span class="self">self</span>.state
+ .tx_missing_conftime
+ .insert(tx_detail.txid, tx_detail);
}
- <span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_needed</span>.<span class="ident">is_empty</span>() {
- <span class="prelude-val">Ok</span>(<span class="ident">Request::Tx</span>(<span class="self">self</span>))
- } <span class="kw">else</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Request::Conftime</span>(<span class="ident">ConftimeReq</span> { <span class="ident">state</span>: <span class="self">self</span>.<span class="ident">state</span> }))
+ <span class="kw">if </span>!<span class="self">self</span>.state.tx_needed.is_empty() {
+ <span class="prelude-val">Ok</span>(Request::Tx(<span class="self">self</span>))
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Ok</span>(Request::Conftime(ConftimeReq { state: <span class="self">self</span>.state }))
}
}
}
-<span class="doccomment">/// Final step is to get confirmation times</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ConftimeReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="ident">state</span>: <span class="ident">State</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>,
+<span class="doccomment">/// Final step is to get confirmation times
+</span><span class="kw">pub struct </span>ConftimeReq<<span class="lifetime">'a</span>, D> {
+ state: State<<span class="lifetime">'a</span>, D>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> <span class="ident">ConftimeReq</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">request</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">Txid</span><span class="op">></span> <span class="op">+</span> <span class="ident">Clone</span> {
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_missing_conftime</span>.<span class="ident">keys</span>()
+<span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase> ConftimeReq<<span class="lifetime">'a</span>, D> {
+ <span class="kw">pub fn </span>request(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl </span>Iterator<Item = <span class="kw-2">&</span>Txid> + Clone {
+ <span class="self">self</span>.state.tx_missing_conftime.keys()
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">satisfy</span>(
- <span class="kw-2">mut</span> <span class="self">self</span>,
- <span class="ident">confirmation_times</span>: <span class="ident">Vec</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BlockTime</span><span class="op">></span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Request</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">conftime_needed</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">request</span>()
- .<span class="ident">cloned</span>()
- .<span class="ident">take</span>(<span class="ident">confirmation_times</span>.<span class="ident">len</span>())
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">for</span> (<span class="ident">confirmation_time</span>, <span class="ident">txid</span>) <span class="kw">in</span> <span class="ident">confirmation_times</span>.<span class="ident">into_iter</span>().<span class="ident">zip</span>(<span class="ident">conftime_needed</span>.<span class="ident">iter</span>())
+ <span class="kw">pub fn </span>satisfy(
+ <span class="kw-2">mut </span><span class="self">self</span>,
+ confirmation_times: Vec<<span class="prelude-ty">Option</span><BlockTime>>,
+ ) -> <span class="prelude-ty">Result</span><Request<<span class="lifetime">'a</span>, D>, Error> {
+ <span class="kw">let </span>conftime_needed = <span class="self">self
+ </span>.request()
+ .cloned()
+ .take(confirmation_times.len())
+ .collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">for </span>(confirmation_time, txid) <span class="kw">in </span>confirmation_times.into_iter().zip(conftime_needed.iter())
{
- <span class="macro">debug!</span>(<span class="string">"confirmation time for {} was {:?}"</span>, <span class="ident">txid</span>, <span class="ident">confirmation_time</span>);
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">mut</span> <span class="ident">tx_details</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_missing_conftime</span>.<span class="ident">remove</span>(<span class="ident">txid</span>) {
- <span class="ident">tx_details</span>.<span class="ident">confirmation_time</span> <span class="op">=</span> <span class="ident">confirmation_time</span>;
- <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">finished_txs</span>.<span class="ident">push</span>(<span class="ident">tx_details</span>);
+ <span class="macro">debug!</span>(<span class="string">"confirmation time for {} was {:?}"</span>, txid, confirmation_time);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">mut </span>tx_details) = <span class="self">self</span>.state.tx_missing_conftime.remove(txid) {
+ tx_details.confirmation_time = confirmation_time;
+ <span class="self">self</span>.state.finished_txs.push(tx_details);
}
}
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">state</span>.<span class="ident">tx_missing_conftime</span>.<span class="ident">is_empty</span>() {
- <span class="prelude-val">Ok</span>(<span class="ident">Request::Finish</span>(<span class="self">self</span>.<span class="ident">state</span>.<span class="ident">into_db_update</span>()<span class="question-mark">?</span>))
- } <span class="kw">else</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Request::Conftime</span>(<span class="self">self</span>))
+ <span class="kw">if </span><span class="self">self</span>.state.tx_missing_conftime.is_empty() {
+ <span class="prelude-val">Ok</span>(Request::Finish(<span class="self">self</span>.state.into_db_update()<span class="question-mark">?</span>))
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Ok</span>(Request::Conftime(<span class="self">self</span>))
}
}
}
-<span class="kw">struct</span> <span class="ident">State</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="ident">db</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">D</span>,
- <span class="ident">last_active_index</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">KeychainKind</span>, <span class="ident">usize</span><span class="op">></span>,
- <span class="doccomment">/// Transactions where we need to get the full details</span>
- <span class="ident">tx_needed</span>: <span class="ident">BTreeSet</span><span class="op"><</span><span class="ident">Txid</span><span class="op">></span>,
- <span class="doccomment">/// Transacitions that we know everything about</span>
- <span class="ident">finished_txs</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>,
- <span class="doccomment">/// Transactions that discovered conftimes should be inserted into</span>
- <span class="ident">tx_missing_conftime</span>: <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">Txid</span>, <span class="ident">TransactionDetails</span><span class="op">></span>,
- <span class="doccomment">/// The start of the sync</span>
- <span class="ident">start_time</span>: <span class="ident">Instant</span>,
- <span class="doccomment">/// Missing number of scripts to cache per keychain</span>
- <span class="ident">missing_script_counts</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">KeychainKind</span>, <span class="ident">usize</span><span class="op">></span>,
+<span class="kw">struct </span>State<<span class="lifetime">'a</span>, D> {
+ db: <span class="kw-2">&</span><span class="lifetime">'a </span>D,
+ last_active_index: HashMap<KeychainKind, usize>,
+ <span class="doccomment">/// Transactions where we need to get the full details
+ </span>tx_needed: BTreeSet<Txid>,
+ <span class="doccomment">/// Transacitions that we know everything about
+ </span>finished_txs: Vec<TransactionDetails>,
+ <span class="doccomment">/// Transactions that discovered conftimes should be inserted into
+ </span>tx_missing_conftime: BTreeMap<Txid, TransactionDetails>,
+ <span class="doccomment">/// The start of the sync
+ </span>start_time: Instant,
+ <span class="doccomment">/// Missing number of scripts to cache per keychain
+ </span>missing_script_counts: HashMap<KeychainKind, usize>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> <span class="ident">State</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">db</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">D</span>) -> <span class="self">Self</span> {
- <span class="ident">State</span> {
- <span class="ident">db</span>,
- <span class="ident">last_active_index</span>: <span class="ident">HashMap::default</span>(),
- <span class="ident">finished_txs</span>: <span class="macro">vec!</span>[],
- <span class="ident">tx_needed</span>: <span class="ident">BTreeSet::default</span>(),
- <span class="ident">tx_missing_conftime</span>: <span class="ident">BTreeMap::default</span>(),
- <span class="ident">start_time</span>: <span class="ident">Instant::new</span>(),
- <span class="ident">missing_script_counts</span>: <span class="ident">HashMap::default</span>(),
+<span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase> State<<span class="lifetime">'a</span>, D> {
+ <span class="kw">fn </span>new(db: <span class="kw-2">&</span><span class="lifetime">'a </span>D) -> <span class="self">Self </span>{
+ State {
+ db,
+ last_active_index: HashMap::default(),
+ finished_txs: <span class="macro">vec!</span>[],
+ tx_needed: BTreeSet::default(),
+ tx_missing_conftime: BTreeMap::default(),
+ start_time: Instant::new(),
+ missing_script_counts: HashMap::default(),
}
}
- <span class="kw">fn</span> <span class="ident">into_db_update</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">D::Batch</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">debug_assert!</span>(<span class="self">self</span>.<span class="ident">tx_needed</span>.<span class="ident">is_empty</span>() <span class="op">&&</span> <span class="self">self</span>.<span class="ident">tx_missing_conftime</span>.<span class="ident">is_empty</span>());
- <span class="kw">let</span> <span class="ident">existing_txs</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">iter_txs</span>(<span class="bool-val">false</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">existing_txids</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Txid</span><span class="op">></span> <span class="op">=</span> <span class="ident">existing_txs</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="ident">tx</span>.<span class="ident">txid</span>).<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="ident">finished_txs</span> <span class="op">=</span> <span class="ident">make_txs_consistent</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">finished_txs</span>);
- <span class="kw">let</span> <span class="ident">observed_txids</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Txid</span><span class="op">></span> <span class="op">=</span> <span class="ident">finished_txs</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="ident">tx</span>.<span class="ident">txid</span>).<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="ident">txids_to_delete</span> <span class="op">=</span> <span class="ident">existing_txids</span>.<span class="ident">difference</span>(<span class="kw-2">&</span><span class="ident">observed_txids</span>);
-
- <span class="comment">// Ensure `last_active_index` does not decrement database's current state.</span>
- <span class="kw">let</span> <span class="ident">index_updates</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">last_active_index</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">keychain</span>, <span class="ident">sync_index</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">sync_index</span> <span class="op">=</span> <span class="kw-2">*</span><span class="ident">sync_index</span> <span class="kw">as</span> <span class="ident">u32</span>;
- <span class="kw">let</span> <span class="ident">index_res</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="kw-2">*</span><span class="ident">keychain</span>) {
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">db_index</span>)) => <span class="prelude-val">Ok</span>(<span class="ident">std::cmp::max</span>(<span class="ident">db_index</span>, <span class="ident">sync_index</span>)),
- <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="ident">sync_index</span>),
- <span class="prelude-val">Err</span>(<span class="ident">err</span>) => <span class="prelude-val">Err</span>(<span class="ident">err</span>),
+ <span class="kw">fn </span>into_db_update(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><D::Batch, Error> {
+ <span class="macro">debug_assert!</span>(<span class="self">self</span>.tx_needed.is_empty() && <span class="self">self</span>.tx_missing_conftime.is_empty());
+ <span class="kw">let </span>existing_txs = <span class="self">self</span>.db.iter_txs(<span class="bool-val">false</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>existing_txids: HashSet<Txid> = existing_txs.iter().map(|tx| tx.txid).collect();
+ <span class="kw">let </span>finished_txs = make_txs_consistent(<span class="kw-2">&</span><span class="self">self</span>.finished_txs);
+ <span class="kw">let </span>observed_txids: HashSet<Txid> = finished_txs.iter().map(|tx| tx.txid).collect();
+ <span class="kw">let </span>txids_to_delete = existing_txids.difference(<span class="kw-2">&</span>observed_txids);
+
+ <span class="comment">// Ensure `last_active_index` does not decrement database's current state.
+ </span><span class="kw">let </span>index_updates = <span class="self">self
+ </span>.last_active_index
+ .iter()
+ .map(|(keychain, sync_index)| {
+ <span class="kw">let </span>sync_index = <span class="kw-2">*</span>sync_index <span class="kw">as </span>u32;
+ <span class="kw">let </span>index_res = <span class="kw">match </span><span class="self">self</span>.db.get_last_index(<span class="kw-2">*</span>keychain) {
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(db_index)) => <span class="prelude-val">Ok</span>(std::cmp::max(db_index, sync_index)),
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(sync_index),
+ <span class="prelude-val">Err</span>(err) => <span class="prelude-val">Err</span>(err),
};
- <span class="ident">index_res</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">index</span><span class="op">|</span> (<span class="kw-2">*</span><span class="ident">keychain</span>, <span class="ident">index</span>))
+ index_res.map(|index| (<span class="kw-2">*</span>keychain, index))
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">begin_batch</span>();
-
- <span class="comment">// Delete old txs that no longer exist</span>
- <span class="kw">for</span> <span class="ident">txid</span> <span class="kw">in</span> <span class="ident">txids_to_delete</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">raw_tx</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">raw_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>() {
- <span class="comment">// Also delete any utxos from the txs that no longer exist.</span>
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">batch</span>.<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="kw-2">*</span><span class="ident">txid</span>,
- <span class="ident">vout</span>: <span class="ident">i</span> <span class="kw">as</span> <span class="ident">u32</span>,
+ .collect::<<span class="prelude-ty">Result</span><Vec<(KeychainKind, u32)>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = <span class="self">self</span>.db.begin_batch();
+
+ <span class="comment">// Delete old txs that no longer exist
+ </span><span class="kw">for </span>txid <span class="kw">in </span>txids_to_delete {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(raw_tx) = <span class="self">self</span>.db.get_raw_tx(txid)<span class="question-mark">? </span>{
+ <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..raw_tx.output.len() {
+ <span class="comment">// Also delete any utxos from the txs that no longer exist.
+ </span><span class="kw">let _ </span>= batch.del_utxo(<span class="kw-2">&</span>OutPoint {
+ txid: <span class="kw-2">*</span>txid,
+ vout: i <span class="kw">as </span>u32,
})<span class="question-mark">?</span>;
}
- } <span class="kw">else</span> {
+ } <span class="kw">else </span>{
<span class="macro">unreachable!</span>(<span class="string">"we should always have the raw tx"</span>);
}
- <span class="ident">batch</span>.<span class="ident">del_tx</span>(<span class="ident">txid</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+ batch.del_tx(txid, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">spent_utxos</span> <span class="op">=</span> <span class="ident">HashSet::new</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>spent_utxos = HashSet::new();
- <span class="comment">// track all the spent utxos</span>
- <span class="kw">for</span> <span class="ident">finished_tx</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">finished_txs</span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">finished_tx</span>
- .<span class="ident">transaction</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">expect</span>(<span class="string">"transaction will always be present here"</span>);
- <span class="kw">for</span> <span class="ident">input</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">spent_utxos</span>.<span class="ident">insert</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>);
+ <span class="comment">// track all the spent utxos
+ </span><span class="kw">for </span>finished_tx <span class="kw">in </span><span class="kw-2">&</span>finished_txs {
+ <span class="kw">let </span>tx = finished_tx
+ .transaction
+ .as_ref()
+ .expect(<span class="string">"transaction will always be present here"</span>);
+ <span class="kw">for </span>input <span class="kw">in </span><span class="kw-2">&</span>tx.input {
+ spent_utxos.insert(<span class="kw-2">&</span>input.previous_output);
}
}
- <span class="comment">// set every utxo we observed, unless it's already spent</span>
- <span class="comment">// we don't do this in the loop above as we want to know all the spent outputs before</span>
- <span class="comment">// adding the non-spent to the batch in case there are new tranasactions</span>
- <span class="comment">// that spend form each other.</span>
- <span class="kw">for</span> <span class="ident">finished_tx</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">finished_txs</span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">finished_tx</span>
- .<span class="ident">transaction</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">expect</span>(<span class="string">"transaction will always be present here"</span>);
- <span class="kw">for</span> (<span class="ident">i</span>, <span class="ident">output</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="kw">_</span>)) <span class="op">=</span>
- <span class="self">self</span>.<span class="ident">db</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">output</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
- <span class="comment">// add utxos we own from the new transactions we've seen.</span>
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">finished_tx</span>.<span class="ident">txid</span>,
- <span class="ident">vout</span>: <span class="ident">i</span> <span class="kw">as</span> <span class="ident">u32</span>,
+ <span class="comment">// set every utxo we observed, unless it's already spent
+ // we don't do this in the loop above as we want to know all the spent outputs before
+ // adding the non-spent to the batch in case there are new tranasactions
+ // that spend form each other.
+ </span><span class="kw">for </span>finished_tx <span class="kw">in </span><span class="kw-2">&</span>finished_txs {
+ <span class="kw">let </span>tx = finished_tx
+ .transaction
+ .as_ref()
+ .expect(<span class="string">"transaction will always be present here"</span>);
+ <span class="kw">for </span>(i, output) <span class="kw">in </span>tx.output.iter().enumerate() {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>((keychain, <span class="kw">_</span>)) =
+ <span class="self">self</span>.db.get_path_from_script_pubkey(<span class="kw-2">&</span>output.script_pubkey)<span class="question-mark">?
+ </span>{
+ <span class="comment">// add utxos we own from the new transactions we've seen.
+ </span><span class="kw">let </span>outpoint = OutPoint {
+ txid: finished_tx.txid,
+ vout: i <span class="kw">as </span>u32,
};
- <span class="ident">batch</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>,
- <span class="ident">txout</span>: <span class="ident">output</span>.<span class="ident">clone</span>(),
- <span class="ident">keychain</span>,
- <span class="comment">// Is this UTXO in the spent_utxos set?</span>
- <span class="ident">is_spent</span>: <span class="ident">spent_utxos</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>).<span class="ident">is_some</span>(),
+ batch.set_utxo(<span class="kw-2">&</span>LocalUtxo {
+ outpoint,
+ txout: output.clone(),
+ keychain,
+ <span class="comment">// Is this UTXO in the spent_utxos set?
+ </span>is_spent: spent_utxos.get(<span class="kw-2">&</span>outpoint).is_some(),
})<span class="question-mark">?</span>;
}
}
- <span class="ident">batch</span>.<span class="ident">set_tx</span>(<span class="ident">finished_tx</span>)<span class="question-mark">?</span>;
+ batch.set_tx(finished_tx)<span class="question-mark">?</span>;
}
- <span class="comment">// apply index updates</span>
- <span class="kw">for</span> (<span class="ident">keychain</span>, <span class="ident">new_index</span>) <span class="kw">in</span> <span class="ident">index_updates</span> {
- <span class="macro">debug!</span>(<span class="string">"updating index ({}, {})"</span>, <span class="ident">keychain</span>.<span class="ident">as_byte</span>(), <span class="ident">new_index</span>);
- <span class="ident">batch</span>.<span class="ident">set_last_index</span>(<span class="ident">keychain</span>, <span class="ident">new_index</span>)<span class="question-mark">?</span>;
+ <span class="comment">// apply index updates
+ </span><span class="kw">for </span>(keychain, new_index) <span class="kw">in </span>index_updates {
+ <span class="macro">debug!</span>(<span class="string">"updating index ({}, {})"</span>, keychain.as_byte(), new_index);
+ batch.set_last_index(keychain, new_index)<span class="question-mark">?</span>;
}
<span class="macro">info!</span>(
<span class="string">"finished setup, elapsed {:?}ms"</span>,
- <span class="self">self</span>.<span class="ident">start_time</span>.<span class="ident">elapsed</span>().<span class="ident">as_millis</span>()
+ <span class="self">self</span>.start_time.elapsed().as_millis()
);
- <span class="prelude-val">Ok</span>(<span class="ident">batch</span>)
+ <span class="prelude-val">Ok</span>(batch)
}
}
-<span class="doccomment">/// Remove conflicting transactions -- tie breaking them by fee.</span>
-<span class="kw">fn</span> <span class="ident">make_txs_consistent</span>(<span class="ident">txs</span>: <span class="kw-2">&</span>[<span class="ident">TransactionDetails</span>]) -> <span class="ident">Vec</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">TransactionDetails</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">utxo_index</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">OutPoint</span>, <span class="kw-2">&</span><span class="ident">TransactionDetails</span><span class="op">></span> <span class="op">=</span> <span class="ident">HashMap::default</span>();
- <span class="kw">for</span> <span class="ident">tx</span> <span class="kw">in</span> <span class="ident">txs</span> {
- <span class="kw">for</span> <span class="ident">input</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">transaction</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>().<span class="ident">input</span> {
- <span class="ident">utxo_index</span>
- .<span class="ident">entry</span>(<span class="ident">input</span>.<span class="ident">previous_output</span>)
- .<span class="ident">and_modify</span>(<span class="op">|</span><span class="ident">existing</span><span class="op">|</span> <span class="kw">match</span> (<span class="ident">tx</span>.<span class="ident">fee</span>, <span class="ident">existing</span>.<span class="ident">fee</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">fee</span>), <span class="prelude-val">Some</span>(<span class="ident">existing_fee</span>)) <span class="kw">if</span> <span class="ident">fee</span> <span class="op">></span> <span class="ident">existing_fee</span> => <span class="kw-2">*</span><span class="ident">existing</span> <span class="op">=</span> <span class="ident">tx</span>,
- (<span class="prelude-val">Some</span>(<span class="kw">_</span>), <span class="prelude-val">None</span>) => <span class="kw-2">*</span><span class="ident">existing</span> <span class="op">=</span> <span class="ident">tx</span>,
- <span class="kw">_</span> => { <span class="comment">/* leave it the same */</span> }
+<span class="doccomment">/// Remove conflicting transactions -- tie breaking them by fee.
+</span><span class="kw">fn </span>make_txs_consistent(txs: <span class="kw-2">&</span>[TransactionDetails]) -> Vec<<span class="kw-2">&</span>TransactionDetails> {
+ <span class="kw">let </span><span class="kw-2">mut </span>utxo_index: HashMap<OutPoint, <span class="kw-2">&</span>TransactionDetails> = HashMap::default();
+ <span class="kw">for </span>tx <span class="kw">in </span>txs {
+ <span class="kw">for </span>input <span class="kw">in </span><span class="kw-2">&</span>tx.transaction.as_ref().unwrap().input {
+ utxo_index
+ .entry(input.previous_output)
+ .and_modify(|existing| <span class="kw">match </span>(tx.fee, existing.fee) {
+ (<span class="prelude-val">Some</span>(fee), <span class="prelude-val">Some</span>(existing_fee)) <span class="kw">if </span>fee > existing_fee => <span class="kw-2">*</span>existing = tx,
+ (<span class="prelude-val">Some</span>(<span class="kw">_</span>), <span class="prelude-val">None</span>) => <span class="kw-2">*</span>existing = tx,
+ <span class="kw">_ </span>=> { <span class="comment">/* leave it the same */ </span>}
})
- .<span class="ident">or_insert</span>(<span class="ident">tx</span>);
+ .or_insert(tx);
}
}
- <span class="ident">utxo_index</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">tx</span>)<span class="op">|</span> (<span class="ident">tx</span>.<span class="ident">txid</span>, <span class="ident">tx</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">HashMap</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">tx</span>)<span class="op">|</span> <span class="ident">tx</span>)
- .<span class="ident">collect</span>()
+ utxo_index
+ .into_iter()
+ .map(|(<span class="kw">_</span>, tx)| (tx.txid, tx))
+ .collect::<HashMap<<span class="kw">_</span>, <span class="kw">_</span>>>()
+ .into_iter()
+ .map(|(<span class="kw">_</span>, tx)| tx)
+ .collect()
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/any.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>any.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/any.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>any.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Runtime-checked database types</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides the implementation of [`AnyDatabase`] which allows switching the</span>
-<span class="doccomment">//! inner [`Database`] type at runtime.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! In this example, `wallet_memory` and `wallet_sled` have the same type of `Wallet<(), AnyDatabase>`.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bitcoin::Network;</span>
-<span class="doccomment">//! # use bdk::database::{AnyDatabase, MemoryDatabase};</span>
-<span class="doccomment">//! # use bdk::{Wallet};</span>
-<span class="doccomment">//! let memory = MemoryDatabase::default();</span>
-<span class="doccomment">//! let wallet_memory = Wallet::new("...", None, Network::Testnet, memory)?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # #[cfg(feature = "key-value-db")]</span>
-<span class="doccomment">//! # {</span>
-<span class="doccomment">//! let sled = sled::open("my-database")?.open_tree("default_tree")?;</span>
-<span class="doccomment">//! let wallet_sled = Wallet::new("...", None, Network::Testnet, sled)?;</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! When paired with the use of [`ConfigurableDatabase`], it allows creating wallets with any</span>
-<span class="doccomment">//! database supported using a single line of code:</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bitcoin::Network;</span>
-<span class="doccomment">//! # use bdk::database::*;</span>
-<span class="doccomment">//! # use bdk::{Wallet};</span>
-<span class="doccomment">//! let config = serde_json::from_str("...")?;</span>
-<span class="doccomment">//! let database = AnyDatabase::from_config(&config)?;</span>
-<span class="doccomment">//! let wallet = Wallet::new("...", None, Network::Testnet, database)?;</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
+</span><span class="doccomment">//! Runtime-checked database types
+//!
+//! This module provides the implementation of [`AnyDatabase`] which allows switching the
+//! inner [`Database`] type at runtime.
+//!
+//! ## Example
+//!
+//! In this example, `wallet_memory` and `wallet_sled` have the same type of `Wallet<(), AnyDatabase>`.
+//!
+//! ```no_run
+//! # use bitcoin::Network;
+//! # use bdk::database::{AnyDatabase, MemoryDatabase};
+//! # use bdk::{Wallet};
+//! let memory = MemoryDatabase::default();
+//! let wallet_memory = Wallet::new("...", None, Network::Testnet, memory)?;
+//!
+//! # #[cfg(feature = "key-value-db")]
+//! # {
+//! let sled = sled::open("my-database")?.open_tree("default_tree")?;
+//! let wallet_sled = Wallet::new("...", None, Network::Testnet, sled)?;
+//! # }
+//! # Ok::<(), bdk::Error>(())
+//! ```
+//!
+//! When paired with the use of [`ConfigurableDatabase`], it allows creating wallets with any
+//! database supported using a single line of code:
+//!
+//! ```no_run
+//! # use bitcoin::Network;
+//! # use bdk::database::*;
+//! # use bdk::{Wallet};
+//! let config = serde_json::from_str("...")?;
+//! let database = AnyDatabase::from_config(&config)?;
+//! let wallet = Wallet::new("...", None, Network::Testnet, database)?;
+//! # Ok::<(), bdk::Error>(())
+//! ```
-<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
-<span class="macro">macro_rules!</span> <span class="ident">impl_from</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">variant</span>:<span class="ident">ident</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">cfg</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {
- $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">cfg</span> )<span class="op">*</span>
- <span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span><span class="op">></span> <span class="kw">for</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">inner</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>) -> <span class="self">Self</span> {
- <span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">variant</span>(<span class="ident">inner</span>)
+<span class="macro">macro_rules! </span>impl_from {
+ ( <span class="macro-nonterminal">$from</span>:ty, <span class="macro-nonterminal">$to</span>:ty, <span class="macro-nonterminal">$variant</span>:ident, $( <span class="macro-nonterminal">$cfg</span>:tt )* ) => {
+ $( <span class="macro-nonterminal">$cfg </span>)*
+ <span class="kw">impl </span>From<<span class="macro-nonterminal">$from</span>> <span class="kw">for </span><span class="macro-nonterminal">$to </span>{
+ <span class="kw">fn </span>from(inner: <span class="macro-nonterminal">$from</span>) -> <span class="self">Self </span>{
+ <<span class="macro-nonterminal">$to</span>>::<span class="macro-nonterminal">$variant</span>(inner)
}
}
};
}
-<span class="macro">macro_rules!</span> <span class="ident">impl_inner_method</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">self</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>:<span class="ident">expr</span>)<span class="op">*</span> ) => {
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">deprecated</span>)]</span>
- <span class="kw">match</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">self</span> {
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name::Memory</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name::Sled</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">enum_name::Sqlite</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>, )<span class="op">*</span> ),
+<span class="macro">macro_rules! </span>impl_inner_method {
+ ( <span class="macro-nonterminal">$enum_name</span>:ident, <span class="macro-nonterminal">$self</span>:expr, <span class="macro-nonterminal">$name</span>:ident $(, <span class="macro-nonterminal">$args</span>:expr)* ) => {
+ <span class="attr">#[allow(deprecated)]
+ </span><span class="kw">match </span><span class="macro-nonterminal">$self </span>{
+ <span class="macro-nonterminal">$enum_name::Memory</span>(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ </span><span class="macro-nonterminal">$enum_name::Sled</span>(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ </span><span class="macro-nonterminal">$enum_name::Sqlite</span>(inner) => inner.<span class="macro-nonterminal">$name</span>( $(<span class="macro-nonterminal">$args</span>, )* ),
}
}
}
-<span class="doccomment">/// Type that can contain any of the [`Database`] types defined by the library</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// It allows switching database type at runtime.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [this module](crate::database::any)'s documentation for a usage example.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">AnyDatabase</span> {
- <span class="doccomment">/// In-memory ephemeral database</span>
- <span class="ident">Memory</span>(<span class="ident">memory::MemoryDatabase</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)))]</span>
- <span class="doccomment">/// Simple key-value embedded database based on [`sled`]</span>
- <span class="ident">Sled</span>(<span class="ident">sled::Tree</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)))]</span>
- <span class="doccomment">/// Sqlite embedded database using [`rusqlite`]</span>
- <span class="ident">Sqlite</span>(<span class="ident">sqlite::SqliteDatabase</span>),
+<span class="doccomment">/// Type that can contain any of the [`Database`] types defined by the library
+///
+/// It allows switching database type at runtime.
+///
+/// See [this module](crate::database::any)'s documentation for a usage example.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>AnyDatabase {
+ <span class="doccomment">/// In-memory ephemeral database
+ </span>Memory(memory::MemoryDatabase),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"key-value-db"</span>)))]
+ </span><span class="doccomment">/// Simple key-value embedded database based on [`sled`]
+ </span>Sled(sled::Tree),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"sqlite"</span>)))]
+ </span><span class="doccomment">/// Sqlite embedded database using [`rusqlite`]
+ </span>Sqlite(sqlite::SqliteDatabase),
}
-<span class="macro">impl_from!</span>(<span class="ident">memory::MemoryDatabase</span>, <span class="ident">AnyDatabase</span>, <span class="ident">Memory</span>,);
-<span class="macro">impl_from!</span>(<span class="ident">sled::Tree</span>, <span class="ident">AnyDatabase</span>, <span class="ident">Sled</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">sqlite::SqliteDatabase</span>, <span class="ident">AnyDatabase</span>, <span class="ident">Sqlite</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>);
+<span class="macro">impl_from!</span>(memory::MemoryDatabase, AnyDatabase, Memory,);
+<span class="macro">impl_from!</span>(sled::Tree, AnyDatabase, Sled, <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]</span>);
+<span class="macro">impl_from!</span>(sqlite::SqliteDatabase, AnyDatabase, Sqlite, <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]</span>);
-<span class="doccomment">/// Type that contains any of the [`BatchDatabase::Batch`] types defined by the library</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">AnyBatch</span> {
- <span class="doccomment">/// In-memory ephemeral database</span>
- <span class="ident">Memory</span>(<span class="op"><</span><span class="ident">memory::MemoryDatabase</span> <span class="kw">as</span> <span class="ident">BatchDatabase</span><span class="op">></span><span class="ident">::Batch</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)))]</span>
- <span class="doccomment">/// Simple key-value embedded database based on [`sled`]</span>
- <span class="ident">Sled</span>(<span class="op"><</span><span class="ident">sled::Tree</span> <span class="kw">as</span> <span class="ident">BatchDatabase</span><span class="op">></span><span class="ident">::Batch</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)))]</span>
- <span class="doccomment">/// Sqlite embedded database using [`rusqlite`]</span>
- <span class="ident">Sqlite</span>(<span class="op"><</span><span class="ident">sqlite::SqliteDatabase</span> <span class="kw">as</span> <span class="ident">BatchDatabase</span><span class="op">></span><span class="ident">::Batch</span>),
+<span class="doccomment">/// Type that contains any of the [`BatchDatabase::Batch`] types defined by the library
+</span><span class="kw">pub enum </span>AnyBatch {
+ <span class="doccomment">/// In-memory ephemeral database
+ </span>Memory(<memory::MemoryDatabase <span class="kw">as </span>BatchDatabase>::Batch),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"key-value-db"</span>)))]
+ </span><span class="doccomment">/// Simple key-value embedded database based on [`sled`]
+ </span>Sled(<sled::Tree <span class="kw">as </span>BatchDatabase>::Batch),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"sqlite"</span>)))]
+ </span><span class="doccomment">/// Sqlite embedded database using [`rusqlite`]
+ </span>Sqlite(<sqlite::SqliteDatabase <span class="kw">as </span>BatchDatabase>::Batch),
}
<span class="macro">impl_from!</span>(
- <span class="op"><</span><span class="ident">memory::MemoryDatabase</span> <span class="kw">as</span> <span class="ident">BatchDatabase</span><span class="op">></span><span class="ident">::Batch</span>,
- <span class="ident">AnyBatch</span>,
- <span class="ident">Memory</span>,
+ <memory::MemoryDatabase <span class="kw">as </span>BatchDatabase>::Batch,
+ AnyBatch,
+ Memory,
);
-<span class="macro">impl_from!</span>(<span class="op"><</span><span class="ident">sled::Tree</span> <span class="kw">as</span> <span class="ident">BatchDatabase</span><span class="op">></span><span class="ident">::Batch</span>, <span class="ident">AnyBatch</span>, <span class="ident">Sled</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="op"><</span><span class="ident">sqlite::SqliteDatabase</span> <span class="kw">as</span> <span class="ident">BatchDatabase</span><span class="op">></span><span class="ident">::Batch</span>, <span class="ident">AnyBatch</span>, <span class="ident">Sqlite</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>);
+<span class="macro">impl_from!</span>(<sled::Tree <span class="kw">as </span>BatchDatabase>::Batch, AnyBatch, Sled, <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]</span>);
+<span class="macro">impl_from!</span>(<sqlite::SqliteDatabase <span class="kw">as </span>BatchDatabase>::Batch, AnyBatch, Sqlite, <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]</span>);
-<span class="kw">impl</span> <span class="ident">BatchOperations</span> <span class="kw">for</span> <span class="ident">AnyDatabase</span> {
- <span class="kw">fn</span> <span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+<span class="kw">impl </span>BatchOperations <span class="kw">for </span>AnyDatabase {
+ <span class="kw">fn </span>set_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="macro">impl_inner_method!</span>(
- <span class="ident">AnyDatabase</span>,
+ AnyDatabase,
<span class="self">self</span>,
- <span class="ident">set_script_pubkey</span>,
- <span class="ident">script</span>,
- <span class="ident">keychain</span>,
- <span class="ident">child</span>
+ set_script_pubkey,
+ script,
+ keychain,
+ child
)
}
- <span class="kw">fn</span> <span class="ident">set_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">set_utxo</span>, <span class="ident">utxo</span>)
+ <span class="kw">fn </span>set_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, set_utxo, utxo)
}
- <span class="kw">fn</span> <span class="ident">set_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">set_raw_tx</span>, <span class="ident">transaction</span>)
+ <span class="kw">fn </span>set_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, set_raw_tx, transaction)
}
- <span class="kw">fn</span> <span class="ident">set_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">set_tx</span>, <span class="ident">transaction</span>)
+ <span class="kw">fn </span>set_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, set_tx, transaction)
}
- <span class="kw">fn</span> <span class="ident">set_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">set_last_index</span>, <span class="ident">keychain</span>, <span class="ident">value</span>)
+ <span class="kw">fn </span>set_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, value: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, set_last_index, keychain, value)
}
- <span class="kw">fn</span> <span class="ident">set_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">sync_time</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">set_sync_time</span>, <span class="ident">sync_time</span>)
+ <span class="kw">fn </span>set_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>, sync_time: SyncTime) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, set_sync_time, sync_time)
}
- <span class="kw">fn</span> <span class="ident">del_script_pubkey_from_path</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
+ <span class="kw">fn </span>del_script_pubkey_from_path(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
<span class="macro">impl_inner_method!</span>(
- <span class="ident">AnyDatabase</span>,
+ AnyDatabase,
<span class="self">self</span>,
- <span class="ident">del_script_pubkey_from_path</span>,
- <span class="ident">keychain</span>,
- <span class="ident">child</span>
+ del_script_pubkey_from_path,
+ keychain,
+ child
)
}
- <span class="kw">fn</span> <span class="ident">del_path_from_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">del_path_from_script_pubkey</span>, <span class="ident">script</span>)
+ <span class="kw">fn </span>del_path_from_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, del_path_from_script_pubkey, script)
}
- <span class="kw">fn</span> <span class="ident">del_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">del_utxo</span>, <span class="ident">outpoint</span>)
+ <span class="kw">fn </span>del_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, del_utxo, outpoint)
}
- <span class="kw">fn</span> <span class="ident">del_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">del_raw_tx</span>, <span class="ident">txid</span>)
+ <span class="kw">fn </span>del_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, del_raw_tx, txid)
}
- <span class="kw">fn</span> <span class="ident">del_tx</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>,
- <span class="ident">include_raw</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">del_tx</span>, <span class="ident">txid</span>, <span class="ident">include_raw</span>)
+ <span class="kw">fn </span>del_tx(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ txid: <span class="kw-2">&</span>Txid,
+ include_raw: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, del_tx, txid, include_raw)
}
- <span class="kw">fn</span> <span class="ident">del_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">del_last_index</span>, <span class="ident">keychain</span>)
+ <span class="kw">fn </span>del_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, del_last_index, keychain)
}
- <span class="kw">fn</span> <span class="ident">del_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">del_sync_time</span>)
+ <span class="kw">fn </span>del_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, del_sync_time)
}
}
-<span class="kw">impl</span> <span class="ident">Database</span> <span class="kw">for</span> <span class="ident">AnyDatabase</span> {
- <span class="kw">fn</span> <span class="ident">check_descriptor_checksum</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">AsRef</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span><span class="op">></span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">bytes</span>: <span class="ident">B</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+<span class="kw">impl </span>Database <span class="kw">for </span>AnyDatabase {
+ <span class="kw">fn </span>check_descriptor_checksum<B: AsRef<[u8]>>(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ bytes: B,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="macro">impl_inner_method!</span>(
- <span class="ident">AnyDatabase</span>,
+ AnyDatabase,
<span class="self">self</span>,
- <span class="ident">check_descriptor_checksum</span>,
- <span class="ident">keychain</span>,
- <span class="ident">bytes</span>
+ check_descriptor_checksum,
+ keychain,
+ bytes
)
}
- <span class="kw">fn</span> <span class="ident">iter_script_pubkeys</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">iter_script_pubkeys</span>, <span class="ident">keychain</span>)
+ <span class="kw">fn </span>iter_script_pubkeys(<span class="kw-2">&</span><span class="self">self</span>, keychain: <span class="prelude-ty">Option</span><KeychainKind>) -> <span class="prelude-ty">Result</span><Vec<Script>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, iter_script_pubkeys, keychain)
}
- <span class="kw">fn</span> <span class="ident">iter_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">iter_utxos</span>)
+ <span class="kw">fn </span>iter_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, iter_utxos)
}
- <span class="kw">fn</span> <span class="ident">iter_raw_txs</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">iter_raw_txs</span>)
+ <span class="kw">fn </span>iter_raw_txs(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Transaction>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, iter_raw_txs)
}
- <span class="kw">fn</span> <span class="ident">iter_txs</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">iter_txs</span>, <span class="ident">include_raw</span>)
+ <span class="kw">fn </span>iter_txs(<span class="kw-2">&</span><span class="self">self</span>, include_raw: bool) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, iter_txs, include_raw)
}
- <span class="kw">fn</span> <span class="ident">get_script_pubkey_from_path</span>(
+ <span class="kw">fn </span>get_script_pubkey_from_path(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
<span class="macro">impl_inner_method!</span>(
- <span class="ident">AnyDatabase</span>,
+ AnyDatabase,
<span class="self">self</span>,
- <span class="ident">get_script_pubkey_from_path</span>,
- <span class="ident">keychain</span>,
- <span class="ident">child</span>
+ get_script_pubkey_from_path,
+ keychain,
+ child
)
}
- <span class="kw">fn</span> <span class="ident">get_path_from_script_pubkey</span>(
+ <span class="kw">fn </span>get_path_from_script_pubkey(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">get_path_from_script_pubkey</span>, <span class="ident">script</span>)
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, get_path_from_script_pubkey, script)
}
- <span class="kw">fn</span> <span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">get_utxo</span>, <span class="ident">outpoint</span>)
+ <span class="kw">fn </span>get_utxo(<span class="kw-2">&</span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, get_utxo, outpoint)
}
- <span class="kw">fn</span> <span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">get_raw_tx</span>, <span class="ident">txid</span>)
+ <span class="kw">fn </span>get_raw_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, get_raw_tx, txid)
}
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">get_tx</span>, <span class="ident">txid</span>, <span class="ident">include_raw</span>)
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, include_raw: bool) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, get_tx, txid, include_raw)
}
- <span class="kw">fn</span> <span class="ident">get_last_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">get_last_index</span>, <span class="ident">keychain</span>)
+ <span class="kw">fn </span>get_last_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, get_last_index, keychain)
}
- <span class="kw">fn</span> <span class="ident">get_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">get_sync_time</span>)
+ <span class="kw">fn </span>get_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, get_sync_time)
}
- <span class="kw">fn</span> <span class="ident">increment_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyDatabase</span>, <span class="self">self</span>, <span class="ident">increment_last_index</span>, <span class="ident">keychain</span>)
+ <span class="kw">fn </span>increment_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyDatabase, <span class="self">self</span>, increment_last_index, keychain)
}
}
-<span class="kw">impl</span> <span class="ident">BatchOperations</span> <span class="kw">for</span> <span class="ident">AnyBatch</span> {
- <span class="kw">fn</span> <span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">set_script_pubkey</span>, <span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">child</span>)
+<span class="kw">impl </span>BatchOperations <span class="kw">for </span>AnyBatch {
+ <span class="kw">fn </span>set_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, set_script_pubkey, script, keychain, child)
}
- <span class="kw">fn</span> <span class="ident">set_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">set_utxo</span>, <span class="ident">utxo</span>)
+ <span class="kw">fn </span>set_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, set_utxo, utxo)
}
- <span class="kw">fn</span> <span class="ident">set_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">set_raw_tx</span>, <span class="ident">transaction</span>)
+ <span class="kw">fn </span>set_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, set_raw_tx, transaction)
}
- <span class="kw">fn</span> <span class="ident">set_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">set_tx</span>, <span class="ident">transaction</span>)
+ <span class="kw">fn </span>set_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, set_tx, transaction)
}
- <span class="kw">fn</span> <span class="ident">set_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">set_last_index</span>, <span class="ident">keychain</span>, <span class="ident">value</span>)
+ <span class="kw">fn </span>set_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, value: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, set_last_index, keychain, value)
}
- <span class="kw">fn</span> <span class="ident">set_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">sync_time</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">set_sync_time</span>, <span class="ident">sync_time</span>)
+ <span class="kw">fn </span>set_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>, sync_time: SyncTime) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, set_sync_time, sync_time)
}
- <span class="kw">fn</span> <span class="ident">del_script_pubkey_from_path</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_script_pubkey_from_path</span>, <span class="ident">keychain</span>, <span class="ident">child</span>)
- }
- <span class="kw">fn</span> <span class="ident">del_path_from_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_path_from_script_pubkey</span>, <span class="ident">script</span>)
- }
- <span class="kw">fn</span> <span class="ident">del_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_utxo</span>, <span class="ident">outpoint</span>)
- }
- <span class="kw">fn</span> <span class="ident">del_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_raw_tx</span>, <span class="ident">txid</span>)
- }
- <span class="kw">fn</span> <span class="ident">del_tx</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>,
- <span class="ident">include_raw</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_tx</span>, <span class="ident">txid</span>, <span class="ident">include_raw</span>)
- }
- <span class="kw">fn</span> <span class="ident">del_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_last_index</span>, <span class="ident">keychain</span>)
- }
- <span class="kw">fn</span> <span class="ident">del_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="macro">impl_inner_method!</span>(<span class="ident">AnyBatch</span>, <span class="self">self</span>, <span class="ident">del_sync_time</span>)
+ <span class="kw">fn </span>del_script_pubkey_from_path(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_script_pubkey_from_path, keychain, child)
+ }
+ <span class="kw">fn </span>del_path_from_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_path_from_script_pubkey, script)
+ }
+ <span class="kw">fn </span>del_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_utxo, outpoint)
+ }
+ <span class="kw">fn </span>del_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_raw_tx, txid)
+ }
+ <span class="kw">fn </span>del_tx(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ txid: <span class="kw-2">&</span>Txid,
+ include_raw: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_tx, txid, include_raw)
+ }
+ <span class="kw">fn </span>del_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_last_index, keychain)
+ }
+ <span class="kw">fn </span>del_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="macro">impl_inner_method!</span>(AnyBatch, <span class="self">self</span>, del_sync_time)
}
}
-<span class="kw">impl</span> <span class="ident">BatchDatabase</span> <span class="kw">for</span> <span class="ident">AnyDatabase</span> {
- <span class="kw">type</span> <span class="ident">Batch</span> <span class="op">=</span> <span class="ident">AnyBatch</span>;
+<span class="kw">impl </span>BatchDatabase <span class="kw">for </span>AnyDatabase {
+ <span class="kw">type </span>Batch = AnyBatch;
- <span class="kw">fn</span> <span class="ident">begin_batch</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident"><span class="self">Self</span>::Batch</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="ident">begin_batch</span>().<span class="ident">into</span>(),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="ident">AnyDatabase::Sled</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="ident">begin_batch</span>().<span class="ident">into</span>(),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="ident">AnyDatabase::Sqlite</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="ident">begin_batch</span>().<span class="ident">into</span>(),
+ <span class="kw">fn </span>begin_batch(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self</span>::Batch {
+ <span class="kw">match </span><span class="self">self </span>{
+ AnyDatabase::Memory(inner) => inner.begin_batch().into(),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ </span>AnyDatabase::Sled(inner) => inner.begin_batch().into(),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ </span>AnyDatabase::Sqlite(inner) => inner.begin_batch().into(),
}
}
- <span class="kw">fn</span> <span class="ident">commit_batch</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">batch</span>: <span class="ident"><span class="self">Self</span>::Batch</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">db</span>) => <span class="kw">match</span> <span class="ident">batch</span> {
- <span class="ident">AnyBatch::Memory</span>(<span class="ident">batch</span>) => <span class="ident">db</span>.<span class="ident">commit_batch</span>(<span class="ident">batch</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">any</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>))]</span>
- <span class="kw">_</span> => <span class="macro">unimplemented!</span>(<span class="string">"Other batch shouldn't be used with Memory db."</span>),
+ <span class="kw">fn </span>commit_batch(<span class="kw-2">&mut </span><span class="self">self</span>, batch: <span class="self">Self</span>::Batch) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">match </span><span class="self">self </span>{
+ AnyDatabase::Memory(db) => <span class="kw">match </span>batch {
+ AnyBatch::Memory(batch) => db.commit_batch(batch),
+ <span class="attr">#[cfg(any(feature = <span class="string">"key-value-db"</span>, feature = <span class="string">"sqlite"</span>))]
+ </span><span class="kw">_ </span>=> <span class="macro">unimplemented!</span>(<span class="string">"Other batch shouldn't be used with Memory db."</span>),
},
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="ident">AnyDatabase::Sled</span>(<span class="ident">db</span>) => <span class="kw">match</span> <span class="ident">batch</span> {
- <span class="ident">AnyBatch::Sled</span>(<span class="ident">batch</span>) => <span class="ident">db</span>.<span class="ident">commit_batch</span>(<span class="ident">batch</span>),
- <span class="kw">_</span> => <span class="macro">unimplemented!</span>(<span class="string">"Other batch shouldn't be used with Sled db."</span>),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ </span>AnyDatabase::Sled(db) => <span class="kw">match </span>batch {
+ AnyBatch::Sled(batch) => db.commit_batch(batch),
+ <span class="kw">_ </span>=> <span class="macro">unimplemented!</span>(<span class="string">"Other batch shouldn't be used with Sled db."</span>),
},
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="ident">AnyDatabase::Sqlite</span>(<span class="ident">db</span>) => <span class="kw">match</span> <span class="ident">batch</span> {
- <span class="ident">AnyBatch::Sqlite</span>(<span class="ident">batch</span>) => <span class="ident">db</span>.<span class="ident">commit_batch</span>(<span class="ident">batch</span>),
- <span class="kw">_</span> => <span class="macro">unimplemented!</span>(<span class="string">"Other batch shouldn't be used with Sqlite db."</span>),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ </span>AnyDatabase::Sqlite(db) => <span class="kw">match </span>batch {
+ AnyBatch::Sqlite(batch) => db.commit_batch(batch),
+ <span class="kw">_ </span>=> <span class="macro">unimplemented!</span>(<span class="string">"Other batch shouldn't be used with Sqlite db."</span>),
},
}
}
}
-<span class="doccomment">/// Configuration type for a [`sled::Tree`] database</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Serialize</span>, <span class="ident">serde::Deserialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SledDbConfiguration</span> {
- <span class="doccomment">/// Main directory of the db</span>
- <span class="kw">pub</span> <span class="ident">path</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Name of the database tree, a separated namespace for the data</span>
- <span class="kw">pub</span> <span class="ident">tree_name</span>: <span class="ident">String</span>,
+<span class="doccomment">/// Configuration type for a [`sled::Tree`] database
+</span><span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+#[derive(Debug, serde::Serialize, serde::Deserialize)]
+</span><span class="kw">pub struct </span>SledDbConfiguration {
+ <span class="doccomment">/// Main directory of the db
+ </span><span class="kw">pub </span>path: String,
+ <span class="doccomment">/// Name of the database tree, a separated namespace for the data
+ </span><span class="kw">pub </span>tree_name: String,
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
-<span class="kw">impl</span> <span class="ident">ConfigurableDatabase</span> <span class="kw">for</span> <span class="ident">sled::Tree</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">SledDbConfiguration</span>;
+<span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+</span><span class="kw">impl </span>ConfigurableDatabase <span class="kw">for </span>sled::Tree {
+ <span class="kw">type </span>Config = SledDbConfiguration;
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">sled::open</span>(<span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">path</span>)<span class="question-mark">?</span>.<span class="ident">open_tree</span>(<span class="kw-2">&</span><span class="ident">config</span>.<span class="ident">tree_name</span>)<span class="question-mark">?</span>)
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="prelude-val">Ok</span>(sled::open(<span class="kw-2">&</span>config.path)<span class="question-mark">?</span>.open_tree(<span class="kw-2">&</span>config.tree_name)<span class="question-mark">?</span>)
}
}
-<span class="doccomment">/// Configuration type for a [`sqlite::SqliteDatabase`] database</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Serialize</span>, <span class="ident">serde::Deserialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SqliteDbConfiguration</span> {
- <span class="doccomment">/// Main directory of the db</span>
- <span class="kw">pub</span> <span class="ident">path</span>: <span class="ident">String</span>,
+<span class="doccomment">/// Configuration type for a [`sqlite::SqliteDatabase`] database
+</span><span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+#[derive(Debug, serde::Serialize, serde::Deserialize)]
+</span><span class="kw">pub struct </span>SqliteDbConfiguration {
+ <span class="doccomment">/// Main directory of the db
+ </span><span class="kw">pub </span>path: String,
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
-<span class="kw">impl</span> <span class="ident">ConfigurableDatabase</span> <span class="kw">for</span> <span class="ident">sqlite::SqliteDatabase</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">SqliteDbConfiguration</span>;
+<span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+</span><span class="kw">impl </span>ConfigurableDatabase <span class="kw">for </span>sqlite::SqliteDatabase {
+ <span class="kw">type </span>Config = SqliteDbConfiguration;
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">sqlite::SqliteDatabase::new</span>(<span class="ident">config</span>.<span class="ident">path</span>.<span class="ident">clone</span>()))
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="prelude-val">Ok</span>(sqlite::SqliteDatabase::new(config.path.clone()))
}
}
-<span class="doccomment">/// Type that can contain any of the database configurations defined by the library</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This allows storing a single configuration that can be loaded into an [`AnyDatabase`]</span>
-<span class="doccomment">/// instance. Wallets that plan to offer users the ability to switch blockchain backend at runtime</span>
-<span class="doccomment">/// will find this particularly useful.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">serde::Serialize</span>, <span class="ident">serde::Deserialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">AnyDatabaseConfig</span> {
- <span class="doccomment">/// Memory database has no config</span>
- <span class="ident">Memory</span>(()),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)))]</span>
- <span class="doccomment">/// Simple key-value embedded database based on [`sled`]</span>
- <span class="ident">Sled</span>(<span class="ident">SledDbConfiguration</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)))]</span>
- <span class="doccomment">/// Sqlite embedded database using [`rusqlite`]</span>
- <span class="ident">Sqlite</span>(<span class="ident">SqliteDbConfiguration</span>),
+<span class="doccomment">/// Type that can contain any of the database configurations defined by the library
+///
+/// This allows storing a single configuration that can be loaded into an [`AnyDatabase`]
+/// instance. Wallets that plan to offer users the ability to switch blockchain backend at runtime
+/// will find this particularly useful.
+</span><span class="attr">#[derive(Debug, serde::Serialize, serde::Deserialize)]
+</span><span class="kw">pub enum </span>AnyDatabaseConfig {
+ <span class="doccomment">/// Memory database has no config
+ </span>Memory(()),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"key-value-db"</span>)))]
+ </span><span class="doccomment">/// Simple key-value embedded database based on [`sled`]
+ </span>Sled(SledDbConfiguration),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"sqlite"</span>)))]
+ </span><span class="doccomment">/// Sqlite embedded database using [`rusqlite`]
+ </span>Sqlite(SqliteDbConfiguration),
}
-<span class="kw">impl</span> <span class="ident">ConfigurableDatabase</span> <span class="kw">for</span> <span class="ident">AnyDatabase</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> <span class="ident">AnyDatabaseConfig</span>;
+<span class="kw">impl </span>ConfigurableDatabase <span class="kw">for </span>AnyDatabase {
+ <span class="kw">type </span>Config = AnyDatabaseConfig;
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="kw">match</span> <span class="ident">config</span> {
- <span class="ident">AnyDatabaseConfig::Memory</span>(<span class="ident">inner</span>) => {
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">memory::MemoryDatabase::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>)
+ <span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="kw">match </span>config {
+ AnyDatabaseConfig::Memory(inner) => {
+ AnyDatabase::Memory(memory::MemoryDatabase::from_config(inner)<span class="question-mark">?</span>)
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="ident">AnyDatabaseConfig::Sled</span>(<span class="ident">inner</span>) => <span class="ident">AnyDatabase::Sled</span>(<span class="ident">sled::Tree::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="ident">AnyDatabaseConfig::Sqlite</span>(<span class="ident">inner</span>) => {
- <span class="ident">AnyDatabase::Sqlite</span>(<span class="ident">sqlite::SqliteDatabase::from_config</span>(<span class="ident">inner</span>)<span class="question-mark">?</span>)
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ </span>AnyDatabaseConfig::Sled(inner) => AnyDatabase::Sled(sled::Tree::from_config(inner)<span class="question-mark">?</span>),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ </span>AnyDatabaseConfig::Sqlite(inner) => {
+ AnyDatabase::Sqlite(sqlite::SqliteDatabase::from_config(inner)<span class="question-mark">?</span>)
}
})
}
}
-<span class="macro">impl_from!</span>((), <span class="ident">AnyDatabaseConfig</span>, <span class="ident">Memory</span>,);
-<span class="macro">impl_from!</span>(<span class="ident">SledDbConfiguration</span>, <span class="ident">AnyDatabaseConfig</span>, <span class="ident">Sled</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>);
-<span class="macro">impl_from!</span>(<span class="ident">SqliteDbConfiguration</span>, <span class="ident">AnyDatabaseConfig</span>, <span class="ident">Sqlite</span>, <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>);
+<span class="macro">impl_from!</span>((), AnyDatabaseConfig, Memory,);
+<span class="macro">impl_from!</span>(SledDbConfiguration, AnyDatabaseConfig, Sled, <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]</span>);
+<span class="macro">impl_from!</span>(SqliteDbConfiguration, AnyDatabaseConfig, Sqlite, <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]</span>);
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/keyvalue.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>keyvalue.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="kw">use</span> <span class="ident">std::convert::TryInto</span>;
-
-<span class="kw">use</span> <span class="ident">sled</span>::{<span class="ident">Batch</span>, <span class="ident">Tree</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::encode</span>::{<span class="ident">deserialize</span>, <span class="ident">serialize</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types::Txid</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">Transaction</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::memory::MapKey</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">Database</span>, <span class="ident">SyncTime</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::<span class="kw-2">*</span>;
-
-<span class="macro">macro_rules!</span> <span class="ident">impl_batch_operations</span> {
- ( { $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>:<span class="ident">tt</span>)<span class="op">*</span> }, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">process_delete</span>:<span class="ident">ident</span> ) => {
- <span class="kw">fn</span> <span class="ident">set_script_pubkey</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">path</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="prelude-val">Some</span>(<span class="ident">keychain</span>), <span class="prelude-val">Some</span>(<span class="ident">path</span>))).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">serialize</span>(<span class="ident">script</span>))$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="macro">json!</span>({
- <span class="string">"t"</span>: <span class="ident">keychain</span>,
- <span class="string">"p"</span>: <span class="ident">path</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/keyvalue.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>keyvalue.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="kw">use </span>std::convert::TryInto;
+
+<span class="kw">use </span>sled::{Batch, Tree};
+
+<span class="kw">use </span>bitcoin::consensus::encode::{deserialize, serialize};
+<span class="kw">use </span>bitcoin::hash_types::Txid;
+<span class="kw">use </span>bitcoin::{OutPoint, Script, Transaction};
+
+<span class="kw">use </span><span class="kw">crate</span>::database::memory::MapKey;
+<span class="kw">use </span><span class="kw">crate</span>::database::{BatchDatabase, BatchOperations, Database, SyncTime};
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::types::<span class="kw-2">*</span>;
+
+<span class="macro">macro_rules! </span>impl_batch_operations {
+ ( { $(<span class="macro-nonterminal">$after_insert</span>:tt)* }, <span class="macro-nonterminal">$process_delete</span>:ident ) => {
+ <span class="kw">fn </span>set_script_pubkey(<span class="kw-2">&mut </span><span class="self">self</span>, script: <span class="kw-2">&</span>Script, keychain: KeychainKind, path: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::Path((<span class="prelude-val">Some</span>(keychain), <span class="prelude-val">Some</span>(path))).as_map_key();
+ <span class="self">self</span>.insert(key, serialize(script))$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
+
+ <span class="kw">let </span>key = MapKey::Script(<span class="prelude-val">Some</span>(script)).as_map_key();
+ <span class="kw">let </span>value = <span class="macro">json!</span>({
+ <span class="string">"t"</span>: keychain,
+ <span class="string">"p"</span>: path,
});
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">serde_json::to_vec</span>(<span class="kw-2">&</span><span class="ident">value</span>)<span class="question-mark">?</span>)$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
+ <span class="self">self</span>.insert(key, serde_json::to_vec(<span class="kw-2">&</span>value)<span class="question-mark">?</span>)$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">utxo</span>.<span class="ident">outpoint</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="macro">json!</span>({
- <span class="string">"t"</span>: <span class="ident">utxo</span>.<span class="ident">txout</span>,
- <span class="string">"i"</span>: <span class="ident">utxo</span>.<span class="ident">keychain</span>,
- <span class="string">"s"</span>: <span class="ident">utxo</span>.<span class="ident">is_spent</span>,
+ <span class="kw">fn </span>set_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">Some</span>(<span class="kw-2">&</span>utxo.outpoint)).as_map_key();
+ <span class="kw">let </span>value = <span class="macro">json!</span>({
+ <span class="string">"t"</span>: utxo.txout,
+ <span class="string">"i"</span>: utxo.keychain,
+ <span class="string">"s"</span>: utxo.is_spent,
});
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">serde_json::to_vec</span>(<span class="kw-2">&</span><span class="ident">value</span>)<span class="question-mark">?</span>)$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
+ <span class="self">self</span>.insert(key, serde_json::to_vec(<span class="kw-2">&</span>value)<span class="question-mark">?</span>)$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>())).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">serialize</span>(<span class="ident">transaction</span>);
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">value</span>)$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
+ <span class="kw">fn </span>set_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">Some</span>(<span class="kw-2">&</span>transaction.txid())).as_map_key();
+ <span class="kw">let </span>value = serialize(transaction);
+ <span class="self">self</span>.insert(key, value)$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
+ <span class="kw">fn </span>set_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">Some</span>(<span class="kw-2">&</span>transaction.txid)).as_map_key();
- <span class="comment">// remove the raw tx from the serialized version</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">serde_json::to_value</span>(<span class="ident">transaction</span>)<span class="question-mark">?</span>;
- <span class="ident">value</span>[<span class="string">"transaction"</span>] <span class="op">=</span> <span class="ident">serde_json::Value::Null</span>;
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">serde_json::to_vec</span>(<span class="kw-2">&</span><span class="ident">value</span>)<span class="question-mark">?</span>;
+ <span class="comment">// remove the raw tx from the serialized version
+ </span><span class="kw">let </span><span class="kw-2">mut </span>value = serde_json::to_value(transaction)<span class="question-mark">?</span>;
+ value[<span class="string">"transaction"</span>] = serde_json::Value::Null;
+ <span class="kw">let </span>value = serde_json::to_vec(<span class="kw-2">&</span>value)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">value</span>)$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
+ <span class="self">self</span>.insert(key, value)$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
- <span class="comment">// insert the raw_tx if present</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">tx</span>) <span class="op">=</span> <span class="ident">transaction</span>.<span class="ident">transaction</span> {
- <span class="self">self</span>.<span class="ident">set_raw_tx</span>(<span class="ident">tx</span>)<span class="question-mark">?</span>;
+ <span class="comment">// insert the raw_tx if present
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>tx) = transaction.transaction {
+ <span class="self">self</span>.set_raw_tx(tx)<span class="question-mark">?</span>;
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">value</span>.<span class="ident">to_be_bytes</span>())$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
+ <span class="kw">fn </span>set_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, value: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="self">self</span>.insert(key, <span class="kw-2">&</span>value.to_be_bytes())$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">data</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::SyncTime</span>.<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">serde_json::to_vec</span>(<span class="kw-2">&</span><span class="ident">data</span>)<span class="question-mark">?</span>)$(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">after_insert</span>)<span class="kw-2">*</span>;
+ <span class="kw">fn </span>set_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>, data: SyncTime) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::SyncTime.as_map_key();
+ <span class="self">self</span>.insert(key, serde_json::to_vec(<span class="kw-2">&</span>data)<span class="question-mark">?</span>)$(<span class="macro-nonterminal">$after_insert</span>)<span class="kw-2">*</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">del_script_pubkey_from_path</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">path</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="prelude-val">Some</span>(<span class="ident">keychain</span>), <span class="prelude-val">Some</span>(<span class="ident">path</span>))).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
+ <span class="kw">fn </span>del_script_pubkey_from_path(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, path: u32) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span>key = MapKey::Path((<span class="prelude-val">Some</span>(keychain), <span class="prelude-val">Some</span>(path))).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
+ <span class="kw">let </span>res = <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
- <span class="prelude-val">Ok</span>(<span class="ident">res</span>.<span class="ident">map_or</span>(<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>), <span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="prelude-val">Some</span>(<span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">x</span>)).<span class="ident">transpose</span>())<span class="question-mark">?</span>)
+ <span class="prelude-val">Ok</span>(res.map_or(<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>), |x| <span class="prelude-val">Some</span>(deserialize(<span class="kw-2">&</span>x)).transpose())<span class="question-mark">?</span>)
}
- <span class="kw">fn</span> <span class="ident">del_path_from_script_pubkey</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
+ <span class="kw">fn </span>del_path_from_script_pubkey(<span class="kw-2">&mut </span><span class="self">self</span>, script: <span class="kw-2">&</span>Script) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">let </span>key = MapKey::Script(<span class="prelude-val">Some</span>(script)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
+ <span class="kw">let </span>res = <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">st</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"p"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = serde_json::from_slice(<span class="kw-2">&</span>b)<span class="question-mark">?</span>;
+ <span class="kw">let </span>st = serde_json::from_value(val[<span class="string">"t"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>path = serde_json::from_value(val[<span class="string">"p"</span>].take())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((<span class="ident">st</span>, <span class="ident">path</span>)))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((st, path)))
}
}
}
- <span class="kw">fn</span> <span class="ident">del_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="ident">outpoint</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
+ <span class="kw">fn </span>del_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">Some</span>(outpoint)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
+ <span class="kw">let </span>res = <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"i"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">is_spent</span> <span class="op">=</span> <span class="ident">val</span>.<span class="ident">get_mut</span>(<span class="string">"s"</span>).<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">take</span>().<span class="ident">as_bool</span>()).<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>);
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = serde_json::from_slice(<span class="kw-2">&</span>b)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txout = serde_json::from_value(val[<span class="string">"t"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain = serde_json::from_value(val[<span class="string">"i"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>is_spent = val.get_mut(<span class="string">"s"</span>).and_then(|s| s.take().as_bool()).unwrap_or(<span class="bool-val">false</span>);
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">LocalUtxo</span> { <span class="ident">outpoint</span>: <span class="ident">outpoint</span>.<span class="ident">clone</span>(), <span class="ident">txout</span>, <span class="ident">keychain</span>, <span class="ident">is_spent</span>, }))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(LocalUtxo { outpoint: outpoint.clone(), txout, keychain, is_spent, }))
}
}
}
- <span class="kw">fn</span> <span class="ident">del_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
+ <span class="kw">fn </span>del_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
+ <span class="kw">let </span>res = <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
- <span class="prelude-val">Ok</span>(<span class="ident">res</span>.<span class="ident">map_or</span>(<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>), <span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="prelude-val">Some</span>(<span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">x</span>)).<span class="ident">transpose</span>())<span class="question-mark">?</span>)
+ <span class="prelude-val">Ok</span>(res.map_or(<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>), |x| <span class="prelude-val">Some</span>(deserialize(<span class="kw-2">&</span>x)).transpose())<span class="question-mark">?</span>)
}
- <span class="kw">fn</span> <span class="ident">del_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">raw_tx</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="self">self</span>.<span class="ident">del_raw_tx</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- };
+ <span class="kw">fn </span>del_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, include_raw: bool) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">let </span>raw_tx = <span class="kw">if </span>include_raw {
+ <span class="self">self</span>.del_raw_tx(txid)<span class="question-mark">?
+ </span>} <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>};
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
+ <span class="kw">let </span>res = <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">TransactionDetails</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)<span class="question-mark">?</span>;
- <span class="ident">val</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="ident">raw_tx</span>;
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: TransactionDetails = serde_json::from_slice(<span class="kw-2">&</span>b)<span class="question-mark">?</span>;
+ val.transaction = raw_tx;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">val</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(val))
}
}
}
- <span class="kw">fn</span> <span class="ident">del_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
+ <span class="kw">fn </span>del_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
<span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>)
- .<span class="ident">map</span>(<span class="ident">ivec_to_u32</span>)
- .<span class="ident">transpose</span>()
+ .map(ivec_to_u32)
+ .transpose()
}
- <span class="kw">fn</span> <span class="ident">del_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::SyncTime</span>.<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
+ <span class="kw">fn </span>del_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="kw">let </span>key = MapKey::SyncTime.as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.remove(key);
+ <span class="kw">let </span>res = <span class="macro-nonterminal">$</span><span class="macro">process_delete!</span>(<span class="macro-nonterminal">res</span>);
- <span class="prelude-val">Ok</span>(<span class="ident">res</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)).<span class="ident">transpose</span>()<span class="question-mark">?</span>)
+ <span class="prelude-val">Ok</span>(res.map(|b| serde_json::from_slice(<span class="kw-2">&</span>b)).transpose()<span class="question-mark">?</span>)
}
}
}
-<span class="macro">macro_rules!</span> <span class="ident">process_delete_tree</span> {
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">res</span>:<span class="ident">expr</span>) => {
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">res</span><span class="question-mark">?</span>
- };
+<span class="macro">macro_rules! </span>process_delete_tree {
+ (<span class="macro-nonterminal">$res</span>:expr) => {
+ <span class="macro-nonterminal">$res</span><span class="question-mark">?
+ </span>};
}
-<span class="kw">impl</span> <span class="ident">BatchOperations</span> <span class="kw">for</span> <span class="ident">Tree</span> {
- <span class="macro">impl_batch_operations!</span>({<span class="question-mark">?</span>}, <span class="ident">process_delete_tree</span>);
+<span class="kw">impl </span>BatchOperations <span class="kw">for </span>Tree {
+ <span class="macro">impl_batch_operations!</span>({<span class="question-mark">?</span>}, process_delete_tree);
}
-<span class="macro">macro_rules!</span> <span class="ident">process_delete_batch</span> {
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">res</span>:<span class="ident">expr</span>) => {
- <span class="prelude-val">None</span> <span class="kw">as</span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">sled::IVec</span><span class="op">></span>
+<span class="macro">macro_rules! </span>process_delete_batch {
+ (<span class="macro-nonterminal">$res</span>:expr) => {
+ <span class="prelude-val">None </span><span class="kw">as </span><span class="prelude-ty">Option</span><sled::IVec>
};
}
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_variables</span>)]</span>
-<span class="kw">impl</span> <span class="ident">BatchOperations</span> <span class="kw">for</span> <span class="ident">Batch</span> {
- <span class="macro">impl_batch_operations!</span>({}, <span class="ident">process_delete_batch</span>);
+<span class="attr">#[allow(unused_variables)]
+</span><span class="kw">impl </span>BatchOperations <span class="kw">for </span>Batch {
+ <span class="macro">impl_batch_operations!</span>({}, process_delete_batch);
}
-<span class="kw">impl</span> <span class="ident">Database</span> <span class="kw">for</span> <span class="ident">Tree</span> {
- <span class="kw">fn</span> <span class="ident">check_descriptor_checksum</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">AsRef</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span><span class="op">></span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">bytes</span>: <span class="ident">B</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::DescriptorChecksum</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
-
- <span class="kw">let</span> <span class="ident">prev</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>)<span class="question-mark">?</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">to_vec</span>());
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span> <span class="ident">prev</span> {
- <span class="kw">if</span> <span class="ident">val</span> <span class="op">==</span> <span class="ident">bytes</span>.<span class="ident">as_ref</span>() {
+<span class="kw">impl </span>Database <span class="kw">for </span>Tree {
+ <span class="kw">fn </span>check_descriptor_checksum<B: AsRef<[u8]>>(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ bytes: B,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::DescriptorChecksum(keychain).as_map_key();
+
+ <span class="kw">let </span>prev = <span class="self">self</span>.get(<span class="kw-2">&</span>key)<span class="question-mark">?</span>.map(|x| x.to_vec());
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = prev {
+ <span class="kw">if </span>val == bytes.as_ref() {
<span class="prelude-val">Ok</span>(())
- } <span class="kw">else</span> {
- <span class="prelude-val">Err</span>(<span class="ident">Error::ChecksumMismatch</span>)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(Error::ChecksumMismatch)
}
- } <span class="kw">else</span> {
- <span class="self">self</span>.<span class="ident">insert</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="ident">bytes</span>.<span class="ident">as_ref</span>())<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.insert(<span class="kw-2">&</span>key, bytes.as_ref())<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
- <span class="kw">fn</span> <span class="ident">iter_script_pubkeys</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="ident">keychain</span>, <span class="prelude-val">None</span>)).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">scan_prefix</span>(<span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">v</span>) <span class="op">=</span> <span class="ident">x</span><span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>)
+ <span class="kw">fn </span>iter_script_pubkeys(<span class="kw-2">&</span><span class="self">self</span>, keychain: <span class="prelude-ty">Option</span><KeychainKind>) -> <span class="prelude-ty">Result</span><Vec<Script>, Error> {
+ <span class="kw">let </span>key = MapKey::Path((keychain, <span class="prelude-val">None</span>)).as_map_key();
+ <span class="self">self</span>.scan_prefix(key)
+ .map(|x| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span>(<span class="kw">_</span>, v) = x<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(deserialize(<span class="kw-2">&</span>v)<span class="question-mark">?</span>)
})
- .<span class="ident">collect</span>()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">iter_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">None</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">scan_prefix</span>(<span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="op">=</span> <span class="ident">x</span><span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">k</span>[<span class="number">1</span>..])<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"i"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">is_spent</span> <span class="op">=</span> <span class="ident">val</span>
- .<span class="ident">get_mut</span>(<span class="string">"s"</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">take</span>().<span class="ident">as_bool</span>())
- .<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>);
-
- <span class="prelude-val">Ok</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>,
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ <span class="kw">fn </span>iter_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">None</span>).as_map_key();
+ <span class="self">self</span>.scan_prefix(key)
+ .map(|x| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span>(k, v) = x<span class="question-mark">?</span>;
+ <span class="kw">let </span>outpoint = deserialize(<span class="kw-2">&</span>k[<span class="number">1</span>..])<span class="question-mark">?</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = serde_json::from_slice(<span class="kw-2">&</span>v)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txout = serde_json::from_value(val[<span class="string">"t"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain = serde_json::from_value(val[<span class="string">"i"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>is_spent = val
+ .get_mut(<span class="string">"s"</span>)
+ .and_then(|s| s.take().as_bool())
+ .unwrap_or(<span class="bool-val">false</span>);
+
+ <span class="prelude-val">Ok</span>(LocalUtxo {
+ outpoint,
+ txout,
+ keychain,
+ is_spent,
})
})
- .<span class="ident">collect</span>()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">iter_raw_txs</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">None</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">scan_prefix</span>(<span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">v</span>) <span class="op">=</span> <span class="ident">x</span><span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>)
+ <span class="kw">fn </span>iter_raw_txs(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Transaction>, Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">None</span>).as_map_key();
+ <span class="self">self</span>.scan_prefix(key)
+ .map(|x| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span>(<span class="kw">_</span>, v) = x<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(deserialize(<span class="kw-2">&</span>v)<span class="question-mark">?</span>)
})
- .<span class="ident">collect</span>()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">iter_txs</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">None</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">scan_prefix</span>(<span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="op">=</span> <span class="ident">x</span><span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">txdetails</span>: <span class="ident">TransactionDetails</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">v</span>)<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">k</span>[<span class="number">1</span>..])<span class="question-mark">?</span>;
- <span class="ident">txdetails</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">txid</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>iter_txs(<span class="kw-2">&</span><span class="self">self</span>, include_raw: bool) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">None</span>).as_map_key();
+ <span class="self">self</span>.scan_prefix(key)
+ .map(|x| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span>(k, v) = x<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>txdetails: TransactionDetails = serde_json::from_slice(<span class="kw-2">&</span>v)<span class="question-mark">?</span>;
+ <span class="kw">if </span>include_raw {
+ <span class="kw">let </span>txid = deserialize(<span class="kw-2">&</span>k[<span class="number">1</span>..])<span class="question-mark">?</span>;
+ txdetails.transaction = <span class="self">self</span>.get_raw_tx(<span class="kw-2">&</span>txid)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">txdetails</span>)
+ <span class="prelude-val">Ok</span>(txdetails)
})
- .<span class="ident">collect</span>()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">get_script_pubkey_from_path</span>(
+ <span class="kw">fn </span>get_script_pubkey_from_path(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">path</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="prelude-val">Some</span>(<span class="ident">keychain</span>), <span class="prelude-val">Some</span>(<span class="ident">path</span>))).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">b</span>)).<span class="ident">transpose</span>()<span class="question-mark">?</span>)
+ keychain: KeychainKind,
+ path: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span>key = MapKey::Path((<span class="prelude-val">Some</span>(keychain), <span class="prelude-val">Some</span>(path))).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.get(key)<span class="question-mark">?</span>.map(|b| deserialize(<span class="kw-2">&</span>b)).transpose()<span class="question-mark">?</span>)
}
- <span class="kw">fn</span> <span class="ident">get_path_from_script_pubkey</span>(
+ <span class="kw">fn </span>get_path_from_script_pubkey(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">st</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"p"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>((<span class="ident">st</span>, <span class="ident">path</span>))
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">let </span>key = MapKey::Script(<span class="prelude-val">Some</span>(script)).as_map_key();
+ <span class="self">self</span>.get(key)<span class="question-mark">?
+ </span>.map(|b| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = serde_json::from_slice(<span class="kw-2">&</span>b)<span class="question-mark">?</span>;
+ <span class="kw">let </span>st = serde_json::from_value(val[<span class="string">"t"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>path = serde_json::from_value(val[<span class="string">"p"</span>].take())<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>((st, path))
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
- <span class="kw">fn</span> <span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="ident">outpoint</span>)).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"i"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">is_spent</span> <span class="op">=</span> <span class="ident">val</span>
- .<span class="ident">get_mut</span>(<span class="string">"s"</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">take</span>().<span class="ident">as_bool</span>())
- .<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>);
-
- <span class="prelude-val">Ok</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="kw-2">*</span><span class="ident">outpoint</span>,
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ <span class="kw">fn </span>get_utxo(<span class="kw-2">&</span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">Some</span>(outpoint)).as_map_key();
+ <span class="self">self</span>.get(key)<span class="question-mark">?
+ </span>.map(|b| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = serde_json::from_slice(<span class="kw-2">&</span>b)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txout = serde_json::from_value(val[<span class="string">"t"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain = serde_json::from_value(val[<span class="string">"i"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>is_spent = val
+ .get_mut(<span class="string">"s"</span>)
+ .and_then(|s| s.take().as_bool())
+ .unwrap_or(<span class="bool-val">false</span>);
+
+ <span class="prelude-val">Ok</span>(LocalUtxo {
+ outpoint: <span class="kw-2">*</span>outpoint,
+ txout,
+ keychain,
+ is_spent,
})
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
- <span class="kw">fn</span> <span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">b</span>)).<span class="ident">transpose</span>()<span class="question-mark">?</span>)
+ <span class="kw">fn </span>get_raw_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.get(key)<span class="question-mark">?</span>.map(|b| deserialize(<span class="kw-2">&</span>b)).transpose()<span class="question-mark">?</span>)
}
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">txdetails</span>: <span class="ident">TransactionDetails</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>)<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="ident">txdetails</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_raw_tx</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, include_raw: bool) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="self">self</span>.get(key)<span class="question-mark">?
+ </span>.map(|b| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>txdetails: TransactionDetails = serde_json::from_slice(<span class="kw-2">&</span>b)<span class="question-mark">?</span>;
+ <span class="kw">if </span>include_raw {
+ txdetails.transaction = <span class="self">self</span>.get_raw_tx(txid)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">txdetails</span>)
+ <span class="prelude-val">Ok</span>(txdetails)
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
- <span class="kw">fn</span> <span class="ident">get_last_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>.<span class="ident">map</span>(<span class="ident">ivec_to_u32</span>).<span class="ident">transpose</span>()
+ <span class="kw">fn </span>get_last_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="self">self</span>.get(key)<span class="question-mark">?</span>.map(ivec_to_u32).transpose()
}
- <span class="kw">fn</span> <span class="ident">get_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::SyncTime</span>.<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">get</span>(<span class="ident">key</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">serde_json::from_slice</span>(<span class="kw-2">&</span><span class="ident">b</span>))
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>)
+ <span class="kw">fn </span>get_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="kw">let </span>key = MapKey::SyncTime.as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.get(key)<span class="question-mark">?
+ </span>.map(|b| serde_json::from_slice(<span class="kw-2">&</span>b))
+ .transpose()<span class="question-mark">?</span>)
}
- <span class="comment">// inserts 0 if not present</span>
- <span class="kw">fn</span> <span class="ident">increment_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">update_and_fetch</span>(<span class="ident">key</span>, <span class="op">|</span><span class="ident">prev</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">new</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">prev</span> {
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> <span class="ident">array</span>: [<span class="ident">u8</span>; <span class="number">4</span>] <span class="op">=</span> <span class="ident">b</span>.<span class="ident">try_into</span>().<span class="ident">unwrap_or</span>([<span class="number">0</span>; <span class="number">4</span>]);
- <span class="kw">let</span> <span class="ident">val</span> <span class="op">=</span> <span class="ident">u32::from_be_bytes</span>(<span class="ident">array</span>);
-
- <span class="ident">val</span> <span class="op">+</span> <span class="number">1</span>
- }
- <span class="prelude-val">None</span> => <span class="number">0</span>,
+ <span class="comment">// inserts 0 if not present
+ </span><span class="kw">fn </span>increment_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="self">self</span>.update_and_fetch(key, |prev| {
+ <span class="kw">let </span>new = <span class="kw">match </span>prev {
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span>array: [u8; <span class="number">4</span>] = b.try_into().unwrap_or([<span class="number">0</span>; <span class="number">4</span>]);
+ <span class="kw">let </span>val = u32::from_be_bytes(array);
+
+ val + <span class="number">1
+ </span>}
+ <span class="prelude-val">None </span>=> <span class="number">0</span>,
};
- <span class="prelude-val">Some</span>(<span class="ident">new</span>.<span class="ident">to_be_bytes</span>().<span class="ident">to_vec</span>())
- })<span class="question-mark">?</span>
- .<span class="ident">map_or</span>(<span class="prelude-val">Ok</span>(<span class="number">0</span>), <span class="ident">ivec_to_u32</span>)
+ <span class="prelude-val">Some</span>(new.to_be_bytes().to_vec())
+ })<span class="question-mark">?
+ </span>.map_or(<span class="prelude-val">Ok</span>(<span class="number">0</span>), ivec_to_u32)
}
}
-<span class="kw">fn</span> <span class="ident">ivec_to_u32</span>(<span class="ident">b</span>: <span class="ident">sled::IVec</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">array</span>: [<span class="ident">u8</span>; <span class="number">4</span>] <span class="op">=</span> <span class="ident">b</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">try_into</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">Error::InvalidU32Bytes</span>(<span class="ident">b</span>.<span class="ident">to_vec</span>()))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">val</span> <span class="op">=</span> <span class="ident">u32::from_be_bytes</span>(<span class="ident">array</span>);
- <span class="prelude-val">Ok</span>(<span class="ident">val</span>)
+<span class="kw">fn </span>ivec_to_u32(b: sled::IVec) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="kw">let </span>array: [u8; <span class="number">4</span>] = b
+ .as_ref()
+ .try_into()
+ .map_err(|<span class="kw">_</span>| Error::InvalidU32Bytes(b.to_vec()))<span class="question-mark">?</span>;
+ <span class="kw">let </span>val = u32::from_be_bytes(array);
+ <span class="prelude-val">Ok</span>(val)
}
-<span class="kw">impl</span> <span class="ident">BatchDatabase</span> <span class="kw">for</span> <span class="ident">Tree</span> {
- <span class="kw">type</span> <span class="ident">Batch</span> <span class="op">=</span> <span class="ident">sled::Batch</span>;
+<span class="kw">impl </span>BatchDatabase <span class="kw">for </span>Tree {
+ <span class="kw">type </span>Batch = sled::Batch;
- <span class="kw">fn</span> <span class="ident">begin_batch</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident"><span class="self">Self</span>::Batch</span> {
- <span class="ident">sled::Batch::default</span>()
+ <span class="kw">fn </span>begin_batch(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self</span>::Batch {
+ sled::Batch::default()
}
- <span class="kw">fn</span> <span class="ident">commit_batch</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">batch</span>: <span class="ident"><span class="self">Self</span>::Batch</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">apply_batch</span>(<span class="ident">batch</span>)<span class="question-mark">?</span>)
+ <span class="kw">fn </span>commit_batch(<span class="kw-2">&mut </span><span class="self">self</span>, batch: <span class="self">Self</span>::Batch) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.apply_batch(batch)<span class="question-mark">?</span>)
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">lazy_static::lazy_static</span>;
- <span class="kw">use</span> <span class="ident">std::sync</span>::{<span class="ident">Arc</span>, <span class="ident">Condvar</span>, <span class="ident">Mutex</span>, <span class="ident">Once</span>};
- <span class="kw">use</span> <span class="ident">std::time</span>::{<span class="ident">SystemTime</span>, <span class="ident">UNIX_EPOCH</span>};
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>lazy_static::lazy_static;
+ <span class="kw">use </span>std::sync::{Arc, Condvar, Mutex, Once};
+ <span class="kw">use </span>std::time::{SystemTime, UNIX_EPOCH};
- <span class="kw">use</span> <span class="ident">sled</span>::{<span class="ident">Db</span>, <span class="ident">Tree</span>};
+ <span class="kw">use </span>sled::{Db, Tree};
- <span class="kw">static</span> <span class="kw-2">mut</span> <span class="ident">COUNT</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="kw">static </span><span class="kw-2">mut </span>COUNT: usize = <span class="number">0</span>;
- <span class="macro">lazy_static!</span> {
- <span class="kw">static</span> <span class="kw-2">ref</span> <span class="ident">DB</span>: <span class="ident">Arc</span><span class="op"><</span>(<span class="ident">Mutex</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Db</span><span class="op">></span><span class="op">></span>, <span class="ident">Condvar</span>)<span class="op">></span> <span class="op">=</span>
- <span class="ident">Arc::new</span>((<span class="ident">Mutex::new</span>(<span class="prelude-val">None</span>), <span class="ident">Condvar::new</span>()));
- <span class="kw">static</span> <span class="kw-2">ref</span> <span class="ident">INIT</span>: <span class="ident">Once</span> <span class="op">=</span> <span class="ident">Once::new</span>();
+ <span class="macro">lazy_static! </span>{
+ <span class="kw">static </span><span class="kw-2">ref </span>DB: Arc<(Mutex<<span class="prelude-ty">Option</span><Db>>, Condvar)> =
+ Arc::new((Mutex::new(<span class="prelude-val">None</span>), Condvar::new()));
+ <span class="kw">static </span><span class="kw-2">ref </span>INIT: Once = Once::new();
}
- <span class="kw">fn</span> <span class="ident">get_tree</span>() -> <span class="ident">Tree</span> {
- <span class="kw">unsafe</span> {
- <span class="kw">let</span> <span class="ident">cloned</span> <span class="op">=</span> <span class="ident">DB</span>.<span class="ident">clone</span>();
- <span class="kw">let</span> (<span class="ident">mutex</span>, <span class="ident">cvar</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="kw-2">*</span><span class="ident">cloned</span>;
+ <span class="kw">fn </span>get_tree() -> Tree {
+ <span class="kw">unsafe </span>{
+ <span class="kw">let </span>cloned = DB.clone();
+ <span class="kw">let </span>(mutex, cvar) = <span class="kw-2">&*</span>cloned;
- <span class="ident">INIT</span>.<span class="ident">call_once</span>(<span class="op">|</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">mutex</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
+ INIT.call_once(|| {
+ <span class="kw">let </span><span class="kw-2">mut </span>db = mutex.lock().unwrap();
- <span class="kw">let</span> <span class="ident">time</span> <span class="op">=</span> <span class="ident">SystemTime::now</span>().<span class="ident">duration_since</span>(<span class="ident">UNIX_EPOCH</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">dir</span> <span class="op">=</span> <span class="ident">std::env::temp_dir</span>();
- <span class="ident">dir</span>.<span class="ident">push</span>(<span class="macro">format!</span>(<span class="string">"mbw_{}"</span>, <span class="ident">time</span>.<span class="ident">as_nanos</span>()));
+ <span class="kw">let </span>time = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>dir = std::env::temp_dir();
+ dir.push(<span class="macro">format!</span>(<span class="string">"mbw_{}"</span>, time.as_nanos()));
- <span class="kw-2">*</span><span class="ident">db</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">sled::open</span>(<span class="ident">dir</span>).<span class="ident">unwrap</span>());
- <span class="ident">cvar</span>.<span class="ident">notify_all</span>();
+ <span class="kw-2">*</span>db = <span class="prelude-val">Some</span>(sled::open(dir).unwrap());
+ cvar.notify_all();
});
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">mutex</span>.<span class="ident">lock</span>().<span class="ident">unwrap</span>();
- <span class="kw">while</span> <span class="op">!</span><span class="ident">db</span>.<span class="ident">is_some</span>() {
- <span class="ident">db</span> <span class="op">=</span> <span class="ident">cvar</span>.<span class="ident">wait</span>(<span class="ident">db</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>db = mutex.lock().unwrap();
+ <span class="kw">while </span>!db.is_some() {
+ db = cvar.wait(db).unwrap();
}
- <span class="ident">COUNT</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
+ COUNT += <span class="number">1</span>;
- <span class="ident">db</span>.<span class="ident">as_ref</span>()
- .<span class="ident">unwrap</span>()
- .<span class="ident">open_tree</span>(<span class="macro">format!</span>(<span class="string">"tree_{}"</span>, <span class="ident">COUNT</span>))
- .<span class="ident">unwrap</span>()
+ db.as_ref()
+ .unwrap()
+ .open_tree(<span class="macro">format!</span>(<span class="string">"tree_{}"</span>, COUNT))
+ .unwrap()
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_batch_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_batch_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_batch_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_batch_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_iter_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_del_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_utxo</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_utxo</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_utxo() {
+ <span class="kw">crate</span>::database::test::test_utxo(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_raw_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_raw_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_raw_tx() {
+ <span class="kw">crate</span>::database::test::test_raw_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_tx() {
+ <span class="kw">crate</span>::database::test::test_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_last_index</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_last_index</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_last_index() {
+ <span class="kw">crate</span>::database::test::test_last_index(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sync_time</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_sync_time</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sync_time() {
+ <span class="kw">crate</span>::database::test::test_sync_time(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_raw_txs</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_raw_txs</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_raw_txs() {
+ <span class="kw">crate</span>::database::test::test_iter_raw_txs(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_path_from_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_path_from_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_path_from_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_del_path_from_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_script_pubkeys</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_script_pubkeys</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_script_pubkeys() {
+ <span class="kw">crate</span>::database::test::test_iter_script_pubkeys(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_utxo</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_utxo</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_utxo() {
+ <span class="kw">crate</span>::database::test::test_del_utxo(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_raw_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_raw_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_raw_tx() {
+ <span class="kw">crate</span>::database::test::test_del_raw_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_tx() {
+ <span class="kw">crate</span>::database::test::test_del_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_last_index</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_last_index</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_last_index() {
+ <span class="kw">crate</span>::database::test::test_del_last_index(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_descriptor_checksum</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_check_descriptor_checksum</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_descriptor_checksum() {
+ <span class="kw">crate</span>::database::test::test_check_descriptor_checksum(get_tree());
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/memory.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>memory.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-<span id="658">658</span>
-<span id="659">659</span>
-<span id="660">660</span>
-<span id="661">661</span>
-<span id="662">662</span>
-<span id="663">663</span>
-<span id="664">664</span>
-<span id="665">665</span>
-<span id="666">666</span>
-<span id="667">667</span>
-<span id="668">668</span>
-<span id="669">669</span>
-<span id="670">670</span>
-<span id="671">671</span>
-<span id="672">672</span>
-<span id="673">673</span>
-<span id="674">674</span>
-<span id="675">675</span>
-<span id="676">676</span>
-<span id="677">677</span>
-<span id="678">678</span>
-<span id="679">679</span>
-<span id="680">680</span>
-<span id="681">681</span>
-<span id="682">682</span>
-<span id="683">683</span>
-<span id="684">684</span>
-<span id="685">685</span>
-<span id="686">686</span>
-<span id="687">687</span>
-<span id="688">688</span>
-<span id="689">689</span>
-<span id="690">690</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! In-memory ephemeral database</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module defines an in-memory database type called [`MemoryDatabase`] that is based on a</span>
-<span class="doccomment">//! [`BTreeMap`].</span>
-
-<span class="kw">use</span> <span class="ident">std::any::Any</span>;
-<span class="kw">use</span> <span class="ident">std::collections::BTreeMap</span>;
-<span class="kw">use</span> <span class="ident">std::ops::Bound</span>::{<span class="ident">Excluded</span>, <span class="ident">Included</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::encode</span>::{<span class="ident">deserialize</span>, <span class="ident">serialize</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types::Txid</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">Transaction</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">ConfigurableDatabase</span>, <span class="ident">Database</span>, <span class="ident">SyncTime</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::<span class="kw-2">*</span>;
-
-<span class="comment">// path -> script p{i,e}<path> -> script</span>
-<span class="comment">// script -> path s<script> -> {i,e}<path></span>
-<span class="comment">// outpoint u<outpoint> -> txout</span>
-<span class="comment">// rawtx r<txid> -> tx</span>
-<span class="comment">// transactions t<txid> -> tx details</span>
-<span class="comment">// deriv indexes c{i,e} -> u32</span>
-<span class="comment">// descriptor checksum d{i,e} -> vec<u8></span>
-<span class="comment">// last sync time l -> { height, timestamp }</span>
-
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum</span> <span class="ident">MapKey</span><span class="op"><</span><span class="lifetime">'a</span><span class="op">></span> {
- <span class="ident">Path</span>((<span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>)),
- <span class="ident">Script</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Script</span><span class="op">></span>),
- <span class="ident">Utxo</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">OutPoint</span><span class="op">></span>),
- <span class="ident">RawTx</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Txid</span><span class="op">></span>),
- <span class="ident">Transaction</span>(<span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Txid</span><span class="op">></span>),
- <span class="ident">LastIndex</span>(<span class="ident">KeychainKind</span>),
- <span class="ident">SyncTime</span>,
- <span class="ident">DescriptorChecksum</span>(<span class="ident">KeychainKind</span>),
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/memory.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>memory.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! In-memory ephemeral database
+//!
+//! This module defines an in-memory database type called [`MemoryDatabase`] that is based on a
+//! [`BTreeMap`].
+
+</span><span class="kw">use </span>std::any::Any;
+<span class="kw">use </span>std::collections::BTreeMap;
+<span class="kw">use </span>std::ops::Bound::{Excluded, Included};
+
+<span class="kw">use </span>bitcoin::consensus::encode::{deserialize, serialize};
+<span class="kw">use </span>bitcoin::hash_types::Txid;
+<span class="kw">use </span>bitcoin::{OutPoint, Script, Transaction};
+
+<span class="kw">use </span><span class="kw">crate</span>::database::{BatchDatabase, BatchOperations, ConfigurableDatabase, Database, SyncTime};
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::types::<span class="kw-2">*</span>;
+
+<span class="comment">// path -> script p{i,e}<path> -> script
+// script -> path s<script> -> {i,e}<path>
+// outpoint u<outpoint> -> txout
+// rawtx r<txid> -> tx
+// transactions t<txid> -> tx details
+// deriv indexes c{i,e} -> u32
+// descriptor checksum d{i,e} -> vec<u8>
+// last sync time l -> { height, timestamp }
+
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum </span>MapKey<<span class="lifetime">'a</span>> {
+ Path((<span class="prelude-ty">Option</span><KeychainKind>, <span class="prelude-ty">Option</span><u32>)),
+ Script(<span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>Script>),
+ Utxo(<span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>OutPoint>),
+ RawTx(<span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>Txid>),
+ Transaction(<span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>Txid>),
+ LastIndex(KeychainKind),
+ SyncTime,
+ DescriptorChecksum(KeychainKind),
}
-<span class="kw">impl</span> <span class="ident">MapKey</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">as_prefix</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">MapKey::Path</span>((<span class="ident">st</span>, <span class="kw">_</span>)) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="string">b"p"</span>.<span class="ident">to_vec</span>();
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">st</span>) <span class="op">=</span> <span class="ident">st</span> {
- <span class="ident">v</span>.<span class="ident">push</span>(<span class="ident">st</span>.<span class="ident">as_byte</span>());
+<span class="kw">impl </span>MapKey<<span class="lifetime">'_</span>> {
+ <span class="kw">fn </span>as_prefix(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8> {
+ <span class="kw">match </span><span class="self">self </span>{
+ MapKey::Path((st, <span class="kw">_</span>)) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>v = <span class="string">b"p"</span>.to_vec();
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(st) = st {
+ v.push(st.as_byte());
}
- <span class="ident">v</span>
+ v
}
- <span class="ident">MapKey::Script</span>(<span class="kw">_</span>) => <span class="string">b"s"</span>.<span class="ident">to_vec</span>(),
- <span class="ident">MapKey::Utxo</span>(<span class="kw">_</span>) => <span class="string">b"u"</span>.<span class="ident">to_vec</span>(),
- <span class="ident">MapKey::RawTx</span>(<span class="kw">_</span>) => <span class="string">b"r"</span>.<span class="ident">to_vec</span>(),
- <span class="ident">MapKey::Transaction</span>(<span class="kw">_</span>) => <span class="string">b"t"</span>.<span class="ident">to_vec</span>(),
- <span class="ident">MapKey::LastIndex</span>(<span class="ident">st</span>) => [<span class="string">b"c"</span>, <span class="ident">st</span>.<span class="ident">as_ref</span>()].<span class="ident">concat</span>(),
- <span class="ident">MapKey::SyncTime</span> => <span class="string">b"l"</span>.<span class="ident">to_vec</span>(),
- <span class="ident">MapKey::DescriptorChecksum</span>(<span class="ident">st</span>) => [<span class="string">b"d"</span>, <span class="ident">st</span>.<span class="ident">as_ref</span>()].<span class="ident">concat</span>(),
+ MapKey::Script(<span class="kw">_</span>) => <span class="string">b"s"</span>.to_vec(),
+ MapKey::Utxo(<span class="kw">_</span>) => <span class="string">b"u"</span>.to_vec(),
+ MapKey::RawTx(<span class="kw">_</span>) => <span class="string">b"r"</span>.to_vec(),
+ MapKey::Transaction(<span class="kw">_</span>) => <span class="string">b"t"</span>.to_vec(),
+ MapKey::LastIndex(st) => [<span class="string">b"c"</span>, st.as_ref()].concat(),
+ MapKey::SyncTime => <span class="string">b"l"</span>.to_vec(),
+ MapKey::DescriptorChecksum(st) => [<span class="string">b"d"</span>, st.as_ref()].concat(),
}
}
- <span class="kw">fn</span> <span class="ident">serialize_content</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">MapKey::Path</span>((<span class="kw">_</span>, <span class="prelude-val">Some</span>(<span class="ident">child</span>))) => <span class="ident">child</span>.<span class="ident">to_be_bytes</span>().<span class="ident">to_vec</span>(),
- <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">s</span>)) => <span class="ident">serialize</span>(<span class="kw-2">*</span><span class="ident">s</span>),
- <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="ident">s</span>)) => <span class="ident">serialize</span>(<span class="kw-2">*</span><span class="ident">s</span>),
- <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="ident">s</span>)) => <span class="ident">serialize</span>(<span class="kw-2">*</span><span class="ident">s</span>),
- <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="ident">s</span>)) => <span class="ident">serialize</span>(<span class="kw-2">*</span><span class="ident">s</span>),
- <span class="kw">_</span> => <span class="macro">vec!</span>[],
+ <span class="kw">fn </span>serialize_content(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8> {
+ <span class="kw">match </span><span class="self">self </span>{
+ MapKey::Path((<span class="kw">_</span>, <span class="prelude-val">Some</span>(child))) => child.to_be_bytes().to_vec(),
+ MapKey::Script(<span class="prelude-val">Some</span>(s)) => serialize(<span class="kw-2">*</span>s),
+ MapKey::Utxo(<span class="prelude-val">Some</span>(s)) => serialize(<span class="kw-2">*</span>s),
+ MapKey::RawTx(<span class="prelude-val">Some</span>(s)) => serialize(<span class="kw-2">*</span>s),
+ MapKey::Transaction(<span class="prelude-val">Some</span>(s)) => serialize(<span class="kw-2">*</span>s),
+ <span class="kw">_ </span>=> <span class="macro">vec!</span>[],
}
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">as_map_key</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">as_prefix</span>();
- <span class="ident">v</span>.<span class="ident">extend_from_slice</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">serialize_content</span>());
+ <span class="kw">pub fn </span>as_map_key(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<u8> {
+ <span class="kw">let </span><span class="kw-2">mut </span>v = <span class="self">self</span>.as_prefix();
+ v.extend_from_slice(<span class="kw-2">&</span><span class="self">self</span>.serialize_content());
- <span class="ident">v</span>
+ v
}
}
-<span class="kw">fn</span> <span class="ident">after</span>(<span class="ident">key</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">key</span>.<span class="ident">to_owned</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">idx</span> <span class="op">=</span> <span class="ident">key</span>.<span class="ident">len</span>();
- <span class="kw">while</span> <span class="ident">idx</span> <span class="op">></span> <span class="number">0</span> {
- <span class="kw">if</span> <span class="ident">key</span>[<span class="ident">idx</span> <span class="op">-</span> <span class="number">1</span>] <span class="op">==</span> <span class="number">0xFF</span> {
- <span class="ident">idx</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>;
+<span class="kw">fn </span>after(key: <span class="kw-2">&</span>[u8]) -> Vec<u8> {
+ <span class="kw">let </span><span class="kw-2">mut </span>key = key.to_owned();
+ <span class="kw">let </span><span class="kw-2">mut </span>idx = key.len();
+ <span class="kw">while </span>idx > <span class="number">0 </span>{
+ <span class="kw">if </span>key[idx - <span class="number">1</span>] == <span class="number">0xFF </span>{
+ idx -= <span class="number">1</span>;
<span class="kw">continue</span>;
- } <span class="kw">else</span> {
- <span class="ident">key</span>[<span class="ident">idx</span> <span class="op">-</span> <span class="number">1</span>] <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
+ } <span class="kw">else </span>{
+ key[idx - <span class="number">1</span>] += <span class="number">1</span>;
<span class="kw">break</span>;
}
}
- <span class="ident">key</span>
+ key
}
-<span class="doccomment">/// In-memory ephemeral database</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This database can be used as a temporary storage for wallets that are not kept permanently on</span>
-<span class="doccomment">/// a device, or on platforms that don't provide a filesystem, like `wasm32`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Once it's dropped its content will be lost.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// If you are looking for a permanent storage solution, you can try with the default key-value</span>
-<span class="doccomment">/// database called [`sled`]. See the [`database`] module documentation for more details.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`database`]: crate::database</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MemoryDatabase</span> {
- <span class="ident">map</span>: <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>, <span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Any</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">></span><span class="op">></span>,
- <span class="ident">deleted_keys</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span>,
+<span class="doccomment">/// In-memory ephemeral database
+///
+/// This database can be used as a temporary storage for wallets that are not kept permanently on
+/// a device, or on platforms that don't provide a filesystem, like `wasm32`.
+///
+/// Once it's dropped its content will be lost.
+///
+/// If you are looking for a permanent storage solution, you can try with the default key-value
+/// database called [`sled`]. See the [`database`] module documentation for more details.
+///
+/// [`database`]: crate::database
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">pub struct </span>MemoryDatabase {
+ map: BTreeMap<Vec<u8>, Box<<span class="kw">dyn </span>Any + Send + Sync>>,
+ deleted_keys: Vec<Vec<u8>>,
}
-<span class="kw">impl</span> <span class="ident">MemoryDatabase</span> {
- <span class="doccomment">/// Create a new empty database</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
- <span class="ident">MemoryDatabase</span> {
- <span class="ident">map</span>: <span class="ident">BTreeMap::new</span>(),
- <span class="ident">deleted_keys</span>: <span class="ident">Vec::new</span>(),
+<span class="kw">impl </span>MemoryDatabase {
+ <span class="doccomment">/// Create a new empty database
+ </span><span class="kw">pub fn </span>new() -> <span class="self">Self </span>{
+ MemoryDatabase {
+ map: BTreeMap::new(),
+ deleted_keys: Vec::new(),
}
}
}
-<span class="kw">impl</span> <span class="ident">BatchOperations</span> <span class="kw">for</span> <span class="ident">MemoryDatabase</span> {
- <span class="kw">fn</span> <span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">path</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="prelude-val">Some</span>(<span class="ident">keychain</span>), <span class="prelude-val">Some</span>(<span class="ident">path</span>))).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">script</span>.<span class="ident">clone</span>()));
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="macro">json!</span>({
- <span class="string">"t"</span>: <span class="ident">keychain</span>,
- <span class="string">"p"</span>: <span class="ident">path</span>,
+<span class="kw">impl </span>BatchOperations <span class="kw">for </span>MemoryDatabase {
+ <span class="kw">fn </span>set_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ keychain: KeychainKind,
+ path: u32,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::Path((<span class="prelude-val">Some</span>(keychain), <span class="prelude-val">Some</span>(path))).as_map_key();
+ <span class="self">self</span>.map.insert(key, Box::new(script.clone()));
+
+ <span class="kw">let </span>key = MapKey::Script(<span class="prelude-val">Some</span>(script)).as_map_key();
+ <span class="kw">let </span>value = <span class="macro">json!</span>({
+ <span class="string">"t"</span>: keychain,
+ <span class="string">"p"</span>: path,
});
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">value</span>));
+ <span class="self">self</span>.map.insert(key, Box::new(value));
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">utxo</span>.<span class="ident">outpoint</span>)).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(
- <span class="ident">key</span>,
- <span class="ident">Box::new</span>((<span class="ident">utxo</span>.<span class="ident">txout</span>.<span class="ident">clone</span>(), <span class="ident">utxo</span>.<span class="ident">keychain</span>, <span class="ident">utxo</span>.<span class="ident">is_spent</span>)),
+ <span class="kw">fn </span>set_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">Some</span>(<span class="kw-2">&</span>utxo.outpoint)).as_map_key();
+ <span class="self">self</span>.map.insert(
+ key,
+ Box::new((utxo.txout.clone(), utxo.keychain, utxo.is_spent)),
);
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>())).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">transaction</span>.<span class="ident">clone</span>()));
+ <span class="kw">fn </span>set_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">Some</span>(<span class="kw-2">&</span>transaction.txid())).as_map_key();
+ <span class="self">self</span>.map.insert(key, Box::new(transaction.clone()));
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
+ <span class="kw">fn </span>set_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">Some</span>(<span class="kw-2">&</span>transaction.txid)).as_map_key();
- <span class="comment">// insert the raw_tx if present</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">tx</span>) <span class="op">=</span> <span class="ident">transaction</span>.<span class="ident">transaction</span> {
- <span class="self">self</span>.<span class="ident">set_raw_tx</span>(<span class="ident">tx</span>)<span class="question-mark">?</span>;
+ <span class="comment">// insert the raw_tx if present
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>tx) = transaction.transaction {
+ <span class="self">self</span>.set_raw_tx(tx)<span class="question-mark">?</span>;
}
- <span class="comment">// remove the raw tx from the serialized version</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">transaction</span> <span class="op">=</span> <span class="ident">transaction</span>.<span class="ident">clone</span>();
- <span class="ident">transaction</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+ <span class="comment">// remove the raw tx from the serialized version
+ </span><span class="kw">let </span><span class="kw-2">mut </span>transaction = transaction.clone();
+ transaction.transaction = <span class="prelude-val">None</span>;
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">transaction</span>));
+ <span class="self">self</span>.map.insert(key, Box::new(transaction));
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">value</span>));
+ <span class="kw">fn </span>set_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, value: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="self">self</span>.map.insert(key, Box::new(value));
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">data</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::SyncTime</span>.<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">data</span>));
+ <span class="kw">fn </span>set_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>, data: SyncTime) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::SyncTime.as_map_key();
+ <span class="self">self</span>.map.insert(key, Box::new(data));
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">del_script_pubkey_from_path</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">path</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="prelude-val">Some</span>(<span class="ident">keychain</span>), <span class="prelude-val">Some</span>(<span class="ident">path</span>))).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
+ <span class="kw">fn </span>del_script_pubkey_from_path(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ path: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span>key = MapKey::Path((<span class="prelude-val">Some</span>(keychain), <span class="prelude-val">Some</span>(path))).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
- <span class="prelude-val">Ok</span>(<span class="ident">res</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
+ <span class="prelude-val">Ok</span>(res.map(|x| x.downcast_ref().cloned().unwrap()))
}
- <span class="kw">fn</span> <span class="ident">del_path_from_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
-
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">st</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"p"</span>].<span class="ident">take</span>())<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((<span class="ident">st</span>, <span class="ident">path</span>)))
+ <span class="kw">fn </span>del_path_from_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">let </span>key = MapKey::Script(<span class="prelude-val">Some</span>(script)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
+
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = b.downcast_ref().cloned().unwrap();
+ <span class="kw">let </span>st = serde_json::from_value(val[<span class="string">"t"</span>].take())<span class="question-mark">?</span>;
+ <span class="kw">let </span>path = serde_json::from_value(val[<span class="string">"p"</span>].take())<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((st, path)))
}
}
}
- <span class="kw">fn</span> <span class="ident">del_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="ident">outpoint</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
-
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> (<span class="ident">txout</span>, <span class="ident">keychain</span>, <span class="ident">is_spent</span>) <span class="op">=</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="kw-2">*</span><span class="ident">outpoint</span>,
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ <span class="kw">fn </span>del_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">Some</span>(outpoint)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
+
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span>(txout, keychain, is_spent) = b.downcast_ref().cloned().unwrap();
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(LocalUtxo {
+ outpoint: <span class="kw-2">*</span>outpoint,
+ txout,
+ keychain,
+ is_spent,
}))
}
}
}
- <span class="kw">fn</span> <span class="ident">del_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
+ <span class="kw">fn </span>del_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
- <span class="prelude-val">Ok</span>(<span class="ident">res</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
+ <span class="prelude-val">Ok</span>(res.map(|x| x.downcast_ref().cloned().unwrap()))
}
- <span class="kw">fn</span> <span class="ident">del_tx</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>,
- <span class="ident">include_raw</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">raw_tx</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="self">self</span>.<span class="ident">del_raw_tx</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- };
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
-
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">TransactionDetails</span> <span class="op">=</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="ident">val</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="ident">raw_tx</span>;
-
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">val</span>))
+ <span class="kw">fn </span>del_tx(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ txid: <span class="kw-2">&</span>Txid,
+ include_raw: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">let </span>raw_tx = <span class="kw">if </span>include_raw {
+ <span class="self">self</span>.del_raw_tx(txid)<span class="question-mark">?
+ </span>} <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>};
+
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
+
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: TransactionDetails = b.downcast_ref().cloned().unwrap();
+ val.transaction = raw_tx;
+
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(val))
}
}
}
- <span class="kw">fn</span> <span class="ident">del_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
-
- <span class="kw">match</span> <span class="ident">res</span> {
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">b</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">unwrap</span>())),
+ <span class="kw">fn </span>del_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
+
+ <span class="kw">match </span>res {
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(b) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="kw-2">*</span>b.downcast_ref().unwrap())),
}
}
- <span class="kw">fn</span> <span class="ident">del_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::SyncTime</span>.<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">key</span>);
- <span class="self">self</span>.<span class="ident">deleted_keys</span>.<span class="ident">push</span>(<span class="ident">key</span>);
+ <span class="kw">fn </span>del_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="kw">let </span>key = MapKey::SyncTime.as_map_key();
+ <span class="kw">let </span>res = <span class="self">self</span>.map.remove(<span class="kw-2">&</span>key);
+ <span class="self">self</span>.deleted_keys.push(key);
- <span class="prelude-val">Ok</span>(<span class="ident">res</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
+ <span class="prelude-val">Ok</span>(res.map(|b| b.downcast_ref().cloned().unwrap()))
}
}
-<span class="kw">impl</span> <span class="ident">Database</span> <span class="kw">for</span> <span class="ident">MemoryDatabase</span> {
- <span class="kw">fn</span> <span class="ident">check_descriptor_checksum</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">AsRef</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span><span class="op">></span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">bytes</span>: <span class="ident">B</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::DescriptorChecksum</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
-
- <span class="kw">let</span> <span class="ident">prev</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">map</span>
- .<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">downcast_ref</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span>().<span class="ident">unwrap</span>());
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span> <span class="ident">prev</span> {
- <span class="kw">if</span> <span class="ident">val</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">bytes</span>.<span class="ident">as_ref</span>().<span class="ident">to_vec</span>() {
+<span class="kw">impl </span>Database <span class="kw">for </span>MemoryDatabase {
+ <span class="kw">fn </span>check_descriptor_checksum<B: AsRef<[u8]>>(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ bytes: B,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>key = MapKey::DescriptorChecksum(keychain).as_map_key();
+
+ <span class="kw">let </span>prev = <span class="self">self
+ </span>.map
+ .get(<span class="kw-2">&</span>key)
+ .map(|x| x.downcast_ref::<Vec<u8>>().unwrap());
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = prev {
+ <span class="kw">if </span>val == <span class="kw-2">&</span>bytes.as_ref().to_vec() {
<span class="prelude-val">Ok</span>(())
- } <span class="kw">else</span> {
- <span class="prelude-val">Err</span>(<span class="ident">Error::ChecksumMismatch</span>)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(Error::ChecksumMismatch)
}
- } <span class="kw">else</span> {
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">key</span>, <span class="ident">Box::new</span>(<span class="ident">bytes</span>.<span class="ident">as_ref</span>().<span class="ident">to_vec</span>()));
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.map.insert(key, Box::new(bytes.as_ref().to_vec()));
<span class="prelude-val">Ok</span>(())
}
}
- <span class="kw">fn</span> <span class="ident">iter_script_pubkeys</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="ident">keychain</span>, <span class="prelude-val">None</span>)).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>
- .<span class="ident">range</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span>((<span class="ident">Included</span>(<span class="kw-2">&</span><span class="ident">key</span>), <span class="ident">Excluded</span>(<span class="kw-2">&</span><span class="ident">after</span>(<span class="kw-2">&</span><span class="ident">key</span>))))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">v</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="ident">v</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
- .<span class="ident">collect</span>()
+ <span class="kw">fn </span>iter_script_pubkeys(<span class="kw-2">&</span><span class="self">self</span>, keychain: <span class="prelude-ty">Option</span><KeychainKind>) -> <span class="prelude-ty">Result</span><Vec<Script>, Error> {
+ <span class="kw">let </span>key = MapKey::Path((keychain, <span class="prelude-val">None</span>)).as_map_key();
+ <span class="self">self</span>.map
+ .range::<Vec<u8>, <span class="kw">_</span>>((Included(<span class="kw-2">&</span>key), Excluded(<span class="kw-2">&</span>after(<span class="kw-2">&</span>key))))
+ .map(|(<span class="kw">_</span>, v)| <span class="prelude-val">Ok</span>(v.downcast_ref().cloned().unwrap()))
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">iter_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">None</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>
- .<span class="ident">range</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span>((<span class="ident">Included</span>(<span class="kw-2">&</span><span class="ident">key</span>), <span class="ident">Excluded</span>(<span class="kw-2">&</span><span class="ident">after</span>(<span class="kw-2">&</span><span class="ident">key</span>))))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="ident">v</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">k</span>[<span class="number">1</span>..]).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">txout</span>, <span class="ident">keychain</span>, <span class="ident">is_spent</span>) <span class="op">=</span> <span class="ident">v</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="prelude-val">Ok</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>,
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ <span class="kw">fn </span>iter_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">None</span>).as_map_key();
+ <span class="self">self</span>.map
+ .range::<Vec<u8>, <span class="kw">_</span>>((Included(<span class="kw-2">&</span>key), Excluded(<span class="kw-2">&</span>after(<span class="kw-2">&</span>key))))
+ .map(|(k, v)| {
+ <span class="kw">let </span>outpoint = deserialize(<span class="kw-2">&</span>k[<span class="number">1</span>..]).unwrap();
+ <span class="kw">let </span>(txout, keychain, is_spent) = v.downcast_ref().cloned().unwrap();
+ <span class="prelude-val">Ok</span>(LocalUtxo {
+ outpoint,
+ txout,
+ keychain,
+ is_spent,
})
})
- .<span class="ident">collect</span>()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">iter_raw_txs</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">None</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>
- .<span class="ident">range</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span>((<span class="ident">Included</span>(<span class="kw-2">&</span><span class="ident">key</span>), <span class="ident">Excluded</span>(<span class="kw-2">&</span><span class="ident">after</span>(<span class="kw-2">&</span><span class="ident">key</span>))))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">v</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="ident">v</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
- .<span class="ident">collect</span>()
+ <span class="kw">fn </span>iter_raw_txs(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Transaction>, Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">None</span>).as_map_key();
+ <span class="self">self</span>.map
+ .range::<Vec<u8>, <span class="kw">_</span>>((Included(<span class="kw-2">&</span>key), Excluded(<span class="kw-2">&</span>after(<span class="kw-2">&</span>key))))
+ .map(|(<span class="kw">_</span>, v)| <span class="prelude-val">Ok</span>(v.downcast_ref().cloned().unwrap()))
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">iter_txs</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">None</span>).<span class="ident">as_map_key</span>();
- <span class="self">self</span>.<span class="ident">map</span>
- .<span class="ident">range</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span>((<span class="ident">Included</span>(<span class="kw-2">&</span><span class="ident">key</span>), <span class="ident">Excluded</span>(<span class="kw-2">&</span><span class="ident">after</span>(<span class="kw-2">&</span><span class="ident">key</span>))))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="ident">v</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">txdetails</span>: <span class="ident">TransactionDetails</span> <span class="op">=</span> <span class="ident">v</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">k</span>[<span class="number">1</span>..])<span class="question-mark">?</span>;
- <span class="ident">txdetails</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">txid</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>iter_txs(<span class="kw-2">&</span><span class="self">self</span>, include_raw: bool) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">None</span>).as_map_key();
+ <span class="self">self</span>.map
+ .range::<Vec<u8>, <span class="kw">_</span>>((Included(<span class="kw-2">&</span>key), Excluded(<span class="kw-2">&</span>after(<span class="kw-2">&</span>key))))
+ .map(|(k, v)| {
+ <span class="kw">let </span><span class="kw-2">mut </span>txdetails: TransactionDetails = v.downcast_ref().cloned().unwrap();
+ <span class="kw">if </span>include_raw {
+ <span class="kw">let </span>txid = deserialize(<span class="kw-2">&</span>k[<span class="number">1</span>..])<span class="question-mark">?</span>;
+ txdetails.transaction = <span class="self">self</span>.get_raw_tx(<span class="kw-2">&</span>txid)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">txdetails</span>)
+ <span class="prelude-val">Ok</span>(txdetails)
})
- .<span class="ident">collect</span>()
+ .collect()
}
- <span class="kw">fn</span> <span class="ident">get_script_pubkey_from_path</span>(
+ <span class="kw">fn </span>get_script_pubkey_from_path(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">path</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Path</span>((<span class="prelude-val">Some</span>(<span class="ident">keychain</span>), <span class="prelude-val">Some</span>(<span class="ident">path</span>))).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">map</span>
- .<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
+ keychain: KeychainKind,
+ path: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span>key = MapKey::Path((<span class="prelude-val">Some</span>(keychain), <span class="prelude-val">Some</span>(path))).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.map
+ .get(<span class="kw-2">&</span>key)
+ .map(|b| b.downcast_ref().cloned().unwrap()))
}
- <span class="kw">fn</span> <span class="ident">get_path_from_script_pubkey</span>(
+ <span class="kw">fn </span>get_path_from_script_pubkey(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Script</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">serde_json::Value</span> <span class="op">=</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">st</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"t"</span>].<span class="ident">take</span>()).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">serde_json::from_value</span>(<span class="ident">val</span>[<span class="string">"p"</span>].<span class="ident">take</span>()).<span class="ident">unwrap</span>();
-
- (<span class="ident">st</span>, <span class="ident">path</span>)
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">let </span>key = MapKey::Script(<span class="prelude-val">Some</span>(script)).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.map.get(<span class="kw-2">&</span>key).map(|b| {
+ <span class="kw">let </span><span class="kw-2">mut </span>val: serde_json::Value = b.downcast_ref().cloned().unwrap();
+ <span class="kw">let </span>st = serde_json::from_value(val[<span class="string">"t"</span>].take()).unwrap();
+ <span class="kw">let </span>path = serde_json::from_value(val[<span class="string">"p"</span>].take()).unwrap();
+
+ (st, path)
}))
}
- <span class="kw">fn</span> <span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Utxo</span>(<span class="prelude-val">Some</span>(<span class="ident">outpoint</span>)).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> {
- <span class="kw">let</span> (<span class="ident">txout</span>, <span class="ident">keychain</span>, <span class="ident">is_spent</span>) <span class="op">=</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="kw-2">*</span><span class="ident">outpoint</span>,
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ <span class="kw">fn </span>get_utxo(<span class="kw-2">&</span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="kw">let </span>key = MapKey::Utxo(<span class="prelude-val">Some</span>(outpoint)).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.map.get(<span class="kw-2">&</span>key).map(|b| {
+ <span class="kw">let </span>(txout, keychain, is_spent) = b.downcast_ref().cloned().unwrap();
+ LocalUtxo {
+ outpoint: <span class="kw-2">*</span>outpoint,
+ txout,
+ keychain,
+ is_spent,
}
}))
}
- <span class="kw">fn</span> <span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::RawTx</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">map</span>
- .<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
+ <span class="kw">fn </span>get_raw_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">let </span>key = MapKey::RawTx(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.map
+ .get(<span class="kw-2">&</span>key)
+ .map(|b| b.downcast_ref().cloned().unwrap()))
}
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::Transaction</span>(<span class="prelude-val">Some</span>(<span class="ident">txid</span>)).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">txdetails</span>: <span class="ident">TransactionDetails</span> <span class="op">=</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>();
- <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="ident">txdetails</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_raw_tx</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, include_raw: bool) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">let </span>key = MapKey::Transaction(<span class="prelude-val">Some</span>(txid)).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.map.get(<span class="kw-2">&</span>key).map(|b| {
+ <span class="kw">let </span><span class="kw-2">mut </span>txdetails: TransactionDetails = b.downcast_ref().cloned().unwrap();
+ <span class="kw">if </span>include_raw {
+ txdetails.transaction = <span class="self">self</span>.get_raw_tx(txid).unwrap();
}
- <span class="ident">txdetails</span>
+ txdetails
}))
}
- <span class="kw">fn</span> <span class="ident">get_last_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="kw-2">*</span><span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">unwrap</span>()))
+ <span class="kw">fn </span>get_last_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.map.get(<span class="kw-2">&</span>key).map(|b| <span class="kw-2">*</span>b.downcast_ref().unwrap()))
}
- <span class="kw">fn</span> <span class="ident">get_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::SyncTime</span>.<span class="ident">as_map_key</span>();
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">map</span>
- .<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">b</span>.<span class="ident">downcast_ref</span>().<span class="ident">cloned</span>().<span class="ident">unwrap</span>()))
+ <span class="kw">fn </span>get_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="kw">let </span>key = MapKey::SyncTime.as_map_key();
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.map
+ .get(<span class="kw-2">&</span>key)
+ .map(|b| b.downcast_ref().cloned().unwrap()))
}
- <span class="comment">// inserts 0 if not present</span>
- <span class="kw">fn</span> <span class="ident">increment_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">MapKey::LastIndex</span>(<span class="ident">keychain</span>).<span class="ident">as_map_key</span>();
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">map</span>
- .<span class="ident">entry</span>(<span class="ident">key</span>)
- .<span class="ident">and_modify</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="kw-2">*</span><span class="ident">x</span>.<span class="ident">downcast_mut</span>::<span class="op"><</span><span class="ident">u32</span><span class="op">></span>().<span class="ident">unwrap</span>() <span class="op">+</span><span class="op">=</span> <span class="number">1</span>)
- .<span class="ident">or_insert_with</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">Box</span>::<span class="op"><</span><span class="ident">u32</span><span class="op">></span><span class="ident">::new</span>(<span class="number">0</span>))
- .<span class="ident">downcast_mut</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="prelude-val">Ok</span>(<span class="kw-2">*</span><span class="ident">value</span>)
+ <span class="comment">// inserts 0 if not present
+ </span><span class="kw">fn </span>increment_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="kw">let </span>key = MapKey::LastIndex(keychain).as_map_key();
+ <span class="kw">let </span>value = <span class="self">self
+ </span>.map
+ .entry(key)
+ .and_modify(|x| <span class="kw-2">*</span>x.downcast_mut::<u32>().unwrap() += <span class="number">1</span>)
+ .or_insert_with(|| Box::<u32>::new(<span class="number">0</span>))
+ .downcast_mut()
+ .unwrap();
+
+ <span class="prelude-val">Ok</span>(<span class="kw-2">*</span>value)
}
}
-<span class="kw">impl</span> <span class="ident">BatchDatabase</span> <span class="kw">for</span> <span class="ident">MemoryDatabase</span> {
- <span class="kw">type</span> <span class="ident">Batch</span> <span class="op">=</span> <span class="self">Self</span>;
+<span class="kw">impl </span>BatchDatabase <span class="kw">for </span>MemoryDatabase {
+ <span class="kw">type </span>Batch = <span class="self">Self</span>;
- <span class="kw">fn</span> <span class="ident">begin_batch</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident"><span class="self">Self</span>::Batch</span> {
- <span class="ident">MemoryDatabase::new</span>()
+ <span class="kw">fn </span>begin_batch(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self</span>::Batch {
+ MemoryDatabase::new()
}
- <span class="kw">fn</span> <span class="ident">commit_batch</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="kw-2">mut</span> <span class="ident">batch</span>: <span class="ident"><span class="self">Self</span>::Batch</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">for</span> <span class="ident">key</span> <span class="kw">in</span> <span class="ident">batch</span>.<span class="ident">deleted_keys</span>.<span class="ident">iter</span>() {
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">remove</span>(<span class="ident">key</span>);
+ <span class="kw">fn </span>commit_batch(<span class="kw-2">&mut </span><span class="self">self</span>, <span class="kw-2">mut </span>batch: <span class="self">Self</span>::Batch) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">for </span>key <span class="kw">in </span>batch.deleted_keys.iter() {
+ <span class="self">self</span>.map.remove(key);
}
- <span class="self">self</span>.<span class="ident">map</span>.<span class="ident">append</span>(<span class="kw-2">&mut</span> <span class="ident">batch</span>.<span class="ident">map</span>);
+ <span class="self">self</span>.map.append(<span class="kw-2">&mut </span>batch.map);
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">impl</span> <span class="ident">ConfigurableDatabase</span> <span class="kw">for</span> <span class="ident">MemoryDatabase</span> {
- <span class="kw">type</span> <span class="ident">Config</span> <span class="op">=</span> ();
+<span class="kw">impl </span>ConfigurableDatabase <span class="kw">for </span>MemoryDatabase {
+ <span class="kw">type </span>Config = ();
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">_config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">MemoryDatabase::default</span>())
+ <span class="kw">fn </span>from_config(_config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="prelude-val">Ok</span>(MemoryDatabase::default())
}
}
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="doccomment">/// Artificially insert a tx in the database, as if we had found it with a `sync`. This is a hidden</span>
-<span class="doccomment">/// macro and not a `[cfg(test)]` function so it can be called within the context of doctests which</span>
-<span class="doccomment">/// don't have `test` set.</span>
-<span class="macro">macro_rules!</span> <span class="ident">populate_test_db</span> {
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">db</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tx_meta</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">current_height</span>:<span class="ident">expr</span>$(,)<span class="question-mark">?</span>) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::populate_test_db!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">db</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tx_meta</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">current_height</span>, (@<span class="ident">coinbase</span> <span class="bool-val">false</span>))
+<span class="attr">#[macro_export]
+#[doc(hidden)]
+</span><span class="doccomment">/// Artificially insert a tx in the database, as if we had found it with a `sync`. This is a hidden
+/// macro and not a `[cfg(test)]` function so it can be called within the context of doctests which
+/// don't have `test` set.
+</span><span class="macro">macro_rules! </span>populate_test_db {
+ (<span class="macro-nonterminal">$db</span>:expr, <span class="macro-nonterminal">$tx_meta</span>:expr, <span class="macro-nonterminal">$current_height</span>:expr$(,)<span class="question-mark">?</span>) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::populate_test_db!</span>(<span class="macro-nonterminal">$db</span>, <span class="macro-nonterminal">$tx_meta</span>, <span class="macro-nonterminal">$current_height</span>, (@coinbase <span class="bool-val">false</span>))
}};
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">db</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tx_meta</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">current_height</span>:<span class="ident">expr</span>, (@<span class="ident">coinbase</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">is_coinbase</span>:<span class="ident">expr</span>)$(,)<span class="question-mark">?</span>) => {{
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::database::SyncTime</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::database</span>::{<span class="ident">BatchOperations</span>, <span class="ident">Database</span>};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">db</span>;
- <span class="kw">let</span> <span class="ident">tx_meta</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tx_meta</span>;
- <span class="kw">let</span> <span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">current_height</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">input</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::TxIn::default</span>()];
- <span class="kw">if</span> <span class="op">!</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">is_coinbase</span> {
- <span class="ident">input</span>[<span class="number">0</span>].<span class="ident">previous_output</span>.<span class="ident">vout</span> <span class="op">=</span> <span class="number">0</span>;
+ (<span class="macro-nonterminal">$db</span>:expr, <span class="macro-nonterminal">$tx_meta</span>:expr, <span class="macro-nonterminal">$current_height</span>:expr, (@coinbase <span class="macro-nonterminal">$is_coinbase</span>:expr)$(,)<span class="question-mark">?</span>) => {{
+ <span class="kw">use </span>std::str::FromStr;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::database::SyncTime</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::database</span>::{BatchOperations, Database};
+ <span class="kw">let </span><span class="kw-2">mut </span>db = <span class="macro-nonterminal">$db</span>;
+ <span class="kw">let </span>tx_meta = <span class="macro-nonterminal">$tx_meta</span>;
+ <span class="kw">let </span>current_height: <span class="prelude-ty">Option</span><u32> = <span class="macro-nonterminal">$current_height</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>input = <span class="macro">vec!</span>[<span class="macro-nonterminal">$crate::bitcoin::TxIn::default</span>()];
+ <span class="kw">if </span>!<span class="macro-nonterminal">$is_coinbase </span>{
+ input[<span class="number">0</span>].previous_output.vout = <span class="number">0</span>;
}
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Transaction</span> {
- <span class="ident">version</span>: <span class="number">1</span>,
- <span class="ident">lock_time</span>: <span class="ident">bitcoin::PackedLockTime</span>(<span class="number">0</span>),
- <span class="ident">input</span>,
- <span class="ident">output</span>: <span class="ident">tx_meta</span>
- .<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">out_meta</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::TxOut</span> {
- <span class="ident">value</span>: <span class="ident">out_meta</span>.<span class="ident">value</span>,
- <span class="ident">script_pubkey</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Address::from_str</span>(<span class="kw-2">&</span><span class="ident">out_meta</span>.<span class="ident">to_address</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">script_pubkey</span>(),
+ <span class="kw">let </span>tx = <span class="macro-nonterminal">$crate::bitcoin::Transaction </span>{
+ version: <span class="number">1</span>,
+ lock_time: bitcoin::PackedLockTime(<span class="number">0</span>),
+ input,
+ output: tx_meta
+ .output
+ .iter()
+ .map(|out_meta| <span class="macro-nonterminal">$crate::bitcoin::TxOut </span>{
+ value: out_meta.value,
+ script_pubkey: <span class="macro-nonterminal">$crate::bitcoin::Address::from_str</span>(<span class="kw-2">&</span>out_meta.to_address)
+ .unwrap()
+ .script_pubkey(),
})
- .<span class="ident">collect</span>(),
+ .collect(),
};
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// Set Confirmation time only if current height is provided.</span>
- <span class="comment">// panics if `tx_meta.min_confirmation` is Some, and current_height is None.</span>
- <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="ident">tx_meta</span>
- .<span class="ident">min_confirmations</span>
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">v</span><span class="op">|</span> <span class="kw">if</span> <span class="ident">v</span> <span class="op">==</span> <span class="number">0</span> { <span class="prelude-val">None</span> } <span class="kw">else</span> { <span class="prelude-val">Some</span>(<span class="ident">v</span>) })
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">conf</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::BlockTime</span> {
- <span class="ident">height</span>: <span class="ident">current_height</span>.<span class="ident">expect</span>(<span class="string">"Current height is needed for testing transaction with min-confirmation values"</span>).<span class="ident">checked_sub</span>(<span class="ident">conf</span> <span class="kw">as</span> <span class="ident">u32</span>).<span class="ident">unwrap</span>() <span class="op">+</span> <span class="number">1</span>,
- <span class="ident">timestamp</span>: <span class="number">0</span>,
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// Set Confirmation time only if current height is provided.
+ // panics if `tx_meta.min_confirmation` is Some, and current_height is None.
+ </span><span class="kw">let </span>confirmation_time = tx_meta
+ .min_confirmations
+ .and_then(|v| <span class="kw">if </span>v == <span class="number">0 </span>{ <span class="prelude-val">None </span>} <span class="kw">else </span>{ <span class="prelude-val">Some</span>(v) })
+ .map(|conf| <span class="macro-nonterminal">$crate::BlockTime </span>{
+ height: current_height.expect(<span class="string">"Current height is needed for testing transaction with min-confirmation values"</span>).checked_sub(conf <span class="kw">as </span>u32).unwrap() + <span class="number">1</span>,
+ timestamp: <span class="number">0</span>,
});
- <span class="comment">// Set the database sync_time.</span>
- <span class="comment">// Check if the current_height is less than already known sync height, apply the max</span>
- <span class="comment">// If any of them is None, the other will be applied instead.</span>
- <span class="comment">// If both are None, this will not be set.</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">height</span>) <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_sync_time</span>().<span class="ident">unwrap</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">sync_time</span><span class="op">|</span> <span class="ident">sync_time</span>.<span class="ident">block_time</span>.<span class="ident">height</span>)
- .<span class="ident">max</span>(<span class="ident">current_height</span>) {
- <span class="kw">let</span> <span class="ident">sync_time</span> <span class="op">=</span> <span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>,
- <span class="ident">timestamp</span>: <span class="number">0</span>
- }
+ <span class="comment">// Set the database sync_time.
+ // Check if the current_height is less than already known sync height, apply the max
+ // If any of them is None, the other will be applied instead.
+ // If both are None, this will not be set.
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>(height) = db.get_sync_time().unwrap()
+ .map(|sync_time| sync_time.block_time.height)
+ .max(current_height) {
+ <span class="kw">let </span>sync_time = SyncTime {
+ block_time: BlockTime {
+ height,
+ timestamp: <span class="number">0
+ </span>}
};
- <span class="ident">db</span>.<span class="ident">set_sync_time</span>(<span class="ident">sync_time</span>).<span class="ident">unwrap</span>();
+ db.set_sync_time(sync_time).unwrap();
}
- <span class="kw">let</span> <span class="ident">tx_details</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>.<span class="ident">clone</span>()),
- <span class="ident">txid</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="number">0</span>),
- <span class="ident">received</span>: <span class="number">0</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">confirmation_time</span>,
+ <span class="kw">let </span>tx_details = <span class="macro-nonterminal">$crate::TransactionDetails </span>{
+ transaction: <span class="prelude-val">Some</span>(tx.clone()),
+ txid,
+ fee: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+ received: <span class="number">0</span>,
+ sent: <span class="number">0</span>,
+ confirmation_time,
};
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>).<span class="ident">unwrap</span>();
- <span class="kw">for</span> (<span class="ident">vout</span>, <span class="ident">out</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="ident">db</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::LocalUtxo</span> {
- <span class="ident">txout</span>: <span class="ident">out</span>.<span class="ident">clone</span>(),
- <span class="ident">outpoint</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::OutPoint</span> {
- <span class="ident">txid</span>,
- <span class="ident">vout</span>: <span class="ident">vout</span> <span class="kw">as</span> <span class="ident">u32</span>,
+ db.set_tx(<span class="kw-2">&</span>tx_details).unwrap();
+ <span class="kw">for </span>(vout, out) <span class="kw">in </span>tx.output.iter().enumerate() {
+ db.set_utxo(<span class="kw-2">&</span><span class="macro-nonterminal">$crate::LocalUtxo </span>{
+ txout: out.clone(),
+ outpoint: <span class="macro-nonterminal">$crate::bitcoin::OutPoint </span>{
+ txid,
+ vout: vout <span class="kw">as </span>u32,
},
- <span class="ident">keychain</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ keychain: <span class="macro-nonterminal">$crate::KeychainKind::External</span>,
+ is_spent: <span class="bool-val">false</span>,
})
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="ident">txid</span>
+ txid
}};
}
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="doccomment">/// Macro for getting a wallet for use in a doctest</span>
-<span class="macro">macro_rules!</span> <span class="ident">doctest_wallet</span> {
+<span class="attr">#[macro_export]
+#[doc(hidden)]
+</span><span class="doccomment">/// Macro for getting a wallet for use in a doctest
+</span><span class="macro">macro_rules! </span>doctest_wallet {
() => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Network</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::database::MemoryDatabase</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::testutils</span>;
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"</span>;
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">descriptor</span>) (<span class="ident">descriptor</span>));
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="macro">populate_test_db!</span>(
- <span class="kw-2">&mut</span> <span class="ident">db</span>,
- <span class="macro">testutils!</span> {
- @<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">500_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::bitcoin::Network</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::database::MemoryDatabase</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::testutils</span>;
+ <span class="kw">let </span>descriptor = <span class="string">"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"</span>;
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (descriptor) (descriptor));
+
+ <span class="kw">let </span><span class="kw-2">mut </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>txid = <span class="macro">populate_test_db!</span>(
+ <span class="kw-2">&mut </span>db,
+ <span class="macro">testutils! </span>{
+ @tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">500_000 </span>) (@confirmations <span class="number">1</span>)
},
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
- <span class="ident">descriptors</span>.<span class="number">1</span>.<span class="ident">as_ref</span>(),
- <span class="ident">Network::Regtest</span>,
- <span class="ident">db</span>
+ <span class="macro-nonterminal">$crate::Wallet::new</span>(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
+ descriptors.<span class="number">1</span>.as_ref(),
+ Network::Regtest,
+ db
)
- .<span class="ident">unwrap</span>()
+ .unwrap()
}}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident"><span class="kw">super</span>::MemoryDatabase</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span><span class="kw">super</span>::MemoryDatabase;
- <span class="kw">fn</span> <span class="ident">get_tree</span>() -> <span class="ident">MemoryDatabase</span> {
- <span class="ident">MemoryDatabase::new</span>()
+ <span class="kw">fn </span>get_tree() -> MemoryDatabase {
+ MemoryDatabase::new()
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_batch_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_batch_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_batch_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_batch_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_iter_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_del_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_utxo</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_utxo</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_utxo() {
+ <span class="kw">crate</span>::database::test::test_utxo(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_raw_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_raw_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_raw_tx() {
+ <span class="kw">crate</span>::database::test::test_raw_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_tx() {
+ <span class="kw">crate</span>::database::test::test_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_last_index</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_last_index</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_last_index() {
+ <span class="kw">crate</span>::database::test::test_last_index(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sync_time</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_sync_time</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sync_time() {
+ <span class="kw">crate</span>::database::test::test_sync_time(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_raw_txs</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_raw_txs</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_raw_txs() {
+ <span class="kw">crate</span>::database::test::test_iter_raw_txs(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_path_from_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_path_from_script_pubkey</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_path_from_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_del_path_from_script_pubkey(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_script_pubkeys</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_script_pubkeys</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_script_pubkeys() {
+ <span class="kw">crate</span>::database::test::test_iter_script_pubkeys(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_utxo</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_utxo</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_utxo() {
+ <span class="kw">crate</span>::database::test::test_del_utxo(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_raw_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_raw_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_raw_tx() {
+ <span class="kw">crate</span>::database::test::test_del_raw_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_tx</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_tx() {
+ <span class="kw">crate</span>::database::test::test_del_tx(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_last_index</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_last_index</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_last_index() {
+ <span class="kw">crate</span>::database::test::test_del_last_index(get_tree());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_descriptor_checksum</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_check_descriptor_checksum</span>(<span class="ident">get_tree</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_descriptor_checksum() {
+ <span class="kw">crate</span>::database::test::test_check_descriptor_checksum(get_tree());
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Database types</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides the implementation of some defaults database types, along with traits that</span>
-<span class="doccomment">//! can be implemented externally to let [`Wallet`]s use customized databases.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! It's important to note that the databases defined here only contains "blockchain-related" data.</span>
-<span class="doccomment">//! They can be seen more as a cache than a critical piece of storage that contains secrets and</span>
-<span class="doccomment">//! keys.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! The currently recommended database is [`sled`], which is a pretty simple key-value embedded</span>
-<span class="doccomment">//! database written in Rust. If the `key-value-db` feature is enabled (which by default is),</span>
-<span class="doccomment">//! this library automatically implements all the required traits for [`sled::Tree`].</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! [`Wallet`]: crate::wallet::Wallet</span>
-
-<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types::Txid</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">Transaction</span>, <span class="ident">TxOut</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::<span class="kw-2">*</span>;
-
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">any</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">any</span>::{<span class="ident">AnyDatabase</span>, <span class="ident">AnyDatabaseConfig</span>};
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod</span> <span class="ident">keyvalue</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod</span> <span class="ident">sqlite</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">sqlite::SqliteDatabase</span>;
-
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">memory</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">memory::MemoryDatabase</span>;
-
-<span class="doccomment">/// Blockchain state at the time of syncing</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Contains only the block time and height at the moment</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Serialize</span>, <span class="ident">Deserialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SyncTime</span> {
- <span class="doccomment">/// Block timestamp and height at the time of sync</span>
- <span class="kw">pub</span> <span class="ident">block_time</span>: <span class="ident">BlockTime</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Database types
+//!
+//! This module provides the implementation of some defaults database types, along with traits that
+//! can be implemented externally to let [`Wallet`]s use customized databases.
+//!
+//! It's important to note that the databases defined here only contains "blockchain-related" data.
+//! They can be seen more as a cache than a critical piece of storage that contains secrets and
+//! keys.
+//!
+//! The currently recommended database is [`sled`], which is a pretty simple key-value embedded
+//! database written in Rust. If the `key-value-db` feature is enabled (which by default is),
+//! this library automatically implements all the required traits for [`sled::Tree`].
+//!
+//! [`Wallet`]: crate::wallet::Wallet
+
+</span><span class="kw">use </span>serde::{Deserialize, Serialize};
+
+<span class="kw">use </span>bitcoin::hash_types::Txid;
+<span class="kw">use </span>bitcoin::{OutPoint, Script, Transaction, TxOut};
+
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::types::<span class="kw-2">*</span>;
+
+<span class="kw">pub mod </span>any;
+<span class="kw">pub use </span>any::{AnyDatabase, AnyDatabaseConfig};
+
+<span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>keyvalue;
+
+<span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>sqlite;
+<span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+</span><span class="kw">pub use </span>sqlite::SqliteDatabase;
+
+<span class="kw">pub mod </span>memory;
+<span class="kw">pub use </span>memory::MemoryDatabase;
+
+<span class="doccomment">/// Blockchain state at the time of syncing
+///
+/// Contains only the block time and height at the moment
+</span><span class="attr">#[derive(Clone, Debug, Serialize, Deserialize)]
+</span><span class="kw">pub struct </span>SyncTime {
+ <span class="doccomment">/// Block timestamp and height at the time of sync
+ </span><span class="kw">pub </span>block_time: BlockTime,
}
-<span class="doccomment">/// Trait for operations that can be batched</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait defines the list of operations that must be implemented on the [`Database`] type and</span>
-<span class="doccomment">/// the [`BatchDatabase::Batch`] type.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">BatchOperations</span> {
- <span class="doccomment">/// Store a script_pubkey along with its keychain and child number.</span>
- <span class="kw">fn</span> <span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Store a [`LocalUtxo`]</span>
- <span class="kw">fn</span> <span class="ident">set_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Store a raw transaction</span>
- <span class="kw">fn</span> <span class="ident">set_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Store the metadata of a transaction</span>
- <span class="kw">fn</span> <span class="ident">set_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Store the last derivation index for a given keychain.</span>
- <span class="kw">fn</span> <span class="ident">set_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Store the sync time</span>
- <span class="kw">fn</span> <span class="ident">set_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">sync_time</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
-
- <span class="doccomment">/// Delete a script_pubkey given the keychain and its child number.</span>
- <span class="kw">fn</span> <span class="ident">del_script_pubkey_from_path</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Delete the data related to a specific script_pubkey, meaning the keychain and the child</span>
- <span class="doccomment">/// number.</span>
- <span class="kw">fn</span> <span class="ident">del_path_from_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Delete a [`LocalUtxo`] given its [`OutPoint`]</span>
- <span class="kw">fn</span> <span class="ident">del_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Delete a raw transaction given its [`Txid`]</span>
- <span class="kw">fn</span> <span class="ident">del_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Delete the metadata of a transaction and optionally the raw transaction itself</span>
- <span class="kw">fn</span> <span class="ident">del_tx</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>,
- <span class="ident">include_raw</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Delete the last derivation index for a keychain.</span>
- <span class="kw">fn</span> <span class="ident">del_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Reset the sync time to `None`</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Returns the removed value</span>
- <span class="kw">fn</span> <span class="ident">del_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
+<span class="doccomment">/// Trait for operations that can be batched
+///
+/// This trait defines the list of operations that must be implemented on the [`Database`] type and
+/// the [`BatchDatabase::Batch`] type.
+</span><span class="kw">pub trait </span>BatchOperations {
+ <span class="doccomment">/// Store a script_pubkey along with its keychain and child number.
+ </span><span class="kw">fn </span>set_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><(), Error>;
+ <span class="doccomment">/// Store a [`LocalUtxo`]
+ </span><span class="kw">fn </span>set_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> <span class="prelude-ty">Result</span><(), Error>;
+ <span class="doccomment">/// Store a raw transaction
+ </span><span class="kw">fn </span>set_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error>;
+ <span class="doccomment">/// Store the metadata of a transaction
+ </span><span class="kw">fn </span>set_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error>;
+ <span class="doccomment">/// Store the last derivation index for a given keychain.
+ </span><span class="kw">fn </span>set_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, value: u32) -> <span class="prelude-ty">Result</span><(), Error>;
+ <span class="doccomment">/// Store the sync time
+ </span><span class="kw">fn </span>set_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>, sync_time: SyncTime) -> <span class="prelude-ty">Result</span><(), Error>;
+
+ <span class="doccomment">/// Delete a script_pubkey given the keychain and its child number.
+ </span><span class="kw">fn </span>del_script_pubkey_from_path(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error>;
+ <span class="doccomment">/// Delete the data related to a specific script_pubkey, meaning the keychain and the child
+ /// number.
+ </span><span class="kw">fn </span>del_path_from_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error>;
+ <span class="doccomment">/// Delete a [`LocalUtxo`] given its [`OutPoint`]
+ </span><span class="kw">fn </span>del_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error>;
+ <span class="doccomment">/// Delete a raw transaction given its [`Txid`]
+ </span><span class="kw">fn </span>del_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error>;
+ <span class="doccomment">/// Delete the metadata of a transaction and optionally the raw transaction itself
+ </span><span class="kw">fn </span>del_tx(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ txid: <span class="kw-2">&</span>Txid,
+ include_raw: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error>;
+ <span class="doccomment">/// Delete the last derivation index for a keychain.
+ </span><span class="kw">fn </span>del_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error>;
+ <span class="doccomment">/// Reset the sync time to `None`
+ ///
+ /// Returns the removed value
+ </span><span class="kw">fn </span>del_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error>;
}
-<span class="doccomment">/// Trait for reading data from a database</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This traits defines the operations that can be used to read data out of a database</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Database</span>: <span class="ident">BatchOperations</span> {
- <span class="doccomment">/// Read and checks the descriptor checksum for a given keychain.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Should return [`Error::ChecksumMismatch`](crate::error::Error::ChecksumMismatch) if the</span>
- <span class="doccomment">/// checksum doesn't match. If there's no checksum in the database, simply store it for the</span>
- <span class="doccomment">/// next time.</span>
- <span class="kw">fn</span> <span class="ident">check_descriptor_checksum</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">AsRef</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span><span class="op">></span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">bytes</span>: <span class="ident">B</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
-
- <span class="doccomment">/// Return the list of script_pubkeys</span>
- <span class="kw">fn</span> <span class="ident">iter_script_pubkeys</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Return the list of [`LocalUtxo`]s</span>
- <span class="kw">fn</span> <span class="ident">iter_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Return the list of raw transactions</span>
- <span class="kw">fn</span> <span class="ident">iter_raw_txs</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Return the list of transactions metadata</span>
- <span class="kw">fn</span> <span class="ident">iter_txs</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
-
- <span class="doccomment">/// Fetch a script_pubkey given the child number of a keychain.</span>
- <span class="kw">fn</span> <span class="ident">get_script_pubkey_from_path</span>(
+<span class="doccomment">/// Trait for reading data from a database
+///
+/// This traits defines the operations that can be used to read data out of a database
+</span><span class="kw">pub trait </span>Database: BatchOperations {
+ <span class="doccomment">/// Read and checks the descriptor checksum for a given keychain.
+ ///
+ /// Should return [`Error::ChecksumMismatch`](crate::error::Error::ChecksumMismatch) if the
+ /// checksum doesn't match. If there's no checksum in the database, simply store it for the
+ /// next time.
+ </span><span class="kw">fn </span>check_descriptor_checksum<B: AsRef<[u8]>>(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ bytes: B,
+ ) -> <span class="prelude-ty">Result</span><(), Error>;
+
+ <span class="doccomment">/// Return the list of script_pubkeys
+ </span><span class="kw">fn </span>iter_script_pubkeys(<span class="kw-2">&</span><span class="self">self</span>, keychain: <span class="prelude-ty">Option</span><KeychainKind>) -> <span class="prelude-ty">Result</span><Vec<Script>, Error>;
+ <span class="doccomment">/// Return the list of [`LocalUtxo`]s
+ </span><span class="kw">fn </span>iter_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error>;
+ <span class="doccomment">/// Return the list of raw transactions
+ </span><span class="kw">fn </span>iter_raw_txs(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Transaction>, Error>;
+ <span class="doccomment">/// Return the list of transactions metadata
+ </span><span class="kw">fn </span>iter_txs(<span class="kw-2">&</span><span class="self">self</span>, include_raw: bool) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error>;
+
+ <span class="doccomment">/// Fetch a script_pubkey given the child number of a keychain.
+ </span><span class="kw">fn </span>get_script_pubkey_from_path(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Fetch the keychain and child number of a given script_pubkey</span>
- <span class="kw">fn</span> <span class="ident">get_path_from_script_pubkey</span>(
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error>;
+ <span class="doccomment">/// Fetch the keychain and child number of a given script_pubkey
+ </span><span class="kw">fn </span>get_path_from_script_pubkey(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Fetch a [`LocalUtxo`] given its [`OutPoint`]</span>
- <span class="kw">fn</span> <span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Fetch a raw transaction given its [`Txid`]</span>
- <span class="kw">fn</span> <span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Fetch the transaction metadata and optionally also the raw transaction</span>
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Return the last derivation index for a keychain.</span>
- <span class="kw">fn</span> <span class="ident">get_last_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
- <span class="doccomment">/// Return the sync time, if present</span>
- <span class="kw">fn</span> <span class="ident">get_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>;
-
- <span class="doccomment">/// Increment the last derivation index for a keychain and return it</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// It should insert and return `0` if not present in the database</span>
- <span class="kw">fn</span> <span class="ident">increment_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span>;
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error>;
+ <span class="doccomment">/// Fetch a [`LocalUtxo`] given its [`OutPoint`]
+ </span><span class="kw">fn </span>get_utxo(<span class="kw-2">&</span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error>;
+ <span class="doccomment">/// Fetch a raw transaction given its [`Txid`]
+ </span><span class="kw">fn </span>get_raw_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error>;
+ <span class="doccomment">/// Fetch the transaction metadata and optionally also the raw transaction
+ </span><span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, include_raw: bool) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error>;
+ <span class="doccomment">/// Return the last derivation index for a keychain.
+ </span><span class="kw">fn </span>get_last_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error>;
+ <span class="doccomment">/// Return the sync time, if present
+ </span><span class="kw">fn </span>get_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error>;
+
+ <span class="doccomment">/// Increment the last derivation index for a keychain and return it
+ ///
+ /// It should insert and return `0` if not present in the database
+ </span><span class="kw">fn </span>increment_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error>;
}
-<span class="doccomment">/// Trait for a database that supports batch operations</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait defines the methods to start and apply a batch of operations.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">BatchDatabase</span>: <span class="ident">Database</span> {
- <span class="doccomment">/// Container for the operations</span>
- <span class="kw">type</span> <span class="ident">Batch</span>: <span class="ident">BatchOperations</span>;
-
- <span class="doccomment">/// Create a new batch container</span>
- <span class="kw">fn</span> <span class="ident">begin_batch</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident"><span class="self">Self</span>::Batch</span>;
- <span class="doccomment">/// Consume and apply a batch of operations</span>
- <span class="kw">fn</span> <span class="ident">commit_batch</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">batch</span>: <span class="ident"><span class="self">Self</span>::Batch</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span>;
+<span class="doccomment">/// Trait for a database that supports batch operations
+///
+/// This trait defines the methods to start and apply a batch of operations.
+</span><span class="kw">pub trait </span>BatchDatabase: Database {
+ <span class="doccomment">/// Container for the operations
+ </span><span class="kw">type </span>Batch: BatchOperations;
+
+ <span class="doccomment">/// Create a new batch container
+ </span><span class="kw">fn </span>begin_batch(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self</span>::Batch;
+ <span class="doccomment">/// Consume and apply a batch of operations
+ </span><span class="kw">fn </span>commit_batch(<span class="kw-2">&mut </span><span class="self">self</span>, batch: <span class="self">Self</span>::Batch) -> <span class="prelude-ty">Result</span><(), Error>;
}
-<span class="doccomment">/// Trait for [`Database`] types that can be created given a configuration</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">ConfigurableDatabase</span>: <span class="ident">Database</span> <span class="op">+</span> <span class="ident">Sized</span> {
- <span class="doccomment">/// Type that contains the configuration</span>
- <span class="kw">type</span> <span class="ident">Config</span>: <span class="ident">std::fmt::Debug</span>;
+<span class="doccomment">/// Trait for [`Database`] types that can be created given a configuration
+</span><span class="kw">pub trait </span>ConfigurableDatabase: Database + Sized {
+ <span class="doccomment">/// Type that contains the configuration
+ </span><span class="kw">type </span>Config: std::fmt::Debug;
- <span class="doccomment">/// Create a new instance given a configuration</span>
- <span class="kw">fn</span> <span class="ident">from_config</span>(<span class="ident">config</span>: <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Config</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span>;
+ <span class="doccomment">/// Create a new instance given a configuration
+ </span><span class="kw">fn </span>from_config(config: <span class="kw-2">&</span><span class="self">Self</span>::Config) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error>;
}
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait</span> <span class="ident">DatabaseUtils</span>: <span class="ident">Database</span> {
- <span class="kw">fn</span> <span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="ident">script</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">o</span><span class="op">|</span> <span class="ident">o</span>.<span class="ident">is_some</span>())
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait </span>DatabaseUtils: Database {
+ <span class="kw">fn </span>is_mine(<span class="kw-2">&</span><span class="self">self</span>, script: <span class="kw-2">&</span>Script) -> <span class="prelude-ty">Result</span><bool, Error> {
+ <span class="self">self</span>.get_path_from_script_pubkey(script)
+ .map(|o| o.is_some())
}
- <span class="kw">fn</span> <span class="ident">get_raw_tx_or</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">default</span>: <span class="ident">D</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>
- <span class="kw">where</span>
- <span class="ident">D</span>: <span class="ident">FnOnce</span>() -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span>,
+ <span class="kw">fn </span>get_raw_tx_or<D>(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, default: D) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error>
+ <span class="kw">where
+ </span>D: FnOnce() -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error>,
{
- <span class="self">self</span>.<span class="ident">get_tx</span>(<span class="ident">txid</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">t</span><span class="op">|</span> <span class="ident">t</span>.<span class="ident">transaction</span>)
- .<span class="ident">map_or_else</span>(<span class="ident">default</span>, <span class="op">|</span><span class="ident">t</span><span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">t</span>)))
+ <span class="self">self</span>.get_tx(txid, <span class="bool-val">true</span>)<span class="question-mark">?
+ </span>.and_then(|t| t.transaction)
+ .map_or_else(default, |t| <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(t)))
}
- <span class="kw">fn</span> <span class="ident">get_previous_output</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>.<span class="ident">txid</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">previous_tx</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">outpoint</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span> <span class="op">></span><span class="op">=</span> <span class="ident">previous_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>() {
- <span class="prelude-val">Err</span>(<span class="ident">Error::InvalidOutpoint</span>(<span class="kw-2">*</span><span class="ident">outpoint</span>))
- } <span class="kw">else</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">previous_tx</span>.<span class="ident">output</span>[<span class="ident">outpoint</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>].<span class="ident">clone</span>())
+ <span class="kw">fn </span>get_previous_output(<span class="kw-2">&</span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TxOut>, Error> {
+ <span class="self">self</span>.get_raw_tx(<span class="kw-2">&</span>outpoint.txid)<span class="question-mark">?
+ </span>.map(|previous_tx| {
+ <span class="kw">if </span>outpoint.vout <span class="kw">as </span>usize >= previous_tx.output.len() {
+ <span class="prelude-val">Err</span>(Error::InvalidOutpoint(<span class="kw-2">*</span>outpoint))
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Ok</span>(previous_tx.output[outpoint.vout <span class="kw">as </span>usize].clone())
}
})
- .<span class="ident">transpose</span>()
+ .transpose()
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">Database</span><span class="op">></span> <span class="ident">DatabaseUtils</span> <span class="kw">for</span> <span class="ident">T</span> {}
+<span class="kw">impl</span><T: Database> DatabaseUtils <span class="kw">for </span>T {}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">pub mod </span>test {
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">use</span> <span class="ident">bitcoin::consensus::encode::deserialize</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::consensus::serialize</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident">bitcoin</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span>bitcoin::consensus::encode::deserialize;
+ <span class="kw">use </span>bitcoin::consensus::serialize;
+ <span class="kw">use </span>bitcoin::hashes::hex::<span class="kw-2">*</span>;
+ <span class="kw">use </span>bitcoin::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_script_pubkey</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">pub fn </span>test_script_pubkey<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
+ db.set_script_pubkey(<span class="kw-2">&</span>script, keychain, path).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">script</span>.<span class="ident">clone</span>())
+ db.get_script_pubkey_from_path(keychain, path).unwrap(),
+ <span class="prelude-val">Some</span>(script.clone())
);
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">path</span>))
+ db.get_path_from_script_pubkey(<span class="kw-2">&</span>script).unwrap(),
+ <span class="prelude-val">Some</span>((keychain, path))
);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_batch_script_pubkey</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">batch</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">begin_batch</span>();
+ <span class="kw">pub fn </span>test_batch_script_pubkey<D: BatchDatabase>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span><span class="kw-2">mut </span>batch = db.begin_batch();
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="ident">batch</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
+ batch.set_script_pubkey(<span class="kw-2">&</span>script, keychain, path).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">None</span>
- );
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>).<span class="ident">unwrap</span>(), <span class="prelude-val">None</span>);
+ db.get_script_pubkey_from_path(keychain, path).unwrap(),
+ <span class="prelude-val">None
+ </span>);
+ <span class="macro">assert_eq!</span>(db.get_path_from_script_pubkey(<span class="kw-2">&</span>script).unwrap(), <span class="prelude-val">None</span>);
- <span class="ident">db</span>.<span class="ident">commit_batch</span>(<span class="ident">batch</span>).<span class="ident">unwrap</span>();
+ db.commit_batch(batch).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">script</span>.<span class="ident">clone</span>())
+ db.get_script_pubkey_from_path(keychain, path).unwrap(),
+ <span class="prelude-val">Some</span>(script.clone())
);
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">path</span>))
+ db.get_path_from_script_pubkey(<span class="kw-2">&</span>script).unwrap(),
+ <span class="prelude-val">Some</span>((keychain, path))
);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_iter_script_pubkey</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">pub fn </span>test_iter_script_pubkey<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
+ db.set_script_pubkey(<span class="kw-2">&</span>script, keychain, path).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">None</span>).<span class="ident">unwrap</span>().<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(db.iter_script_pubkeys(<span class="prelude-val">None</span>).unwrap().len(), <span class="number">1</span>);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_del_script_pubkey</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">pub fn </span>test_del_script_pubkey<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">None</span>).<span class="ident">unwrap</span>().<span class="ident">len</span>(), <span class="number">1</span>);
+ db.set_script_pubkey(<span class="kw-2">&</span>script, keychain, path).unwrap();
+ <span class="macro">assert_eq!</span>(db.iter_script_pubkeys(<span class="prelude-val">None</span>).unwrap().len(), <span class="number">1</span>);
- <span class="ident">db</span>.<span class="ident">del_script_pubkey_from_path</span>(<span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">None</span>).<span class="ident">unwrap</span>().<span class="ident">len</span>(), <span class="number">0</span>);
+ db.del_script_pubkey_from_path(keychain, path).unwrap();
+ <span class="macro">assert_eq!</span>(db.iter_script_pubkeys(<span class="prelude-val">None</span>).unwrap().len(), <span class="number">0</span>);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_utxo</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">OutPoint::from_str</span>(
+ <span class="kw">pub fn </span>test_utxo<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>outpoint = OutPoint::from_str(
<span class="string">"5df6e0e2761359d30a8275058e299fcc0381534545f55cf43e41983f5d4c9456:0"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ .unwrap();
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="number">133742</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">script</span>,
+ <span class="kw">let </span>txout = TxOut {
+ value: <span class="number">133742</span>,
+ script_pubkey: script,
};
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">LocalUtxo</span> {
- <span class="ident">txout</span>,
- <span class="ident">outpoint</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">true</span>,
+ <span class="kw">let </span>utxo = LocalUtxo {
+ txout,
+ outpoint,
+ keychain: KeychainKind::External,
+ is_spent: <span class="bool-val">true</span>,
};
- <span class="ident">db</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="ident">utxo</span>).<span class="ident">unwrap</span>();
- <span class="ident">db</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="ident">utxo</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">iter_utxos</span>().<span class="ident">unwrap</span>().<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>).<span class="ident">unwrap</span>(), <span class="prelude-val">Some</span>(<span class="ident">utxo</span>));
+ db.set_utxo(<span class="kw-2">&</span>utxo).unwrap();
+ db.set_utxo(<span class="kw-2">&</span>utxo).unwrap();
+ <span class="macro">assert_eq!</span>(db.iter_utxos().unwrap().len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(db.get_utxo(<span class="kw-2">&</span>outpoint).unwrap(), <span class="prelude-val">Some</span>(utxo));
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_raw_tx</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"02000000000101f58c18a90d7a76b30c7e47d4e817adfdd79a6a589a615ef36e360f913adce2cd0000000000feffffff0210270000000000001600145c9a1816d38db5cbdd4b067b689dc19eb7d930e2cf70aa2b080000001600140f48b63160043047f4f60f7f8f551f80458f693f024730440220413f42b7bc979945489a38f5221e5527d4b8e3aa63eae2099e01945896ad6c10022024ceec492d685c31d8adb64e935a06933877c5ae0e21f32efe029850914c5bad012102361caae96f0e9f3a453d354bb37a5c3244422fb22819bf0166c0647a38de39f21fca2300"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>test_raw_tx<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"02000000000101f58c18a90d7a76b30c7e47d4e817adfdd79a6a589a615ef36e360f913adce2cd0000000000feffffff0210270000000000001600145c9a1816d38db5cbdd4b067b689dc19eb7d930e2cf70aa2b080000001600140f48b63160043047f4f60f7f8f551f80458f693f024730440220413f42b7bc979945489a38f5221e5527d4b8e3aa63eae2099e01945896ad6c10022024ceec492d685c31d8adb64e935a06933877c5ae0e21f32efe029850914c5bad012102361caae96f0e9f3a453d354bb37a5c3244422fb22819bf0166c0647a38de39f21fca2300"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
- <span class="ident">db</span>.<span class="ident">set_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>).<span class="ident">unwrap</span>();
+ db.set_raw_tx(<span class="kw-2">&</span>tx).unwrap();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
+ <span class="kw">let </span>txid = tx.txid();
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">txid</span>).<span class="ident">unwrap</span>(), <span class="prelude-val">Some</span>(<span class="ident">tx</span>.<span class="ident">clone</span>()));
+ <span class="macro">assert_eq!</span>(db.get_raw_tx(<span class="kw-2">&</span>txid).unwrap(), <span class="prelude-val">Some</span>(tx.clone()));
- <span class="comment">// mutate transaction's witnesses</span>
- <span class="kw">for</span> <span class="ident">tx_in</span> <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">iter_mut</span>() {
- <span class="ident">tx_in</span>.<span class="ident">witness</span> <span class="op">=</span> <span class="ident">Witness::new</span>();
+ <span class="comment">// mutate transaction's witnesses
+ </span><span class="kw">for </span>tx_in <span class="kw">in </span>tx.input.iter_mut() {
+ tx_in.witness = Witness::new();
}
- <span class="kw">let</span> <span class="ident">updated_hex_tx</span> <span class="op">=</span> <span class="ident">serialize</span>(<span class="kw-2">&</span><span class="ident">tx</span>);
+ <span class="kw">let </span>updated_hex_tx = serialize(<span class="kw-2">&</span>tx);
- <span class="comment">// verify that mutation was successful</span>
- <span class="macro">assert_ne!</span>(<span class="ident">hex_tx</span>, <span class="ident">updated_hex_tx</span>);
+ <span class="comment">// verify that mutation was successful
+ </span><span class="macro">assert_ne!</span>(hex_tx, updated_hex_tx);
- <span class="ident">db</span>.<span class="ident">set_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>).<span class="ident">unwrap</span>();
+ db.set_raw_tx(<span class="kw-2">&</span>tx).unwrap();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
+ <span class="kw">let </span>txid = tx.txid();
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">txid</span>).<span class="ident">unwrap</span>(), <span class="prelude-val">Some</span>(<span class="ident">tx</span>));
+ <span class="macro">assert_eq!</span>(db.get_raw_tx(<span class="kw-2">&</span>txid).unwrap(), <span class="prelude-val">Some</span>(tx));
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_tx</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>),
- <span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1337</span>,
- <span class="ident">sent</span>: <span class="number">420420</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="number">140</span>),
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">timestamp</span>: <span class="number">123456</span>,
- <span class="ident">height</span>: <span class="number">1000</span>,
+ <span class="kw">pub fn </span>test_tx<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).unwrap();
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">Some</span>(tx),
+ txid,
+ received: <span class="number">1337</span>,
+ sent: <span class="number">420420</span>,
+ fee: <span class="prelude-val">Some</span>(<span class="number">140</span>),
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ timestamp: <span class="number">123456</span>,
+ height: <span class="number">1000</span>,
}),
};
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>).<span class="ident">unwrap</span>();
+ db.set_tx(<span class="kw-2">&</span>tx_details).unwrap();
- <span class="comment">// get with raw tx too</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>.<span class="ident">txid</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">tx_details</span>.<span class="ident">clone</span>())
+ <span class="comment">// get with raw tx too
+ </span><span class="macro">assert_eq!</span>(
+ db.get_tx(<span class="kw-2">&</span>tx_details.txid, <span class="bool-val">true</span>).unwrap(),
+ <span class="prelude-val">Some</span>(tx_details.clone())
);
- <span class="comment">// get only raw_tx</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>.<span class="ident">txid</span>).<span class="ident">unwrap</span>(),
- <span class="ident">tx_details</span>.<span class="ident">transaction</span>
+ <span class="comment">// get only raw_tx
+ </span><span class="macro">assert_eq!</span>(
+ db.get_raw_tx(<span class="kw-2">&</span>tx_details.txid).unwrap(),
+ tx_details.transaction
);
- <span class="comment">// now get without raw_tx</span>
- <span class="ident">tx_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+ <span class="comment">// now get without raw_tx
+ </span>tx_details.transaction = <span class="prelude-val">None</span>;
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>.<span class="ident">txid</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">tx_details</span>)
+ db.get_tx(<span class="kw-2">&</span>tx_details.txid, <span class="bool-val">false</span>).unwrap(),
+ <span class="prelude-val">Some</span>(tx_details)
);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_list_transaction</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>),
- <span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1337</span>,
- <span class="ident">sent</span>: <span class="number">420420</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="number">140</span>),
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">timestamp</span>: <span class="number">123456</span>,
- <span class="ident">height</span>: <span class="number">1000</span>,
+ <span class="kw">pub fn </span>test_list_transaction<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).unwrap();
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">Some</span>(tx),
+ txid,
+ received: <span class="number">1337</span>,
+ sent: <span class="number">420420</span>,
+ fee: <span class="prelude-val">Some</span>(<span class="number">140</span>),
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ timestamp: <span class="number">123456</span>,
+ height: <span class="number">1000</span>,
}),
};
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>).<span class="ident">unwrap</span>();
+ db.set_tx(<span class="kw-2">&</span>tx_details).unwrap();
- <span class="comment">// get raw tx</span>
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">iter_txs</span>(<span class="bool-val">true</span>).<span class="ident">unwrap</span>(), <span class="macro">vec!</span>[<span class="ident">tx_details</span>.<span class="ident">clone</span>()]);
+ <span class="comment">// get raw tx
+ </span><span class="macro">assert_eq!</span>(db.iter_txs(<span class="bool-val">true</span>).unwrap(), <span class="macro">vec!</span>[tx_details.clone()]);
- <span class="comment">// now get without raw tx</span>
- <span class="ident">tx_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+ <span class="comment">// now get without raw tx
+ </span>tx_details.transaction = <span class="prelude-val">None</span>;
- <span class="comment">// get not raw tx</span>
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">iter_txs</span>(<span class="bool-val">false</span>).<span class="ident">unwrap</span>(), <span class="macro">vec!</span>[<span class="ident">tx_details</span>.<span class="ident">clone</span>()]);
+ <span class="comment">// get not raw tx
+ </span><span class="macro">assert_eq!</span>(db.iter_txs(<span class="bool-val">false</span>).unwrap(), <span class="macro">vec!</span>[tx_details.clone()]);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_last_index</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="ident">db</span>.<span class="ident">set_last_index</span>(<span class="ident">KeychainKind::External</span>, <span class="number">1337</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>test_last_index<D: Database>(<span class="kw-2">mut </span>db: D) {
+ db.set_last_index(KeychainKind::External, <span class="number">1337</span>).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="ident">KeychainKind::External</span>).<span class="ident">unwrap</span>(),
+ db.get_last_index(KeychainKind::External).unwrap(),
<span class="prelude-val">Some</span>(<span class="number">1337</span>)
);
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="ident">KeychainKind::Internal</span>).<span class="ident">unwrap</span>(), <span class="prelude-val">None</span>);
+ <span class="macro">assert_eq!</span>(db.get_last_index(KeychainKind::Internal).unwrap(), <span class="prelude-val">None</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">increment_last_index</span>(<span class="ident">KeychainKind::External</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>, <span class="number">1338</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">increment_last_index</span>(<span class="ident">KeychainKind::Internal</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>, <span class="number">0</span>);
+ <span class="kw">let </span>res = db.increment_last_index(KeychainKind::External).unwrap();
+ <span class="macro">assert_eq!</span>(res, <span class="number">1338</span>);
+ <span class="kw">let </span>res = db.increment_last_index(KeychainKind::Internal).unwrap();
+ <span class="macro">assert_eq!</span>(res, <span class="number">0</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="ident">KeychainKind::External</span>).<span class="ident">unwrap</span>(),
+ db.get_last_index(KeychainKind::External).unwrap(),
<span class="prelude-val">Some</span>(<span class="number">1338</span>)
);
- <span class="macro">assert_eq!</span>(<span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="ident">KeychainKind::Internal</span>).<span class="ident">unwrap</span>(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+ <span class="macro">assert_eq!</span>(db.get_last_index(KeychainKind::Internal).unwrap(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_sync_time</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="macro">assert!</span>(<span class="ident">db</span>.<span class="ident">get_sync_time</span>().<span class="ident">unwrap</span>().<span class="ident">is_none</span>());
+ <span class="kw">pub fn </span>test_sync_time<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="macro">assert!</span>(db.get_sync_time().unwrap().is_none());
- <span class="ident">db</span>.<span class="ident">set_sync_time</span>(<span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">100</span>,
- <span class="ident">timestamp</span>: <span class="number">1000</span>,
+ db.set_sync_time(SyncTime {
+ block_time: BlockTime {
+ height: <span class="number">100</span>,
+ timestamp: <span class="number">1000</span>,
},
})
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_sync_time</span>().<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">extracted</span>.<span class="ident">is_some</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>().<span class="ident">block_time</span>.<span class="ident">height</span>, <span class="number">100</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>().<span class="ident">block_time</span>.<span class="ident">timestamp</span>, <span class="number">1000</span>);
+ <span class="kw">let </span>extracted = db.get_sync_time().unwrap();
+ <span class="macro">assert!</span>(extracted.is_some());
+ <span class="macro">assert_eq!</span>(extracted.as_ref().unwrap().block_time.height, <span class="number">100</span>);
+ <span class="macro">assert_eq!</span>(extracted.as_ref().unwrap().block_time.timestamp, <span class="number">1000</span>);
- <span class="ident">db</span>.<span class="ident">del_sync_time</span>().<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">db</span>.<span class="ident">get_sync_time</span>().<span class="ident">unwrap</span>().<span class="ident">is_none</span>());
+ db.del_sync_time().unwrap();
+ <span class="macro">assert!</span>(db.get_sync_time().unwrap().is_none());
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_iter_raw_txs</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">txs</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_raw_txs</span>().<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">txs</span>.<span class="ident">is_empty</span>());
+ <span class="kw">pub fn </span>test_iter_raw_txs<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>txs = db.iter_raw_txs().unwrap();
+ <span class="macro">assert!</span>(txs.is_empty());
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">first_tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).unwrap();
+ <span class="kw">let </span>first_tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"02000000000101f58c18a90d7a76b30c7e47d4e817adfdd79a6a589a615ef36e360f913adce2cd0000000000feffffff0210270000000000001600145c9a1816d38db5cbdd4b067b689dc19eb7d930e2cf70aa2b080000001600140f48b63160043047f4f60f7f8f551f80458f693f024730440220413f42b7bc979945489a38f5221e5527d4b8e3aa63eae2099e01945896ad6c10022024ceec492d685c31d8adb64e935a06933877c5ae0e21f32efe029850914c5bad012102361caae96f0e9f3a453d354bb37a5c3244422fb22819bf0166c0647a38de39f21fca2300"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">second_tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"02000000000101f58c18a90d7a76b30c7e47d4e817adfdd79a6a589a615ef36e360f913adce2cd0000000000feffffff0210270000000000001600145c9a1816d38db5cbdd4b067b689dc19eb7d930e2cf70aa2b080000001600140f48b63160043047f4f60f7f8f551f80458f693f024730440220413f42b7bc979945489a38f5221e5527d4b8e3aa63eae2099e01945896ad6c10022024ceec492d685c31d8adb64e935a06933877c5ae0e21f32efe029850914c5bad012102361caae96f0e9f3a453d354bb37a5c3244422fb22819bf0166c0647a38de39f21fca2300"</span>).unwrap();
+ <span class="kw">let </span>second_tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
- <span class="ident">db</span>.<span class="ident">set_raw_tx</span>(<span class="kw-2">&</span><span class="ident">first_tx</span>).<span class="ident">unwrap</span>();
- <span class="ident">db</span>.<span class="ident">set_raw_tx</span>(<span class="kw-2">&</span><span class="ident">second_tx</span>).<span class="ident">unwrap</span>();
+ db.set_raw_tx(<span class="kw-2">&</span>first_tx).unwrap();
+ db.set_raw_tx(<span class="kw-2">&</span>second_tx).unwrap();
- <span class="kw">let</span> <span class="ident">txs</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_raw_txs</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>txs = db.iter_raw_txs().unwrap();
- <span class="macro">assert!</span>(<span class="ident">txs</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">first_tx</span>));
- <span class="macro">assert!</span>(<span class="ident">txs</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">second_tx</span>));
- <span class="macro">assert_eq!</span>(<span class="ident">txs</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="macro">assert!</span>(txs.contains(<span class="kw-2">&</span>first_tx));
+ <span class="macro">assert!</span>(txs.contains(<span class="kw-2">&</span>second_tx));
+ <span class="macro">assert_eq!</span>(txs.len(), <span class="number">2</span>);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_del_path_from_script_pubkey</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">pub fn </span>test_del_path_from_script_pubkey<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.del_path_from_script_pubkey(<span class="kw-2">&</span>script).unwrap();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="macro">assert!</span>(res.is_none());
- <span class="kw">let</span> <span class="ident">_res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>);
- <span class="kw">let</span> (<span class="ident">chain</span>, <span class="ident">child</span>) <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>_res = db.set_script_pubkey(<span class="kw-2">&</span>script, keychain, path);
+ <span class="kw">let </span>(chain, child) = db.del_path_from_script_pubkey(<span class="kw-2">&</span>script).unwrap().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">chain</span>, <span class="ident">keychain</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">child</span>, <span class="ident">path</span>);
+ <span class="macro">assert_eq!</span>(chain, keychain);
+ <span class="macro">assert_eq!</span>(child, path);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_path_from_script_pubkey(<span class="kw-2">&</span>script).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_iter_script_pubkeys</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
- <span class="kw">let</span> <span class="ident">scripts</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">Some</span>(<span class="ident">keychain</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">scripts</span>.<span class="ident">is_empty</span>());
+ <span class="kw">pub fn </span>test_iter_script_pubkeys<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>keychain = KeychainKind::External;
+ <span class="kw">let </span>scripts = db.iter_script_pubkeys(<span class="prelude-val">Some</span>(keychain)).unwrap();
+ <span class="macro">assert!</span>(scripts.is_empty());
- <span class="kw">let</span> <span class="ident">first_script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>first_script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
- <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">first_script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
+ db.set_script_pubkey(<span class="kw-2">&</span>first_script, keychain, path).unwrap();
- <span class="kw">let</span> <span class="ident">second_script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"00145c9a1816d38db5cbdd4b067b689dc19eb7d930e2"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>second_script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"00145c9a1816d38db5cbdd4b067b689dc19eb7d930e2"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">57</span>;
+ <span class="kw">let </span>path = <span class="number">57</span>;
- <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">second_script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">scripts</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">iter_script_pubkeys</span>(<span class="prelude-val">Some</span>(<span class="ident">keychain</span>)).<span class="ident">unwrap</span>();
+ db.set_script_pubkey(<span class="kw-2">&</span>second_script, keychain, path)
+ .unwrap();
+ <span class="kw">let </span>scripts = db.iter_script_pubkeys(<span class="prelude-val">Some</span>(keychain)).unwrap();
- <span class="macro">assert!</span>(<span class="ident">scripts</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">first_script</span>));
- <span class="macro">assert!</span>(<span class="ident">scripts</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">second_script</span>));
- <span class="macro">assert_eq!</span>(<span class="ident">scripts</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="macro">assert!</span>(scripts.contains(<span class="kw-2">&</span>first_script));
+ <span class="macro">assert!</span>(scripts.contains(<span class="kw-2">&</span>second_script));
+ <span class="macro">assert_eq!</span>(scripts.len(), <span class="number">2</span>);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_del_utxo</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">OutPoint::from_str</span>(
+ <span class="kw">pub fn </span>test_del_utxo<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>outpoint = OutPoint::from_str(
<span class="string">"5df6e0e2761359d30a8275058e299fcc0381534545f55cf43e41983f5d4c9456:0"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ .unwrap();
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="number">133742</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">script</span>,
+ <span class="kw">let </span>txout = TxOut {
+ value: <span class="number">133742</span>,
+ script_pubkey: script,
};
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">LocalUtxo</span> {
- <span class="ident">txout</span>,
- <span class="ident">outpoint</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">true</span>,
+ <span class="kw">let </span>utxo = LocalUtxo {
+ txout,
+ outpoint,
+ keychain: KeychainKind::External,
+ is_spent: <span class="bool-val">true</span>,
};
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.del_utxo(<span class="kw-2">&</span>outpoint).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
- <span class="ident">db</span>.<span class="ident">set_utxo</span>(<span class="kw-2">&</span><span class="ident">utxo</span>).<span class="ident">unwrap</span>();
+ db.set_utxo(<span class="kw-2">&</span>utxo).unwrap();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.del_utxo(<span class="kw-2">&</span>outpoint).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>.<span class="ident">unwrap</span>(), <span class="ident">utxo</span>);
+ <span class="macro">assert_eq!</span>(res.unwrap(), utxo);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_utxo(<span class="kw-2">&</span>outpoint).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_del_raw_tx</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"02000000000101f58c18a90d7a76b30c7e47d4e817adfdd79a6a589a615ef36e360f913adce2cd0000000000feffffff0210270000000000001600145c9a1816d38db5cbdd4b067b689dc19eb7d930e2cf70aa2b080000001600140f48b63160043047f4f60f7f8f551f80458f693f024730440220413f42b7bc979945489a38f5221e5527d4b8e3aa63eae2099e01945896ad6c10022024ceec492d685c31d8adb64e935a06933877c5ae0e21f32efe029850914c5bad012102361caae96f0e9f3a453d354bb37a5c3244422fb22819bf0166c0647a38de39f21fca2300"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
+ <span class="kw">pub fn </span>test_del_raw_tx<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"02000000000101f58c18a90d7a76b30c7e47d4e817adfdd79a6a589a615ef36e360f913adce2cd0000000000feffffff0210270000000000001600145c9a1816d38db5cbdd4b067b689dc19eb7d930e2cf70aa2b080000001600140f48b63160043047f4f60f7f8f551f80458f693f024730440220413f42b7bc979945489a38f5221e5527d4b8e3aa63eae2099e01945896ad6c10022024ceec492d685c31d8adb64e935a06933877c5ae0e21f32efe029850914c5bad012102361caae96f0e9f3a453d354bb37a5c3244422fb22819bf0166c0647a38de39f21fca2300"</span>).unwrap();
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>()).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.del_raw_tx(<span class="kw-2">&</span>tx.txid()).unwrap();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="macro">assert!</span>(res.is_none());
- <span class="ident">db</span>.<span class="ident">set_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>).<span class="ident">unwrap</span>();
+ db.set_raw_tx(<span class="kw-2">&</span>tx).unwrap();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>()).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.del_raw_tx(<span class="kw-2">&</span>tx.txid()).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>.<span class="ident">unwrap</span>(), <span class="ident">tx</span>);
+ <span class="macro">assert_eq!</span>(res.unwrap(), tx);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_raw_tx(<span class="kw-2">&</span>tx.txid()).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_del_tx</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">hex_tx</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">hex_tx</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>.<span class="ident">clone</span>()),
- <span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1337</span>,
- <span class="ident">sent</span>: <span class="number">420420</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="number">140</span>),
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">timestamp</span>: <span class="number">123456</span>,
- <span class="ident">height</span>: <span class="number">1000</span>,
+ <span class="kw">pub fn </span>test_del_tx<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>hex_tx = Vec::<u8>::from_hex(<span class="string">"0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000"</span>).unwrap();
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>hex_tx).unwrap();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">Some</span>(tx.clone()),
+ txid,
+ received: <span class="number">1337</span>,
+ sent: <span class="number">420420</span>,
+ fee: <span class="prelude-val">Some</span>(<span class="number">140</span>),
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ timestamp: <span class="number">123456</span>,
+ height: <span class="number">1000</span>,
}),
};
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.del_tx(<span class="kw-2">&</span>tx.txid(), <span class="bool-val">true</span>).unwrap();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="macro">assert!</span>(res.is_none());
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>).<span class="ident">unwrap</span>();
+ db.set_tx(<span class="kw-2">&</span>tx_details).unwrap();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="bool-val">false</span>).<span class="ident">unwrap</span>();
- <span class="ident">tx_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>.<span class="ident">unwrap</span>(), <span class="ident">tx_details</span>);
+ <span class="kw">let </span>res = db.del_tx(<span class="kw-2">&</span>tx.txid(), <span class="bool-val">false</span>).unwrap();
+ tx_details.transaction = <span class="prelude-val">None</span>;
+ <span class="macro">assert_eq!</span>(res.unwrap(), tx_details);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_tx(<span class="kw-2">&</span>tx.txid(), <span class="bool-val">true</span>).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>.<span class="ident">unwrap</span>(), <span class="ident">tx</span>);
+ <span class="kw">let </span>res = db.get_raw_tx(<span class="kw-2">&</span>tx.txid()).unwrap();
+ <span class="macro">assert_eq!</span>(res.unwrap(), tx);
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">tx_details</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
- <span class="ident">tx_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>.<span class="ident">clone</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>.<span class="ident">unwrap</span>(), <span class="ident">tx_details</span>);
+ db.set_tx(<span class="kw-2">&</span>tx_details).unwrap();
+ <span class="kw">let </span>res = db.del_tx(<span class="kw-2">&</span>tx.txid(), <span class="bool-val">true</span>).unwrap();
+ tx_details.transaction = <span class="prelude-val">Some</span>(tx.clone());
+ <span class="macro">assert_eq!</span>(res.unwrap(), tx_details);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>(), <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_tx(<span class="kw-2">&</span>tx.txid(), <span class="bool-val">true</span>).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">txid</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_raw_tx(<span class="kw-2">&</span>tx.txid()).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_del_last_index</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">pub fn </span>test_del_last_index<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="kw">let</span> <span class="ident">_res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">increment_last_index</span>(<span class="ident">keychain</span>);
+ <span class="kw">let </span>_res = db.increment_last_index(keychain);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="ident">keychain</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.get_last_index(keychain).unwrap().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>, <span class="number">0</span>);
+ <span class="macro">assert_eq!</span>(res, <span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">_res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">increment_last_index</span>(<span class="ident">keychain</span>);
+ <span class="kw">let </span>_res = db.increment_last_index(keychain);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">del_last_index</span>(<span class="ident">keychain</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>res = db.del_last_index(keychain).unwrap().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">res</span>, <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(res, <span class="number">1</span>);
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">get_last_index</span>(<span class="ident">keychain</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_none</span>());
+ <span class="kw">let </span>res = db.get_last_index(keychain).unwrap();
+ <span class="macro">assert!</span>(res.is_none());
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_check_descriptor_checksum</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(<span class="kw-2">mut</span> <span class="ident">db</span>: <span class="ident">D</span>) {
- <span class="comment">// insert checksum associated to keychain</span>
- <span class="kw">let</span> <span class="ident">checksum</span> <span class="op">=</span> <span class="string">"1cead456"</span>.<span class="ident">as_bytes</span>();
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
- <span class="kw">let</span> <span class="ident">_res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">keychain</span>, <span class="ident">checksum</span>);
-
- <span class="comment">// check if `check_descriptor_checksum` throws</span>
- <span class="comment">// `Error::ChecksumMismatch` error if the</span>
- <span class="comment">// function is passed a checksum that does</span>
- <span class="comment">// not match the one initially inserted</span>
- <span class="kw">let</span> <span class="ident">checksum</span> <span class="op">=</span> <span class="string">"1cead454"</span>.<span class="ident">as_bytes</span>();
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
- <span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">keychain</span>, <span class="ident">checksum</span>);
-
- <span class="macro">assert!</span>(<span class="ident">res</span>.<span class="ident">is_err</span>());
+ <span class="kw">pub fn </span>test_check_descriptor_checksum<D: Database>(<span class="kw-2">mut </span>db: D) {
+ <span class="comment">// insert checksum associated to keychain
+ </span><span class="kw">let </span>checksum = <span class="string">"1cead456"</span>.as_bytes();
+ <span class="kw">let </span>keychain = KeychainKind::External;
+ <span class="kw">let </span>_res = db.check_descriptor_checksum(keychain, checksum);
+
+ <span class="comment">// check if `check_descriptor_checksum` throws
+ // `Error::ChecksumMismatch` error if the
+ // function is passed a checksum that does
+ // not match the one initially inserted
+ </span><span class="kw">let </span>checksum = <span class="string">"1cead454"</span>.as_bytes();
+ <span class="kw">let </span>keychain = KeychainKind::External;
+ <span class="kw">let </span>res = db.check_descriptor_checksum(keychain, checksum);
+
+ <span class="macro">assert!</span>(res.is_err());
}
- <span class="comment">// TODO: more tests...</span>
-}
+ <span class="comment">// TODO: more tests...
+</span>}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/sqlite.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sqlite.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-<span id="1001">1001</span>
-<span id="1002">1002</span>
-<span id="1003">1003</span>
-<span id="1004">1004</span>
-<span id="1005">1005</span>
-<span id="1006">1006</span>
-<span id="1007">1007</span>
-<span id="1008">1008</span>
-<span id="1009">1009</span>
-<span id="1010">1010</span>
-<span id="1011">1011</span>
-<span id="1012">1012</span>
-<span id="1013">1013</span>
-<span id="1014">1014</span>
-<span id="1015">1015</span>
-<span id="1016">1016</span>
-<span id="1017">1017</span>
-<span id="1018">1018</span>
-<span id="1019">1019</span>
-<span id="1020">1020</span>
-<span id="1021">1021</span>
-<span id="1022">1022</span>
-<span id="1023">1023</span>
-<span id="1024">1024</span>
-<span id="1025">1025</span>
-<span id="1026">1026</span>
-<span id="1027">1027</span>
-<span id="1028">1028</span>
-<span id="1029">1029</span>
-<span id="1030">1030</span>
-<span id="1031">1031</span>
-<span id="1032">1032</span>
-<span id="1033">1033</span>
-<span id="1034">1034</span>
-<span id="1035">1035</span>
-<span id="1036">1036</span>
-<span id="1037">1037</span>
-<span id="1038">1038</span>
-<span id="1039">1039</span>
-<span id="1040">1040</span>
-<span id="1041">1041</span>
-<span id="1042">1042</span>
-<span id="1043">1043</span>
-<span id="1044">1044</span>
-<span id="1045">1045</span>
-<span id="1046">1046</span>
-<span id="1047">1047</span>
-<span id="1048">1048</span>
-<span id="1049">1049</span>
-<span id="1050">1050</span>
-<span id="1051">1051</span>
-<span id="1052">1052</span>
-<span id="1053">1053</span>
-<span id="1054">1054</span>
-<span id="1055">1055</span>
-<span id="1056">1056</span>
-<span id="1057">1057</span>
-<span id="1058">1058</span>
-<span id="1059">1059</span>
-<span id="1060">1060</span>
-<span id="1061">1061</span>
-<span id="1062">1062</span>
-<span id="1063">1063</span>
-<span id="1064">1064</span>
-<span id="1065">1065</span>
-<span id="1066">1066</span>
-<span id="1067">1067</span>
-<span id="1068">1068</span>
-<span id="1069">1069</span>
-<span id="1070">1070</span>
-<span id="1071">1071</span>
-<span id="1072">1072</span>
-<span id="1073">1073</span>
-<span id="1074">1074</span>
-<span id="1075">1075</span>
-<span id="1076">1076</span>
-<span id="1077">1077</span>
-<span id="1078">1078</span>
-<span id="1079">1079</span>
-<span id="1080">1080</span>
-<span id="1081">1081</span>
-<span id="1082">1082</span>
-<span id="1083">1083</span>
-<span id="1084">1084</span>
-<span id="1085">1085</span>
-<span id="1086">1086</span>
-<span id="1087">1087</span>
-<span id="1088">1088</span>
-<span id="1089">1089</span>
-<span id="1090">1090</span>
-<span id="1091">1091</span>
-<span id="1092">1092</span>
-<span id="1093">1093</span>
-<span id="1094">1094</span>
-<span id="1095">1095</span>
-<span id="1096">1096</span>
-<span id="1097">1097</span>
-<span id="1098">1098</span>
-<span id="1099">1099</span>
-<span id="1100">1100</span>
-<span id="1101">1101</span>
-<span id="1102">1102</span>
-<span id="1103">1103</span>
-<span id="1104">1104</span>
-<span id="1105">1105</span>
-<span id="1106">1106</span>
-<span id="1107">1107</span>
-<span id="1108">1108</span>
-<span id="1109">1109</span>
-<span id="1110">1110</span>
-<span id="1111">1111</span>
-<span id="1112">1112</span>
-<span id="1113">1113</span>
-<span id="1114">1114</span>
-<span id="1115">1115</span>
-<span id="1116">1116</span>
-<span id="1117">1117</span>
-<span id="1118">1118</span>
-<span id="1119">1119</span>
-<span id="1120">1120</span>
-<span id="1121">1121</span>
-<span id="1122">1122</span>
-<span id="1123">1123</span>
-<span id="1124">1124</span>
-<span id="1125">1125</span>
-<span id="1126">1126</span>
-<span id="1127">1127</span>
-<span id="1128">1128</span>
-<span id="1129">1129</span>
-<span id="1130">1130</span>
-<span id="1131">1131</span>
-<span id="1132">1132</span>
-<span id="1133">1133</span>
-<span id="1134">1134</span>
-<span id="1135">1135</span>
-<span id="1136">1136</span>
-<span id="1137">1137</span>
-<span id="1138">1138</span>
-<span id="1139">1139</span>
-<span id="1140">1140</span>
-<span id="1141">1141</span>
-<span id="1142">1142</span>
-<span id="1143">1143</span>
-<span id="1144">1144</span>
-<span id="1145">1145</span>
-<span id="1146">1146</span>
-<span id="1147">1147</span>
-<span id="1148">1148</span>
-<span id="1149">1149</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-<span class="kw">use</span> <span class="ident">std::path::Path</span>;
-<span class="kw">use</span> <span class="ident">std::path::PathBuf</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::encode</span>::{<span class="ident">deserialize</span>, <span class="ident">serialize</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::hash_types::Txid</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">Transaction</span>, <span class="ident">TxOut</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">Database</span>, <span class="ident">SyncTime</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::<span class="kw-2">*</span>;
-
-<span class="kw">use</span> <span class="ident">rusqlite</span>::{<span class="ident">named_params</span>, <span class="ident">Connection</span>};
-
-<span class="kw">static</span> <span class="ident">MIGRATIONS</span>: <span class="kw-2">&</span>[<span class="kw-2">&</span><span class="ident">str</span>] <span class="op">=</span> <span class="kw-2">&</span>[
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/database/sqlite.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sqlite.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+</span><span class="kw">use </span>std::path::Path;
+<span class="kw">use </span>std::path::PathBuf;
+
+<span class="kw">use </span>bitcoin::consensus::encode::{deserialize, serialize};
+<span class="kw">use </span>bitcoin::hash_types::Txid;
+<span class="kw">use </span>bitcoin::{OutPoint, Script, Transaction, TxOut};
+
+<span class="kw">use </span><span class="kw">crate</span>::database::{BatchDatabase, BatchOperations, Database, SyncTime};
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
+<span class="kw">use </span><span class="kw">crate</span>::types::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>rusqlite::{named_params, Connection};
+
+<span class="kw">static </span>MIGRATIONS: <span class="kw-2">&</span>[<span class="kw-2">&</span>str] = <span class="kw-2">&</span>[
<span class="string">"CREATE TABLE version (version INTEGER)"</span>,
<span class="string">"INSERT INTO version VALUES (1)"</span>,
<span class="string">"CREATE TABLE script_pubkeys (keychain TEXT, child INTEGER, script BLOB);"</span>,
<span class="string">"INSERT INTO transaction_details SELECT txid, timestamp, received, sent, fee, height FROM transaction_details_old;"</span>,
<span class="string">"DROP TABLE transaction_details_old;"</span>,
<span class="string">"ALTER TABLE utxos ADD COLUMN is_spent;"</span>,
- <span class="comment">// drop all data due to possible inconsistencies with duplicate utxos, re-sync required</span>
- <span class="string">"DELETE FROM checksums;"</span>,
+ <span class="comment">// drop all data due to possible inconsistencies with duplicate utxos, re-sync required
+ </span><span class="string">"DELETE FROM checksums;"</span>,
<span class="string">"DELETE FROM last_derivation_indices;"</span>,
<span class="string">"DELETE FROM script_pubkeys;"</span>,
<span class="string">"DELETE FROM sync_time;"</span>,
<span class="string">"INSERT INTO utxos SELECT value, keychain, vout, txid, script, is_spent FROM utxos_old;"</span>,
<span class="string">"DROP TABLE utxos_old;"</span>,
<span class="string">"CREATE UNIQUE INDEX idx_utxos_txid_vout ON utxos(txid, vout);"</span>,
- <span class="comment">// Fix issue https://github.com/bitcoindevkit/bdk/issues/801: drop duplicated script_pubkeys</span>
- <span class="string">"ALTER TABLE script_pubkeys RENAME TO script_pubkeys_old;"</span>,
+ <span class="comment">// Fix issue https://github.com/bitcoindevkit/bdk/issues/801: drop duplicated script_pubkeys
+ </span><span class="string">"ALTER TABLE script_pubkeys RENAME TO script_pubkeys_old;"</span>,
<span class="string">"DROP INDEX idx_keychain_child;"</span>,
<span class="string">"DROP INDEX idx_script;"</span>,
<span class="string">"CREATE TABLE script_pubkeys (keychain TEXT, child INTEGER, script BLOB);"</span>,
<span class="string">"CREATE INDEX idx_script ON script_pubkeys(script);"</span>,
<span class="string">"CREATE UNIQUE INDEX idx_script_pks_unique ON script_pubkeys(keychain, child);"</span>,
<span class="string">"INSERT OR REPLACE INTO script_pubkeys SELECT keychain, child, script FROM script_pubkeys_old;"</span>,
- <span class="string">"DROP TABLE script_pubkeys_old;"</span>
-];
-
-<span class="doccomment">/// Sqlite database stored on filesystem</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This is a permanent storage solution for devices and platforms that provide a filesystem.</span>
-<span class="doccomment">/// [`crate::database`]</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SqliteDatabase</span> {
- <span class="doccomment">/// Path on the local filesystem to store the sqlite file</span>
- <span class="kw">pub</span> <span class="ident">path</span>: <span class="ident">PathBuf</span>,
- <span class="doccomment">/// A rusqlite connection object to the sqlite database</span>
- <span class="kw">pub</span> <span class="ident">connection</span>: <span class="ident">Connection</span>,
+ <span class="string">"DROP TABLE script_pubkeys_old;"
+</span>];
+
+<span class="doccomment">/// Sqlite database stored on filesystem
+///
+/// This is a permanent storage solution for devices and platforms that provide a filesystem.
+/// [`crate::database`]
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>SqliteDatabase {
+ <span class="doccomment">/// Path on the local filesystem to store the sqlite file
+ </span><span class="kw">pub </span>path: PathBuf,
+ <span class="doccomment">/// A rusqlite connection object to the sqlite database
+ </span><span class="kw">pub </span>connection: Connection,
}
-<span class="kw">impl</span> <span class="ident">SqliteDatabase</span> {
- <span class="doccomment">/// Instantiate a new SqliteDatabase instance by creating a connection</span>
- <span class="doccomment">/// to the database stored at path</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">AsRef</span><span class="op"><</span><span class="ident">Path</span><span class="op">></span><span class="op">></span>(<span class="ident">path</span>: <span class="ident">T</span>) -> <span class="self">Self</span> {
- <span class="kw">let</span> <span class="ident">connection</span> <span class="op">=</span> <span class="ident">get_connection</span>(<span class="kw-2">&</span><span class="ident">path</span>).<span class="ident">unwrap</span>();
- <span class="ident">SqliteDatabase</span> {
- <span class="ident">path</span>: <span class="ident">PathBuf::from</span>(<span class="ident">path</span>.<span class="ident">as_ref</span>()),
- <span class="ident">connection</span>,
+<span class="kw">impl </span>SqliteDatabase {
+ <span class="doccomment">/// Instantiate a new SqliteDatabase instance by creating a connection
+ /// to the database stored at path
+ </span><span class="kw">pub fn </span>new<T: AsRef<Path>>(path: T) -> <span class="self">Self </span>{
+ <span class="kw">let </span>connection = get_connection(<span class="kw-2">&</span>path).unwrap();
+ SqliteDatabase {
+ path: PathBuf::from(path.as_ref()),
+ connection,
}
}
- <span class="kw">fn</span> <span class="ident">insert_script_pubkey</span>(
+ <span class="kw">fn </span>insert_script_pubkey(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">String</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>],
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(<span class="string">"INSERT OR REPLACE INTO script_pubkeys (keychain, child, script) VALUES (:keychain, :child, :script)"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":keychain"</span>: <span class="ident">keychain</span>,
- <span class="string">":child"</span>: <span class="ident">child</span>,
- <span class="string">":script"</span>: <span class="ident">script</span>
+ keychain: String,
+ child: u32,
+ script: <span class="kw-2">&</span>[u8],
+ ) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(<span class="string">"INSERT OR REPLACE INTO script_pubkeys (keychain, child, script) VALUES (:keychain, :child, :script)"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":keychain"</span>: keychain,
+ <span class="string">":child"</span>: child,
+ <span class="string">":script"</span>: script
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">insert_utxo</span>(
+ <span class="kw">fn </span>insert_utxo(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">value</span>: <span class="ident">u64</span>,
- <span class="ident">keychain</span>: <span class="ident">String</span>,
- <span class="ident">vout</span>: <span class="ident">u32</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>],
- <span class="ident">script</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>],
- <span class="ident">is_spent</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(<span class="string">"INSERT INTO utxos (value, keychain, vout, txid, script, is_spent) VALUES (:value, :keychain, :vout, :txid, :script, :is_spent) ON CONFLICT(txid, vout) DO UPDATE SET value=:value, keychain=:keychain, script=:script, is_spent=:is_spent"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":value"</span>: <span class="ident">value</span>,
- <span class="string">":keychain"</span>: <span class="ident">keychain</span>,
- <span class="string">":vout"</span>: <span class="ident">vout</span>,
- <span class="string">":txid"</span>: <span class="ident">txid</span>,
- <span class="string">":script"</span>: <span class="ident">script</span>,
- <span class="string">":is_spent"</span>: <span class="ident">is_spent</span>,
+ value: u64,
+ keychain: String,
+ vout: u32,
+ txid: <span class="kw-2">&</span>[u8],
+ script: <span class="kw-2">&</span>[u8],
+ is_spent: bool,
+ ) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(<span class="string">"INSERT INTO utxos (value, keychain, vout, txid, script, is_spent) VALUES (:value, :keychain, :vout, :txid, :script, :is_spent) ON CONFLICT(txid, vout) DO UPDATE SET value=:value, keychain=:keychain, script=:script, is_spent=:is_spent"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":value"</span>: value,
+ <span class="string">":keychain"</span>: keychain,
+ <span class="string">":vout"</span>: vout,
+ <span class="string">":txid"</span>: txid,
+ <span class="string">":script"</span>: script,
+ <span class="string">":is_spent"</span>: is_spent,
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">insert_transaction</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>], <span class="ident">raw_tx</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"INSERT INTO transactions (txid, raw_tx) VALUES (:txid, :raw_tx)"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":txid"</span>: <span class="ident">txid</span>,
- <span class="string">":raw_tx"</span>: <span class="ident">raw_tx</span>,
+ <span class="kw">fn </span>insert_transaction(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8], raw_tx: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"INSERT INTO transactions (txid, raw_tx) VALUES (:txid, :raw_tx)"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":txid"</span>: txid,
+ <span class="string">":raw_tx"</span>: raw_tx,
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">update_transaction</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>], <span class="ident">raw_tx</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"UPDATE transactions SET raw_tx=:raw_tx WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>update_transaction(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8], raw_tx: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"UPDATE transactions SET raw_tx=:raw_tx WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":txid"</span>: <span class="ident">txid</span>,
- <span class="string">":raw_tx"</span>: <span class="ident">raw_tx</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":txid"</span>: txid,
+ <span class="string">":raw_tx"</span>: raw_tx,
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">insert_transaction_details</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">timestamp</span>, <span class="ident">height</span>) <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">confirmation_time</span> {
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>) => (
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>.<span class="ident">timestamp</span>),
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>.<span class="ident">height</span>),
+ <span class="kw">fn </span>insert_transaction_details(<span class="kw-2">&</span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span>(timestamp, height) = <span class="kw">match </span><span class="kw-2">&</span>transaction.confirmation_time {
+ <span class="prelude-val">Some</span>(confirmation_time) => (
+ <span class="prelude-val">Some</span>(confirmation_time.timestamp),
+ <span class="prelude-val">Some</span>(confirmation_time.height),
),
- <span class="prelude-val">None</span> => (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
};
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>;
+ <span class="kw">let </span>txid: <span class="kw-2">&</span>[u8] = <span class="kw-2">&</span>transaction.txid;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(<span class="string">"INSERT INTO transaction_details (txid, timestamp, received, sent, fee, height) VALUES (:txid, :timestamp, :received, :sent, :fee, :height)"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(<span class="string">"INSERT INTO transaction_details (txid, timestamp, received, sent, fee, height) VALUES (:txid, :timestamp, :received, :sent, :fee, :height)"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":txid"</span>: <span class="ident">txid</span>,
- <span class="string">":timestamp"</span>: <span class="ident">timestamp</span>,
- <span class="string">":received"</span>: <span class="ident">transaction</span>.<span class="ident">received</span>,
- <span class="string">":sent"</span>: <span class="ident">transaction</span>.<span class="ident">sent</span>,
- <span class="string">":fee"</span>: <span class="ident">transaction</span>.<span class="ident">fee</span>,
- <span class="string">":height"</span>: <span class="ident">height</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":txid"</span>: txid,
+ <span class="string">":timestamp"</span>: timestamp,
+ <span class="string">":received"</span>: transaction.received,
+ <span class="string">":sent"</span>: transaction.sent,
+ <span class="string">":fee"</span>: transaction.fee,
+ <span class="string">":height"</span>: height,
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">update_transaction_details</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">timestamp</span>, <span class="ident">height</span>) <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">confirmation_time</span> {
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>) => (
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>.<span class="ident">timestamp</span>),
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>.<span class="ident">height</span>),
+ <span class="kw">fn </span>update_transaction_details(<span class="kw-2">&</span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>(timestamp, height) = <span class="kw">match </span><span class="kw-2">&</span>transaction.confirmation_time {
+ <span class="prelude-val">Some</span>(confirmation_time) => (
+ <span class="prelude-val">Some</span>(confirmation_time.timestamp),
+ <span class="prelude-val">Some</span>(confirmation_time.height),
),
- <span class="prelude-val">None</span> => (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
};
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>;
+ <span class="kw">let </span>txid: <span class="kw-2">&</span>[u8] = <span class="kw-2">&</span>transaction.txid;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(<span class="string">"UPDATE transaction_details SET timestamp=:timestamp, received=:received, sent=:sent, fee=:fee, height=:height WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(<span class="string">"UPDATE transaction_details SET timestamp=:timestamp, received=:received, sent=:sent, fee=:fee, height=:height WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":txid"</span>: <span class="ident">txid</span>,
- <span class="string">":timestamp"</span>: <span class="ident">timestamp</span>,
- <span class="string">":received"</span>: <span class="ident">transaction</span>.<span class="ident">received</span>,
- <span class="string">":sent"</span>: <span class="ident">transaction</span>.<span class="ident">sent</span>,
- <span class="string">":fee"</span>: <span class="ident">transaction</span>.<span class="ident">fee</span>,
- <span class="string">":height"</span>: <span class="ident">height</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":txid"</span>: txid,
+ <span class="string">":timestamp"</span>: timestamp,
+ <span class="string">":received"</span>: transaction.received,
+ <span class="string">":sent"</span>: transaction.sent,
+ <span class="string">":fee"</span>: transaction.fee,
+ <span class="string">":height"</span>: height,
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">insert_last_derivation_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>insert_last_derivation_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: String, value: u32) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"INSERT INTO last_derivation_indices (keychain, value) VALUES (:keychain, :value)"</span>,
)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":keychain"</span>: <span class="ident">keychain</span>,
- <span class="string">":value"</span>: <span class="ident">value</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":keychain"</span>: keychain,
+ <span class="string">":value"</span>: value,
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">insert_checksum</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>, <span class="ident">checksum</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>insert_checksum(<span class="kw-2">&</span><span class="self">self</span>, keychain: String, checksum: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"INSERT INTO checksums (keychain, checksum) VALUES (:keychain, :checksum)"</span>,
)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":keychain"</span>: <span class="ident">keychain</span>,
- <span class="string">":checksum"</span>: <span class="ident">checksum</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":keychain"</span>: keychain,
+ <span class="string">":checksum"</span>: checksum,
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">update_last_derivation_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>update_last_derivation_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: String, value: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"INSERT INTO last_derivation_indices (keychain, value) VALUES (:keychain, :value) ON CONFLICT(keychain) DO UPDATE SET value=:value WHERE keychain=:keychain"</span>,
)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":keychain"</span>: <span class="ident">keychain</span>,
- <span class="string">":value"</span>: <span class="ident">value</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":keychain"</span>: keychain,
+ <span class="string">":value"</span>: value,
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">update_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">data</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">i64</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>update_sync_time(<span class="kw-2">&</span><span class="self">self</span>, data: SyncTime) -> <span class="prelude-ty">Result</span><i64, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"INSERT INTO sync_time (id, height, timestamp) VALUES (0, :height, :timestamp) ON CONFLICT(id) DO UPDATE SET height=:height, timestamp=:timestamp WHERE id = 0"</span>,
)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":height"</span>: <span class="ident">data</span>.<span class="ident">block_time</span>.<span class="ident">height</span>,
- <span class="string">":timestamp"</span>: <span class="ident">data</span>.<span class="ident">block_time</span>.<span class="ident">timestamp</span>,
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":height"</span>: data.block_time.height,
+ <span class="string">":timestamp"</span>: data.block_time.timestamp,
})<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">last_insert_rowid</span>())
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.connection.last_insert_rowid())
}
- <span class="kw">fn</span> <span class="ident">select_script_pubkeys</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT script FROM script_pubkeys"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">scripts</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="kw">let</span> <span class="ident">raw_script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="ident">scripts</span>.<span class="ident">push</span>(<span class="ident">raw_script</span>.<span class="ident">into</span>());
+ <span class="kw">fn </span>select_script_pubkeys(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Script>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT script FROM script_pubkeys"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>scripts: Vec<Script> = <span class="macro">vec!</span>[];
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([])<span class="question-mark">?</span>;
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="kw">let </span>raw_script: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ scripts.push(raw_script.into());
}
- <span class="prelude-val">Ok</span>(<span class="ident">scripts</span>)
+ <span class="prelude-val">Ok</span>(scripts)
}
- <span class="kw">fn</span> <span class="ident">select_script_pubkeys_by_keychain</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT script FROM script_pubkeys WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">scripts</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":keychain"</span>: <span class="ident">keychain</span>})<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="kw">let</span> <span class="ident">raw_script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="ident">scripts</span>.<span class="ident">push</span>(<span class="ident">raw_script</span>.<span class="ident">into</span>());
+ <span class="kw">fn </span>select_script_pubkeys_by_keychain(<span class="kw-2">&</span><span class="self">self</span>, keychain: String) -> <span class="prelude-ty">Result</span><Vec<Script>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT script FROM script_pubkeys WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>scripts: Vec<Script> = <span class="macro">vec!</span>[];
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":keychain"</span>: keychain})<span class="question-mark">?</span>;
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="kw">let </span>raw_script: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ scripts.push(raw_script.into());
}
- <span class="prelude-val">Ok</span>(<span class="ident">scripts</span>)
+ <span class="prelude-val">Ok</span>(scripts)
}
- <span class="kw">fn</span> <span class="ident">select_script_pubkey_by_path</span>(
+ <span class="kw">fn </span>select_script_pubkey_by_path(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">String</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ keychain: String,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"SELECT script FROM script_pubkeys WHERE keychain=:keychain AND child=:child"</span>,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":keychain"</span>: <span class="ident">keychain</span>,<span class="string">":child"</span>: <span class="ident">child</span>})<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":keychain"</span>: keychain,<span class="string">":child"</span>: child})<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">script</span>: <span class="ident">Script</span> <span class="op">=</span> <span class="ident">script</span>.<span class="ident">into</span>();
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>))
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>script: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>script: Script = script.into();
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(script))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">select_script_pubkey_by_script</span>(
+ <span class="kw">fn </span>select_script_pubkey_by_script(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>],
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT keychain, child FROM script_pubkeys WHERE script=:script"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":script"</span>: <span class="ident">script</span>})<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">String</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">KeychainKind</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">child</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>)))
+ script: <span class="kw-2">&</span>[u8],
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT keychain, child FROM script_pubkeys WHERE script=:script"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":script"</span>: script})<span class="question-mark">?</span>;
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>keychain: String = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain: KeychainKind = serde_json::from_str(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">let </span>child: u32 = row.get(<span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((keychain, child)))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">select_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT value, keychain, vout, txid, script, is_spent FROM utxos"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">String</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">vout</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">2</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">3</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">4</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">is_spent</span>: <span class="ident">bool</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">5</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">KeychainKind</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
-
- <span class="ident">utxos</span>.<span class="ident">push</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::new</span>(<span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">txid</span>)<span class="question-mark">?</span>, <span class="ident">vout</span>),
- <span class="ident">txout</span>: <span class="ident">TxOut</span> {
- <span class="ident">value</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">script</span>.<span class="ident">into</span>(),
+ <span class="kw">fn </span>select_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT value, keychain, vout, txid, script, is_spent FROM utxos"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>utxos: Vec<LocalUtxo> = <span class="macro">vec!</span>[];
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([])<span class="question-mark">?</span>;
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="kw">let </span>value = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain: String = row.get(<span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>vout = row.get(<span class="number">2</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txid: Vec<u8> = row.get(<span class="number">3</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>script: Vec<u8> = row.get(<span class="number">4</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>is_spent: bool = row.get(<span class="number">5</span>)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>keychain: KeychainKind = serde_json::from_str(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+
+ utxos.push(LocalUtxo {
+ outpoint: OutPoint::new(deserialize(<span class="kw-2">&</span>txid)<span class="question-mark">?</span>, vout),
+ txout: TxOut {
+ value,
+ script_pubkey: script.into(),
},
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ keychain,
+ is_spent,
})
}
- <span class="prelude-val">Ok</span>(<span class="ident">utxos</span>)
+ <span class="prelude-val">Ok</span>(utxos)
}
- <span class="kw">fn</span> <span class="ident">select_utxo_by_outpoint</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>], <span class="ident">vout</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>select_utxo_by_outpoint(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8], vout: u32) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"SELECT value, keychain, script, is_spent FROM utxos WHERE txid=:txid AND vout=:vout"</span>,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":txid"</span>: <span class="ident">txid</span>,<span class="string">":vout"</span>: <span class="ident">vout</span>})<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">value</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">String</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">KeychainKind</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">script</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">2</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">script_pubkey</span>: <span class="ident">Script</span> <span class="op">=</span> <span class="ident">script</span>.<span class="ident">into</span>();
- <span class="kw">let</span> <span class="ident">is_spent</span>: <span class="ident">bool</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">3</span>)<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::new</span>(<span class="ident">deserialize</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>, <span class="ident">vout</span>),
- <span class="ident">txout</span>: <span class="ident">TxOut</span> {
- <span class="ident">value</span>,
- <span class="ident">script_pubkey</span>,
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":txid"</span>: txid,<span class="string">":vout"</span>: vout})<span class="question-mark">?</span>;
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>value: u64 = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain: String = row.get(<span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>keychain: KeychainKind = serde_json::from_str(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">let </span>script: Vec<u8> = row.get(<span class="number">2</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>script_pubkey: Script = script.into();
+ <span class="kw">let </span>is_spent: bool = row.get(<span class="number">3</span>)<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(LocalUtxo {
+ outpoint: OutPoint::new(deserialize(txid)<span class="question-mark">?</span>, vout),
+ txout: TxOut {
+ value,
+ script_pubkey,
},
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>,
+ keychain,
+ is_spent,
}))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">select_transactions</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT raw_tx FROM transactions"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">txs</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="kw">let</span> <span class="ident">raw_tx</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">raw_tx</span>)<span class="question-mark">?</span>;
- <span class="ident">txs</span>.<span class="ident">push</span>(<span class="ident">tx</span>);
+ <span class="kw">fn </span>select_transactions(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Transaction>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT raw_tx FROM transactions"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>txs: Vec<Transaction> = <span class="macro">vec!</span>[];
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([])<span class="question-mark">?</span>;
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="kw">let </span>raw_tx: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>raw_tx)<span class="question-mark">?</span>;
+ txs.push(tx);
}
- <span class="prelude-val">Ok</span>(<span class="ident">txs</span>)
- }
-
- <span class="kw">fn</span> <span class="ident">select_transaction_by_txid</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT raw_tx FROM transactions WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":txid"</span>: <span class="ident">txid</span>})<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">raw_tx</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">raw_tx</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">tx</span>))
+ <span class="prelude-val">Ok</span>(txs)
+ }
+
+ <span class="kw">fn </span>select_transaction_by_txid(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT raw_tx FROM transactions WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":txid"</span>: txid})<span class="question-mark">?</span>;
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>raw_tx: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>raw_tx)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(tx))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">select_transaction_details_with_raw</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(<span class="string">"SELECT transaction_details.txid, transaction_details.timestamp, transaction_details.received, transaction_details.sent, transaction_details.fee, transaction_details.height, transactions.raw_tx FROM transaction_details, transactions WHERE transaction_details.txid = transactions.txid"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">transaction_details</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="ident">Txid</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">txid</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">timestamp</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">received</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">2</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">sent</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">3</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">fee</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">4</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">5</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">raw_tx</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">6</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">raw_tx</span> {
- <span class="prelude-val">Some</span>(<span class="ident">raw_tx</span>) => {
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">raw_tx</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>)
+ <span class="kw">fn </span>select_transaction_details_with_raw(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(<span class="string">"SELECT transaction_details.txid, transaction_details.timestamp, transaction_details.received, transaction_details.sent, transaction_details.fee, transaction_details.height, transactions.raw_tx FROM transaction_details, transactions WHERE transaction_details.txid = transactions.txid"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>transaction_details: Vec<TransactionDetails> = <span class="macro">vec!</span>[];
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([])<span class="question-mark">?</span>;
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="kw">let </span>txid: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txid: Txid = deserialize(<span class="kw-2">&</span>txid)<span class="question-mark">?</span>;
+ <span class="kw">let </span>timestamp: <span class="prelude-ty">Option</span><u64> = row.get(<span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>received: u64 = row.get(<span class="number">2</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>sent: u64 = row.get(<span class="number">3</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>fee: <span class="prelude-ty">Option</span><u64> = row.get(<span class="number">4</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>height: <span class="prelude-ty">Option</span><u32> = row.get(<span class="number">5</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>raw_tx: <span class="prelude-ty">Option</span><Vec<u8>> = row.get(<span class="number">6</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>tx: <span class="prelude-ty">Option</span><Transaction> = <span class="kw">match </span>raw_tx {
+ <span class="prelude-val">Some</span>(raw_tx) => {
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>raw_tx)<span class="question-mark">?</span>;
+ <span class="prelude-val">Some</span>(tx)
}
- <span class="prelude-val">None</span> => <span class="prelude-val">None</span>,
+ <span class="prelude-val">None </span>=> <span class="prelude-val">None</span>,
};
- <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="kw">match</span> (<span class="ident">height</span>, <span class="ident">timestamp</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">height</span>), <span class="prelude-val">Some</span>(<span class="ident">timestamp</span>)) => <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> { <span class="ident">height</span>, <span class="ident">timestamp</span> }),
- <span class="kw">_</span> => <span class="prelude-val">None</span>,
+ <span class="kw">let </span>confirmation_time = <span class="kw">match </span>(height, timestamp) {
+ (<span class="prelude-val">Some</span>(height), <span class="prelude-val">Some</span>(timestamp)) => <span class="prelude-val">Some</span>(BlockTime { height, timestamp }),
+ <span class="kw">_ </span>=> <span class="prelude-val">None</span>,
};
- <span class="ident">transaction_details</span>.<span class="ident">push</span>(<span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="ident">tx</span>,
- <span class="ident">txid</span>,
- <span class="ident">received</span>,
- <span class="ident">sent</span>,
- <span class="ident">fee</span>,
- <span class="ident">confirmation_time</span>,
+ transaction_details.push(TransactionDetails {
+ transaction: tx,
+ txid,
+ received,
+ sent,
+ fee,
+ confirmation_time,
});
}
- <span class="prelude-val">Ok</span>(<span class="ident">transaction_details</span>)
+ <span class="prelude-val">Ok</span>(transaction_details)
}
- <span class="kw">fn</span> <span class="ident">select_transaction_details</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>select_transaction_details(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"SELECT txid, timestamp, received, sent, fee, height FROM transaction_details"</span>,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">transaction_details</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">txid</span>: <span class="ident">Txid</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">txid</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">timestamp</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">received</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">2</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">sent</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">3</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">fee</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">4</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">5</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="kw">match</span> (<span class="ident">height</span>, <span class="ident">timestamp</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">height</span>), <span class="prelude-val">Some</span>(<span class="ident">timestamp</span>)) => <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> { <span class="ident">height</span>, <span class="ident">timestamp</span> }),
- <span class="kw">_</span> => <span class="prelude-val">None</span>,
+ <span class="kw">let </span><span class="kw-2">mut </span>transaction_details: Vec<TransactionDetails> = <span class="macro">vec!</span>[];
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([])<span class="question-mark">?</span>;
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="kw">let </span>txid: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txid: Txid = deserialize(<span class="kw-2">&</span>txid)<span class="question-mark">?</span>;
+ <span class="kw">let </span>timestamp: <span class="prelude-ty">Option</span><u64> = row.get(<span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>received: u64 = row.get(<span class="number">2</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>sent: u64 = row.get(<span class="number">3</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>fee: <span class="prelude-ty">Option</span><u64> = row.get(<span class="number">4</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>height: <span class="prelude-ty">Option</span><u32> = row.get(<span class="number">5</span>)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>confirmation_time = <span class="kw">match </span>(height, timestamp) {
+ (<span class="prelude-val">Some</span>(height), <span class="prelude-val">Some</span>(timestamp)) => <span class="prelude-val">Some</span>(BlockTime { height, timestamp }),
+ <span class="kw">_ </span>=> <span class="prelude-val">None</span>,
};
- <span class="ident">transaction_details</span>.<span class="ident">push</span>(<span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>,
- <span class="ident">received</span>,
- <span class="ident">sent</span>,
- <span class="ident">fee</span>,
- <span class="ident">confirmation_time</span>,
+ transaction_details.push(TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid,
+ received,
+ sent,
+ fee,
+ confirmation_time,
});
}
- <span class="prelude-val">Ok</span>(<span class="ident">transaction_details</span>)
+ <span class="prelude-val">Ok</span>(transaction_details)
}
- <span class="kw">fn</span> <span class="ident">select_transaction_details_by_txid</span>(
+ <span class="kw">fn </span>select_transaction_details_by_txid(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>],
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(<span class="string">"SELECT transaction_details.timestamp, transaction_details.received, transaction_details.sent, transaction_details.fee, transaction_details.height, transactions.raw_tx FROM transaction_details, transactions WHERE transaction_details.txid=transactions.txid AND transaction_details.txid=:txid"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> { <span class="string">":txid"</span>: <span class="ident">txid</span> })<span class="question-mark">?</span>;
-
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">timestamp</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">received</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">sent</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">2</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">fee</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">3</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">4</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">raw_tx</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">5</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">raw_tx</span> {
- <span class="prelude-val">Some</span>(<span class="ident">raw_tx</span>) => {
- <span class="kw">let</span> <span class="ident">tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">raw_tx</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>)
+ txid: <span class="kw-2">&</span>[u8],
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(<span class="string">"SELECT transaction_details.timestamp, transaction_details.received, transaction_details.sent, transaction_details.fee, transaction_details.height, transactions.raw_tx FROM transaction_details, transactions WHERE transaction_details.txid=transactions.txid AND transaction_details.txid=:txid"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{ <span class="string">":txid"</span>: txid })<span class="question-mark">?</span>;
+
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>timestamp: <span class="prelude-ty">Option</span><u64> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>received: u64 = row.get(<span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>sent: u64 = row.get(<span class="number">2</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>fee: <span class="prelude-ty">Option</span><u64> = row.get(<span class="number">3</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>height: <span class="prelude-ty">Option</span><u32> = row.get(<span class="number">4</span>)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>raw_tx: <span class="prelude-ty">Option</span><Vec<u8>> = row.get(<span class="number">5</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>tx: <span class="prelude-ty">Option</span><Transaction> = <span class="kw">match </span>raw_tx {
+ <span class="prelude-val">Some</span>(raw_tx) => {
+ <span class="kw">let </span>tx: Transaction = deserialize(<span class="kw-2">&</span>raw_tx)<span class="question-mark">?</span>;
+ <span class="prelude-val">Some</span>(tx)
}
- <span class="prelude-val">None</span> => <span class="prelude-val">None</span>,
+ <span class="prelude-val">None </span>=> <span class="prelude-val">None</span>,
};
- <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="kw">match</span> (<span class="ident">height</span>, <span class="ident">timestamp</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">height</span>), <span class="prelude-val">Some</span>(<span class="ident">timestamp</span>)) => <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> { <span class="ident">height</span>, <span class="ident">timestamp</span> }),
- <span class="kw">_</span> => <span class="prelude-val">None</span>,
+ <span class="kw">let </span>confirmation_time = <span class="kw">match </span>(height, timestamp) {
+ (<span class="prelude-val">Some</span>(height), <span class="prelude-val">Some</span>(timestamp)) => <span class="prelude-val">Some</span>(BlockTime { height, timestamp }),
+ <span class="kw">_ </span>=> <span class="prelude-val">None</span>,
};
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="ident">tx</span>,
- <span class="ident">txid</span>: <span class="ident">deserialize</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>,
- <span class="ident">received</span>,
- <span class="ident">sent</span>,
- <span class="ident">fee</span>,
- <span class="ident">confirmation_time</span>,
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(TransactionDetails {
+ transaction: tx,
+ txid: deserialize(txid)<span class="question-mark">?</span>,
+ received,
+ sent,
+ fee,
+ confirmation_time,
}))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">select_last_derivation_index_by_keychain</span>(
+ <span class="kw">fn </span>select_last_derivation_index_by_keychain(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">String</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT value FROM last_derivation_indices WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":keychain"</span>: <span class="ident">keychain</span>})<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">value</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">value</span>))
+ keychain: String,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT value FROM last_derivation_indices WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":keychain"</span>: keychain})<span class="question-mark">?</span>;
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>value: u32 = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(value))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">select_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT height, timestamp FROM sync_time WHERE id = 0"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
+ <span class="kw">fn </span>select_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT height, timestamp FROM sync_time WHERE id = 0"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([])<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>,
- <span class="ident">timestamp</span>: <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>)<span class="question-mark">?</span>,
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(row) = rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(SyncTime {
+ block_time: BlockTime {
+ height: row.get(<span class="number">0</span>)<span class="question-mark">?</span>,
+ timestamp: row.get(<span class="number">1</span>)<span class="question-mark">?</span>,
},
}))
- } <span class="kw">else</span> {
+ } <span class="kw">else </span>{
<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>)
}
}
- <span class="kw">fn</span> <span class="ident">select_checksum_by_keychain</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"SELECT checksum FROM checksums WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>(<span class="macro">named_params!</span> {<span class="string">":keychain"</span>: <span class="ident">keychain</span>})<span class="question-mark">?</span>;
+ <span class="kw">fn </span>select_checksum_by_keychain(<span class="kw-2">&</span><span class="self">self</span>, keychain: String) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Vec<u8>>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"SELECT checksum FROM checksums WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query(<span class="macro">named_params! </span>{<span class="string">":keychain"</span>: keychain})<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">checksum</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">checksum</span>))
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>checksum: Vec<u8> = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(checksum))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">delete_script_pubkey_by_path</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>, <span class="ident">child</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">connection</span>.<span class="ident">prepare_cached</span>(
+ <span class="kw">fn </span>delete_script_pubkey_by_path(<span class="kw-2">&</span><span class="self">self</span>, keychain: String, child: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self</span>.connection.prepare_cached(
<span class="string">"DELETE FROM script_pubkeys WHERE keychain=:keychain AND child=:child"</span>,
)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":keychain"</span>: <span class="ident">keychain</span>,
- <span class="string">":child"</span>: <span class="ident">child</span>
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":keychain"</span>: keychain,
+ <span class="string">":child"</span>: child
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">delete_script_pubkey_by_script</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"DELETE FROM script_pubkeys WHERE script=:script"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":script"</span>: <span class="ident">script</span>
+ <span class="kw">fn </span>delete_script_pubkey_by_script(<span class="kw-2">&</span><span class="self">self</span>, script: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"DELETE FROM script_pubkeys WHERE script=:script"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":script"</span>: script
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">delete_utxo_by_outpoint</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>], <span class="ident">vout</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"DELETE FROM utxos WHERE txid=:txid AND vout=:vout"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":txid"</span>: <span class="ident">txid</span>,
- <span class="string">":vout"</span>: <span class="ident">vout</span>
+ <span class="kw">fn </span>delete_utxo_by_outpoint(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8], vout: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"DELETE FROM utxos WHERE txid=:txid AND vout=:vout"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":txid"</span>: txid,
+ <span class="string">":vout"</span>: vout
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">delete_transaction_by_txid</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"DELETE FROM transactions WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {<span class="string">":txid"</span>: <span class="ident">txid</span>})<span class="question-mark">?</span>;
+ <span class="kw">fn </span>delete_transaction_by_txid(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"DELETE FROM transactions WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{<span class="string">":txid"</span>: txid})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">delete_transaction_details_by_txid</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"DELETE FROM transaction_details WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {<span class="string">":txid"</span>: <span class="ident">txid</span>})<span class="question-mark">?</span>;
+ <span class="kw">fn </span>delete_transaction_details_by_txid(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>[u8]) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"DELETE FROM transaction_details WHERE txid=:txid"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{<span class="string">":txid"</span>: txid})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">delete_last_derivation_index_by_keychain</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"DELETE FROM last_derivation_indices WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>(<span class="macro">named_params!</span> {
- <span class="string">":keychain"</span>: <span class="kw-2">&</span><span class="ident">keychain</span>
+ <span class="kw">fn </span>delete_last_derivation_index_by_keychain(<span class="kw-2">&</span><span class="self">self</span>, keychain: String) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"DELETE FROM last_derivation_indices WHERE keychain=:keychain"</span>)<span class="question-mark">?</span>;
+ statement.execute(<span class="macro">named_params! </span>{
+ <span class="string">":keychain"</span>: <span class="kw-2">&</span>keychain
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">delete_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(<span class="string">"DELETE FROM sync_time WHERE id = 0"</span>)<span class="question-mark">?</span>;
- <span class="ident">statement</span>.<span class="ident">execute</span>([])<span class="question-mark">?</span>;
+ <span class="kw">fn </span>delete_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = <span class="self">self
+ </span>.connection
+ .prepare_cached(<span class="string">"DELETE FROM sync_time WHERE id = 0"</span>)<span class="question-mark">?</span>;
+ statement.execute([])<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">impl</span> <span class="ident">BatchOperations</span> <span class="kw">for</span> <span class="ident">SqliteDatabase</span> {
- <span class="kw">fn</span> <span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">insert_script_pubkey</span>(<span class="ident">keychain</span>, <span class="ident">child</span>, <span class="ident">script</span>.<span class="ident">as_bytes</span>())<span class="question-mark">?</span>;
+<span class="kw">impl </span>BatchOperations <span class="kw">for </span>SqliteDatabase {
+ <span class="kw">fn </span>set_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="self">self</span>.insert_script_pubkey(keychain, child, script.as_bytes())<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">insert_utxo</span>(
- <span class="ident">utxo</span>.<span class="ident">txout</span>.<span class="ident">value</span>,
- <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">utxo</span>.<span class="ident">keychain</span>)<span class="question-mark">?</span>,
- <span class="ident">utxo</span>.<span class="ident">outpoint</span>.<span class="ident">vout</span>,
- <span class="kw-2">&</span><span class="ident">utxo</span>.<span class="ident">outpoint</span>.<span class="ident">txid</span>,
- <span class="ident">utxo</span>.<span class="ident">txout</span>.<span class="ident">script_pubkey</span>.<span class="ident">as_bytes</span>(),
- <span class="ident">utxo</span>.<span class="ident">is_spent</span>,
+ <span class="kw">fn </span>set_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="self">self</span>.insert_utxo(
+ utxo.txout.value,
+ serde_json::to_string(<span class="kw-2">&</span>utxo.keychain)<span class="question-mark">?</span>,
+ utxo.outpoint.vout,
+ <span class="kw-2">&</span>utxo.outpoint.txid,
+ utxo.txout.script_pubkey.as_bytes(),
+ utxo.is_spent,
)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_transaction_by_txid</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>())<span class="question-mark">?</span> {
+ <span class="kw">fn </span>set_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>Transaction) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_transaction_by_txid(<span class="kw-2">&</span>transaction.txid())<span class="question-mark">? </span>{
<span class="prelude-val">Some</span>(<span class="kw">_</span>) => {
- <span class="self">self</span>.<span class="ident">update_transaction</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>(), <span class="kw-2">&</span><span class="ident">serialize</span>(<span class="ident">transaction</span>))<span class="question-mark">?</span>;
+ <span class="self">self</span>.update_transaction(<span class="kw-2">&</span>transaction.txid(), <span class="kw-2">&</span>serialize(transaction))<span class="question-mark">?</span>;
}
- <span class="prelude-val">None</span> => {
- <span class="self">self</span>.<span class="ident">insert_transaction</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>(), <span class="kw-2">&</span><span class="ident">serialize</span>(<span class="ident">transaction</span>))<span class="question-mark">?</span>;
+ <span class="prelude-val">None </span>=> {
+ <span class="self">self</span>.insert_transaction(<span class="kw-2">&</span>transaction.txid(), <span class="kw-2">&</span>serialize(transaction))<span class="question-mark">?</span>;
}
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">transaction</span>: <span class="kw-2">&</span><span class="ident">TransactionDetails</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_transaction_details_by_txid</span>(<span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">txid</span>)<span class="question-mark">?</span> {
+ <span class="kw">fn </span>set_tx(<span class="kw-2">&mut </span><span class="self">self</span>, transaction: <span class="kw-2">&</span>TransactionDetails) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_transaction_details_by_txid(<span class="kw-2">&</span>transaction.txid)<span class="question-mark">? </span>{
<span class="prelude-val">Some</span>(<span class="kw">_</span>) => {
- <span class="self">self</span>.<span class="ident">update_transaction_details</span>(<span class="ident">transaction</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.update_transaction_details(transaction)<span class="question-mark">?</span>;
}
- <span class="prelude-val">None</span> => {
- <span class="self">self</span>.<span class="ident">insert_transaction_details</span>(<span class="ident">transaction</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">None </span>=> {
+ <span class="self">self</span>.insert_transaction_details(transaction)<span class="question-mark">?</span>;
}
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">transaction</span>.<span class="ident">transaction</span> {
- <span class="self">self</span>.<span class="ident">set_raw_tx</span>(<span class="ident">tx</span>)<span class="question-mark">?</span>;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(tx) = <span class="kw-2">&</span>transaction.transaction {
+ <span class="self">self</span>.set_raw_tx(tx)<span class="question-mark">?</span>;
}
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">value</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">update_last_derivation_index</span>(<span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>, <span class="ident">value</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>set_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind, value: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="self">self</span>.update_last_derivation_index(serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>, value)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">set_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">ct</span>: <span class="ident">SyncTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">update_sync_time</span>(<span class="ident">ct</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>set_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>, ct: SyncTime) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="self">self</span>.update_sync_time(ct)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">del_script_pubkey_from_path</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">select_script_pubkey_by_path</span>(<span class="ident">keychain</span>.<span class="ident">clone</span>(), <span class="ident">child</span>)<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">script</span> {
- <span class="prelude-val">Some</span>(<span class="ident">script</span>) => {
- <span class="self">self</span>.<span class="ident">delete_script_pubkey_by_path</span>(<span class="ident">keychain</span>, <span class="ident">child</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>))
+ <span class="kw">fn </span>del_script_pubkey_from_path(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">let </span>script = <span class="self">self</span>.select_script_pubkey_by_path(keychain.clone(), child)<span class="question-mark">?</span>;
+ <span class="kw">match </span>script {
+ <span class="prelude-val">Some</span>(script) => {
+ <span class="self">self</span>.delete_script_pubkey_by_path(keychain, child)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(script))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">del_path_from_script_pubkey</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_script_pubkey_by_script</span>(<span class="ident">script</span>.<span class="ident">as_bytes</span>())<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>)) => {
- <span class="self">self</span>.<span class="ident">delete_script_pubkey_by_script</span>(<span class="ident">script</span>.<span class="ident">as_bytes</span>())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>)))
+ <span class="kw">fn </span>del_path_from_script_pubkey(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_script_pubkey_by_script(script.as_bytes())<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>((keychain, child)) => {
+ <span class="self">self</span>.delete_script_pubkey_by_script(script.as_bytes())<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((keychain, child)))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">del_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_utxo_by_outpoint</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>.<span class="ident">txid</span>, <span class="ident">outpoint</span>.<span class="ident">vout</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">local_utxo</span>) => {
- <span class="self">self</span>.<span class="ident">delete_utxo_by_outpoint</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>.<span class="ident">txid</span>, <span class="ident">outpoint</span>.<span class="ident">vout</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">local_utxo</span>))
+ <span class="kw">fn </span>del_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_utxo_by_outpoint(<span class="kw-2">&</span>outpoint.txid, outpoint.vout)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(local_utxo) => {
+ <span class="self">self</span>.delete_utxo_by_outpoint(<span class="kw-2">&</span>outpoint.txid, outpoint.vout)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(local_utxo))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">del_raw_tx</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_transaction_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) => {
- <span class="self">self</span>.<span class="ident">delete_transaction_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">tx</span>))
+ <span class="kw">fn </span>del_raw_tx(<span class="kw-2">&mut </span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_transaction_by_txid(txid)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(tx) => {
+ <span class="self">self</span>.delete_transaction_by_txid(txid)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(tx))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">del_tx</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>,
- <span class="ident">include_raw</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_transaction_details_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="kw-2">mut</span> <span class="ident">transaction_details</span>) => {
- <span class="self">self</span>.<span class="ident">delete_transaction_details_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>del_tx(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ txid: <span class="kw-2">&</span>Txid,
+ include_raw: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_transaction_details_by_txid(txid)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(<span class="kw-2">mut </span>transaction_details) => {
+ <span class="self">self</span>.delete_transaction_details_by_txid(txid)<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">include_raw</span> {
- <span class="self">self</span>.<span class="ident">delete_transaction_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="ident">transaction_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+ <span class="kw">if </span>include_raw {
+ <span class="self">self</span>.delete_transaction_by_txid(txid)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ transaction_details.transaction = <span class="prelude-val">None</span>;
}
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">transaction_details</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(transaction_details))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">del_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_last_derivation_index_by_keychain</span>(<span class="ident">keychain</span>.<span class="ident">clone</span>())<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">value</span>) => {
- <span class="self">self</span>.<span class="ident">delete_last_derivation_index_by_keychain</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>del_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">match </span><span class="self">self</span>.select_last_derivation_index_by_keychain(keychain.clone())<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(value) => {
+ <span class="self">self</span>.delete_last_derivation_index_by_keychain(keychain)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">value</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(value))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">del_sync_time</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_sync_time</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">value</span>) => {
- <span class="self">self</span>.<span class="ident">delete_sync_time</span>()<span class="question-mark">?</span>;
+ <span class="kw">fn </span>del_sync_time(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_sync_time()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(value) => {
+ <span class="self">self</span>.delete_sync_time()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">value</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(value))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
}
-<span class="kw">impl</span> <span class="ident">Database</span> <span class="kw">for</span> <span class="ident">SqliteDatabase</span> {
- <span class="kw">fn</span> <span class="ident">check_descriptor_checksum</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">AsRef</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span><span class="op">></span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">bytes</span>: <span class="ident">B</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
-
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_checksum_by_keychain</span>(<span class="ident">keychain</span>.<span class="ident">clone</span>())<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">checksum</span>) => {
- <span class="kw">if</span> <span class="ident">checksum</span> <span class="op">==</span> <span class="ident">bytes</span>.<span class="ident">as_ref</span>().<span class="ident">to_vec</span>() {
+<span class="kw">impl </span>Database <span class="kw">for </span>SqliteDatabase {
+ <span class="kw">fn </span>check_descriptor_checksum<B: AsRef<[u8]>>(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ bytes: B,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+
+ <span class="kw">match </span><span class="self">self</span>.select_checksum_by_keychain(keychain.clone())<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(checksum) => {
+ <span class="kw">if </span>checksum == bytes.as_ref().to_vec() {
<span class="prelude-val">Ok</span>(())
- } <span class="kw">else</span> {
- <span class="prelude-val">Err</span>(<span class="ident">Error::ChecksumMismatch</span>)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(Error::ChecksumMismatch)
}
}
- <span class="prelude-val">None</span> => {
- <span class="self">self</span>.<span class="ident">insert_checksum</span>(<span class="ident">keychain</span>, <span class="ident">bytes</span>.<span class="ident">as_ref</span>())<span class="question-mark">?</span>;
+ <span class="prelude-val">None </span>=> {
+ <span class="self">self</span>.insert_checksum(keychain, bytes.as_ref())<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
}
- <span class="kw">fn</span> <span class="ident">iter_script_pubkeys</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">KeychainKind</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="prelude-val">Some</span>(<span class="ident">keychain</span>) => {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">select_script_pubkeys_by_keychain</span>(<span class="ident">keychain</span>)
+ <span class="kw">fn </span>iter_script_pubkeys(<span class="kw-2">&</span><span class="self">self</span>, keychain: <span class="prelude-ty">Option</span><KeychainKind>) -> <span class="prelude-ty">Result</span><Vec<Script>, Error> {
+ <span class="kw">match </span>keychain {
+ <span class="prelude-val">Some</span>(keychain) => {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="self">self</span>.select_script_pubkeys_by_keychain(keychain)
}
- <span class="prelude-val">None</span> => <span class="self">self</span>.<span class="ident">select_script_pubkeys</span>(),
+ <span class="prelude-val">None </span>=> <span class="self">self</span>.select_script_pubkeys(),
}
}
- <span class="kw">fn</span> <span class="ident">iter_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">select_utxos</span>()
+ <span class="kw">fn </span>iter_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error> {
+ <span class="self">self</span>.select_utxos()
}
- <span class="kw">fn</span> <span class="ident">iter_raw_txs</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">select_transactions</span>()
+ <span class="kw">fn </span>iter_raw_txs(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<Transaction>, Error> {
+ <span class="self">self</span>.select_transactions()
}
- <span class="kw">fn</span> <span class="ident">iter_txs</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="ident">include_raw</span> {
- <span class="bool-val">true</span> => <span class="self">self</span>.<span class="ident">select_transaction_details_with_raw</span>(),
- <span class="bool-val">false</span> => <span class="self">self</span>.<span class="ident">select_transaction_details</span>(),
+ <span class="kw">fn </span>iter_txs(<span class="kw-2">&</span><span class="self">self</span>, include_raw: bool) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="kw">match </span>include_raw {
+ <span class="bool-val">true </span>=> <span class="self">self</span>.select_transaction_details_with_raw(),
+ <span class="bool-val">false </span>=> <span class="self">self</span>.select_transaction_details(),
}
}
- <span class="kw">fn</span> <span class="ident">get_script_pubkey_from_path</span>(
+ <span class="kw">fn </span>get_script_pubkey_from_path(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">child</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_script_pubkey_by_path</span>(<span class="ident">keychain</span>, <span class="ident">child</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">script</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">script</span>)),
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ keychain: KeychainKind,
+ child: u32,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Script>, Error> {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">match </span><span class="self">self</span>.select_script_pubkey_by_path(keychain, child)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(script) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(script)),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">get_path_from_script_pubkey</span>(
+ <span class="kw">fn </span>get_path_from_script_pubkey(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">KeychainKind</span>, <span class="ident">u32</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_script_pubkey_by_script</span>(<span class="ident">script</span>.<span class="ident">as_bytes</span>())<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>))),
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><(KeychainKind, u32)>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_script_pubkey_by_script(script.as_bytes())<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>((keychain, child)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>((keychain, child))),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="kw-2">&</span><span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">select_utxo_by_outpoint</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>.<span class="ident">txid</span>, <span class="ident">outpoint</span>.<span class="ident">vout</span>)
+ <span class="kw">fn </span>get_utxo(<span class="kw-2">&</span><span class="self">self</span>, outpoint: <span class="kw-2">&</span>OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="self">self</span>.select_utxo_by_outpoint(<span class="kw-2">&</span>outpoint.txid, outpoint.vout)
}
- <span class="kw">fn</span> <span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_transaction_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">tx</span>)),
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="kw">fn </span>get_raw_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_transaction_by_txid(txid)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(tx) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(tx)),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">select_transaction_details_by_txid</span>(<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="kw-2">mut</span> <span class="ident">transaction_details</span>) => {
- <span class="kw">if</span> <span class="op">!</span><span class="ident">include_raw</span> {
- <span class="ident">transaction_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">None</span>;
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, txid: <span class="kw-2">&</span>Txid, include_raw: bool) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="kw">match </span><span class="self">self</span>.select_transaction_details_by_txid(txid)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(<span class="kw-2">mut </span>transaction_details) => {
+ <span class="kw">if </span>!include_raw {
+ transaction_details.transaction = <span class="prelude-val">None</span>;
}
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">transaction_details</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(transaction_details))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
}
}
- <span class="kw">fn</span> <span class="ident">get_last_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">select_last_derivation_index_by_keychain</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">value</span>)
+ <span class="kw">fn </span>get_last_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><u32>, Error> {
+ <span class="kw">let </span>keychain = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">let </span>value = <span class="self">self</span>.select_last_derivation_index_by_keychain(keychain)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(value)
}
- <span class="kw">fn</span> <span class="ident">get_sync_time</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SyncTime</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">select_sync_time</span>()
+ <span class="kw">fn </span>get_sync_time(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><SyncTime>, Error> {
+ <span class="self">self</span>.select_sync_time()
}
- <span class="kw">fn</span> <span class="ident">increment_last_index</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">keychain_string</span> <span class="op">=</span> <span class="ident">serde_json::to_string</span>(<span class="kw-2">&</span><span class="ident">keychain</span>)<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">get_last_index</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">value</span>) => {
- <span class="self">self</span>.<span class="ident">update_last_derivation_index</span>(<span class="ident">keychain_string</span>, <span class="ident">value</span> <span class="op">+</span> <span class="number">1</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">value</span> <span class="op">+</span> <span class="number">1</span>)
+ <span class="kw">fn </span>increment_last_index(<span class="kw-2">&mut </span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="kw">let </span>keychain_string = serde_json::to_string(<span class="kw-2">&</span>keychain)<span class="question-mark">?</span>;
+ <span class="kw">match </span><span class="self">self</span>.get_last_index(keychain)<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(value) => {
+ <span class="self">self</span>.update_last_derivation_index(keychain_string, value + <span class="number">1</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(value + <span class="number">1</span>)
}
- <span class="prelude-val">None</span> => {
- <span class="self">self</span>.<span class="ident">insert_last_derivation_index</span>(<span class="ident">keychain_string</span>, <span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">None </span>=> {
+ <span class="self">self</span>.insert_last_derivation_index(keychain_string, <span class="number">0</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="number">0</span>)
}
}
}
}
-<span class="kw">impl</span> <span class="ident">BatchDatabase</span> <span class="kw">for</span> <span class="ident">SqliteDatabase</span> {
- <span class="kw">type</span> <span class="ident">Batch</span> <span class="op">=</span> <span class="ident">SqliteDatabase</span>;
+<span class="kw">impl </span>BatchDatabase <span class="kw">for </span>SqliteDatabase {
+ <span class="kw">type </span>Batch = SqliteDatabase;
- <span class="kw">fn</span> <span class="ident">begin_batch</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident"><span class="self">Self</span>::Batch</span> {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">SqliteDatabase::new</span>(<span class="self">self</span>.<span class="ident">path</span>.<span class="ident">clone</span>());
- <span class="ident">db</span>.<span class="ident">connection</span>.<span class="ident">execute</span>(<span class="string">"BEGIN TRANSACTION"</span>, []).<span class="ident">unwrap</span>();
- <span class="ident">db</span>
+ <span class="kw">fn </span>begin_batch(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self</span>::Batch {
+ <span class="kw">let </span>db = SqliteDatabase::new(<span class="self">self</span>.path.clone());
+ db.connection.execute(<span class="string">"BEGIN TRANSACTION"</span>, []).unwrap();
+ db
}
- <span class="kw">fn</span> <span class="ident">commit_batch</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">batch</span>: <span class="ident"><span class="self">Self</span>::Batch</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="ident">batch</span>.<span class="ident">connection</span>.<span class="ident">execute</span>(<span class="string">"COMMIT TRANSACTION"</span>, [])<span class="question-mark">?</span>;
+ <span class="kw">fn </span>commit_batch(<span class="kw-2">&mut </span><span class="self">self</span>, batch: <span class="self">Self</span>::Batch) -> <span class="prelude-ty">Result</span><(), Error> {
+ batch.connection.execute(<span class="string">"COMMIT TRANSACTION"</span>, [])<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_connection</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">AsRef</span><span class="op"><</span><span class="ident">Path</span><span class="op">></span><span class="op">></span>(<span class="ident">path</span>: <span class="kw-2">&</span><span class="ident">T</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Connection</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">connection</span> <span class="op">=</span> <span class="ident">Connection::open</span>(<span class="ident">path</span>)<span class="question-mark">?</span>;
- <span class="ident">migrate</span>(<span class="kw-2">&mut</span> <span class="ident">connection</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">connection</span>)
+<span class="kw">pub fn </span>get_connection<T: AsRef<Path>>(path: <span class="kw-2">&</span>T) -> <span class="prelude-ty">Result</span><Connection, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>connection = Connection::open(path)<span class="question-mark">?</span>;
+ migrate(<span class="kw-2">&mut </span>connection)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(connection)
}
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_schema_version</span>(<span class="ident">conn</span>: <span class="kw-2">&</span><span class="ident">Connection</span>) -> <span class="ident">rusqlite::Result</span><span class="op"><</span><span class="ident">i32</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">statement</span> <span class="op">=</span> <span class="ident">conn</span>.<span class="ident">prepare_cached</span>(<span class="string">"SELECT version FROM version"</span>);
- <span class="kw">match</span> <span class="ident">statement</span> {
- <span class="prelude-val">Err</span>(<span class="ident">rusqlite::Error::SqliteFailure</span>(<span class="ident">e</span>, <span class="prelude-val">Some</span>(<span class="ident">msg</span>))) => {
- <span class="kw">if</span> <span class="ident">msg</span> <span class="op">==</span> <span class="string">"no such table: version"</span> {
+<span class="kw">pub fn </span>get_schema_version(conn: <span class="kw-2">&</span>Connection) -> rusqlite::Result<i32> {
+ <span class="kw">let </span>statement = conn.prepare_cached(<span class="string">"SELECT version FROM version"</span>);
+ <span class="kw">match </span>statement {
+ <span class="prelude-val">Err</span>(rusqlite::Error::SqliteFailure(e, <span class="prelude-val">Some</span>(msg))) => {
+ <span class="kw">if </span>msg == <span class="string">"no such table: version" </span>{
<span class="prelude-val">Ok</span>(<span class="number">0</span>)
- } <span class="kw">else</span> {
- <span class="prelude-val">Err</span>(<span class="ident">rusqlite::Error::SqliteFailure</span>(<span class="ident">e</span>, <span class="prelude-val">Some</span>(<span class="ident">msg</span>)))
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(rusqlite::Error::SqliteFailure(e, <span class="prelude-val">Some</span>(msg)))
}
}
- <span class="prelude-val">Ok</span>(<span class="kw-2">mut</span> <span class="ident">stmt</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">stmt</span>.<span class="ident">query</span>([])<span class="question-mark">?</span>;
- <span class="kw">match</span> <span class="ident">rows</span>.<span class="ident">next</span>()<span class="question-mark">?</span> {
- <span class="prelude-val">Some</span>(<span class="ident">row</span>) => {
- <span class="kw">let</span> <span class="ident">version</span>: <span class="ident">i32</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">version</span>)
+ <span class="prelude-val">Ok</span>(<span class="kw-2">mut </span>stmt) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = stmt.query([])<span class="question-mark">?</span>;
+ <span class="kw">match </span>rows.next()<span class="question-mark">? </span>{
+ <span class="prelude-val">Some</span>(row) => {
+ <span class="kw">let </span>version: i32 = row.get(<span class="number">0</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(version)
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="number">0</span>),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(<span class="number">0</span>),
}
}
- <span class="kw">_</span> => <span class="prelude-val">Ok</span>(<span class="number">0</span>),
+ <span class="kw">_ </span>=> <span class="prelude-val">Ok</span>(<span class="number">0</span>),
}
}
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">set_schema_version</span>(<span class="ident">conn</span>: <span class="kw-2">&</span><span class="ident">Connection</span>, <span class="ident">version</span>: <span class="ident">i32</span>) -> <span class="ident">rusqlite::Result</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span> {
- <span class="ident">conn</span>.<span class="ident">execute</span>(
+<span class="kw">pub fn </span>set_schema_version(conn: <span class="kw-2">&</span>Connection, version: i32) -> rusqlite::Result<usize> {
+ conn.execute(
<span class="string">"UPDATE version SET version=:version"</span>,
- <span class="macro">named_params!</span> {<span class="string">":version"</span>: <span class="ident">version</span>},
+ <span class="macro">named_params! </span>{<span class="string">":version"</span>: version},
)
}
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">migrate</span>(<span class="ident">conn</span>: <span class="kw-2">&mut</span> <span class="ident">Connection</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">version</span> <span class="op">=</span> <span class="ident">get_schema_version</span>(<span class="ident">conn</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">stmts</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">MIGRATIONS</span>[(<span class="ident">version</span> <span class="kw">as</span> <span class="ident">usize</span>)..];
+<span class="kw">pub fn </span>migrate(conn: <span class="kw-2">&mut </span>Connection) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>version = get_schema_version(conn)<span class="question-mark">?</span>;
+ <span class="kw">let </span>stmts = <span class="kw-2">&</span>MIGRATIONS[(version <span class="kw">as </span>usize)..];
- <span class="comment">// begin transaction, all migration statements and new schema version commit or rollback</span>
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">conn</span>.<span class="ident">transaction</span>()<span class="question-mark">?</span>;
+ <span class="comment">// begin transaction, all migration statements and new schema version commit or rollback
+ </span><span class="kw">let </span>tx = conn.transaction()<span class="question-mark">?</span>;
- <span class="comment">// execute every statement and return `Some` new schema version</span>
- <span class="comment">// if execution fails, return `Error::Rusqlite`</span>
- <span class="comment">// if no statements executed returns `None`</span>
- <span class="kw">let</span> <span class="ident">new_version</span> <span class="op">=</span> <span class="ident">stmts</span>
- .<span class="ident">iter</span>()
- .<span class="ident">enumerate</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">version_stmt</span><span class="op">|</span> {
+ <span class="comment">// execute every statement and return `Some` new schema version
+ // if execution fails, return `Error::Rusqlite`
+ // if no statements executed returns `None`
+ </span><span class="kw">let </span>new_version = stmts
+ .iter()
+ .enumerate()
+ .map(|version_stmt| {
<span class="macro">log::info!</span>(
<span class="string">"executing db migration {}: `{}`"</span>,
- <span class="ident">version</span> <span class="op">+</span> <span class="ident">version_stmt</span>.<span class="number">0</span> <span class="kw">as</span> <span class="ident">i32</span> <span class="op">+</span> <span class="number">1</span>,
- <span class="ident">version_stmt</span>.<span class="number">1</span>
- );
- <span class="ident">tx</span>.<span class="ident">execute</span>(<span class="ident">version_stmt</span>.<span class="number">1</span>, [])
- <span class="comment">// map result value to next migration version</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">version_stmt</span>.<span class="number">0</span> <span class="kw">as</span> <span class="ident">i32</span> <span class="op">+</span> <span class="ident">version</span> <span class="op">+</span> <span class="number">1</span>)
+ version + version_stmt.<span class="number">0 </span><span class="kw">as </span>i32 + <span class="number">1</span>,
+ version_stmt.<span class="number">1
+ </span>);
+ tx.execute(version_stmt.<span class="number">1</span>, [])
+ <span class="comment">// map result value to next migration version
+ </span>.map(|<span class="kw">_</span>| version_stmt.<span class="number">0 </span><span class="kw">as </span>i32 + version + <span class="number">1</span>)
})
- .<span class="ident">last</span>()
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>;
+ .last()
+ .transpose()<span class="question-mark">?</span>;
- <span class="comment">// if `Some` new statement version, set new schema version</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">version</span>) <span class="op">=</span> <span class="ident">new_version</span> {
- <span class="ident">set_schema_version</span>(<span class="kw-2">&</span><span class="ident">tx</span>, <span class="ident">version</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
+ <span class="comment">// if `Some` new statement version, set new schema version
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>(version) = new_version {
+ set_schema_version(<span class="kw-2">&</span>tx, version)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
<span class="macro">log::info!</span>(<span class="string">"db up to date, no migration needed"</span>);
}
- <span class="comment">// commit transaction</span>
- <span class="ident">tx</span>.<span class="ident">commit</span>()<span class="question-mark">?</span>;
+ <span class="comment">// commit transaction
+ </span>tx.commit()<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::SqliteDatabase</span>;
- <span class="kw">use</span> <span class="ident">std::time</span>::{<span class="ident">SystemTime</span>, <span class="ident">UNIX_EPOCH</span>};
+<span class="attr">#[cfg(test)]
+</span><span class="kw">pub mod </span>test {
+ <span class="kw">use </span><span class="kw">crate</span>::database::SqliteDatabase;
+ <span class="kw">use </span>std::time::{SystemTime, UNIX_EPOCH};
- <span class="kw">fn</span> <span class="ident">get_database</span>() -> <span class="ident">SqliteDatabase</span> {
- <span class="kw">let</span> <span class="ident">time</span> <span class="op">=</span> <span class="ident">SystemTime::now</span>().<span class="ident">duration_since</span>(<span class="ident">UNIX_EPOCH</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">dir</span> <span class="op">=</span> <span class="ident">std::env::temp_dir</span>();
- <span class="ident">dir</span>.<span class="ident">push</span>(<span class="macro">format!</span>(<span class="string">"bdk_{}"</span>, <span class="ident">time</span>.<span class="ident">as_nanos</span>()));
- <span class="ident">SqliteDatabase::new</span>(<span class="ident">String::from</span>(<span class="ident">dir</span>.<span class="ident">to_str</span>().<span class="ident">unwrap</span>()))
+ <span class="kw">fn </span>get_database() -> SqliteDatabase {
+ <span class="kw">let </span>time = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>dir = std::env::temp_dir();
+ dir.push(<span class="macro">format!</span>(<span class="string">"bdk_{}"</span>, time.as_nanos()));
+ SqliteDatabase::new(String::from(dir.to_str().unwrap()))
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_script_pubkey</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_script_pubkey(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_batch_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_batch_script_pubkey</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_batch_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_batch_script_pubkey(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_script_pubkey</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_iter_script_pubkey(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_script_pubkey</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_del_script_pubkey(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_utxo</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_utxo</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_utxo() {
+ <span class="kw">crate</span>::database::test::test_utxo(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_raw_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_raw_tx</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_raw_tx() {
+ <span class="kw">crate</span>::database::test::test_raw_tx(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_tx</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_tx() {
+ <span class="kw">crate</span>::database::test::test_tx(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_last_index</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_last_index</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_last_index() {
+ <span class="kw">crate</span>::database::test::test_last_index(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sync_time</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_sync_time</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sync_time() {
+ <span class="kw">crate</span>::database::test::test_sync_time(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_txs</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_list_transaction</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_txs() {
+ <span class="kw">crate</span>::database::test::test_list_transaction(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_raw_txs</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_raw_txs</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_raw_txs() {
+ <span class="kw">crate</span>::database::test::test_iter_raw_txs(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_path_from_script_pubkey</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_path_from_script_pubkey</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_path_from_script_pubkey() {
+ <span class="kw">crate</span>::database::test::test_del_path_from_script_pubkey(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_iter_script_pubkeys</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_iter_script_pubkeys</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_iter_script_pubkeys() {
+ <span class="kw">crate</span>::database::test::test_iter_script_pubkeys(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_utxo</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_utxo</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_utxo() {
+ <span class="kw">crate</span>::database::test::test_del_utxo(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_raw_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_raw_tx</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_raw_tx() {
+ <span class="kw">crate</span>::database::test::test_del_raw_tx(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_tx</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_tx</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_tx() {
+ <span class="kw">crate</span>::database::test::test_del_tx(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_del_last_index</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_del_last_index</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_del_last_index() {
+ <span class="kw">crate</span>::database::test::test_del_last_index(get_database());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_descriptor_checksum</span>() {
- <span class="ident"><span class="kw">crate</span>::database::test::test_check_descriptor_checksum</span>(<span class="ident">get_database</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_descriptor_checksum() {
+ <span class="kw">crate</span>::database::test::test_check_descriptor_checksum(get_database());
}
- <span class="comment">// Issue 801: https://github.com/bitcoindevkit/bdk/issues/801</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_unique_spks</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin::hashes::hex::FromHex</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::<span class="kw-2">*</span>;
+ <span class="comment">// Issue 801: https://github.com/bitcoindevkit/bdk/issues/801
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_unique_spks() {
+ <span class="kw">use </span><span class="kw">crate</span>::bitcoin::hashes::hex::FromHex;
+ <span class="kw">use </span><span class="kw">crate</span>::database::<span class="kw-2">*</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">get_database</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>db = get_database();
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).<span class="ident">unwrap</span>(),
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(<span class="string">"76a91402306a7c23f3e8010de41e9e591348bb83f11daa88ac"</span>).unwrap(),
);
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="number">42</span>;
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">KeychainKind::External</span>;
+ <span class="kw">let </span>path = <span class="number">42</span>;
+ <span class="kw">let </span>keychain = KeychainKind::External;
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="number">100</span> {
- <span class="ident">db</span>.<span class="ident">set_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">script</span>, <span class="ident">keychain</span>, <span class="ident">path</span>).<span class="ident">unwrap</span>();
+ <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">100 </span>{
+ db.set_script_pubkey(<span class="kw-2">&</span>script, keychain, path).unwrap();
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">statement</span> <span class="op">=</span> <span class="ident">db</span>
- .<span class="ident">connection</span>
- .<span class="ident">prepare_cached</span>(
+ <span class="kw">let </span><span class="kw-2">mut </span>statement = db
+ .connection
+ .prepare_cached(
<span class="string">"select keychain,child,count(child) from script_pubkeys group by keychain,child;"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rows</span> <span class="op">=</span> <span class="ident">statement</span>.<span class="ident">query</span>([]).<span class="ident">unwrap</span>();
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">row</span>) <span class="op">=</span> <span class="ident">rows</span>.<span class="ident">next</span>().<span class="ident">unwrap</span>() {
- <span class="kw">let</span> <span class="ident">keychain</span>: <span class="ident">String</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">0</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">child</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">1</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">count</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="ident">row</span>.<span class="ident">get</span>(<span class="number">2</span>).<span class="ident">unwrap</span>();
+ .unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>rows = statement.query([]).unwrap();
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(row) = rows.next().unwrap() {
+ <span class="kw">let </span>keychain: String = row.get(<span class="number">0</span>).unwrap();
+ <span class="kw">let </span>child: u32 = row.get(<span class="number">1</span>).unwrap();
+ <span class="kw">let </span>count: usize = row.get(<span class="number">2</span>).unwrap();
<span class="macro">assert!</span>(
- <span class="ident">count</span> <span class="op">==</span> <span class="number">1</span>,
+ count == <span class="number">1</span>,
<span class="string">"keychain={}, child={}, count={}"</span>,
- <span class="ident">keychain</span>,
- <span class="ident">child</span>,
- <span class="ident">count</span>
+ keychain,
+ child,
+ count
);
}
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/checksum.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>checksum.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/checksum.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>checksum.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Descriptor checksum</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module contains a re-implementation of the function used by Bitcoin Core to calculate the</span>
-<span class="doccomment">//! checksum of a descriptor</span>
+</span><span class="doccomment">//! Descriptor checksum
+//!
+//! This module contains a re-implementation of the function used by Bitcoin Core to calculate the
+//! checksum of a descriptor
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::DescriptorError</span>;
+</span><span class="kw">use </span><span class="kw">crate</span>::descriptor::DescriptorError;
-<span class="kw">const</span> <span class="ident">INPUT_CHARSET</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="string">b"0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVWXYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#\"\\ "</span>;
-<span class="kw">const</span> <span class="ident">CHECKSUM_CHARSET</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="string">b"qpzry9x8gf2tvdw0s3jn54khce6mua7l"</span>;
+<span class="kw">const </span>INPUT_CHARSET: <span class="kw-2">&</span>[u8] = <span class="string">b"0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVWXYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#\"\\ "</span>;
+<span class="kw">const </span>CHECKSUM_CHARSET: <span class="kw-2">&</span>[u8] = <span class="string">b"qpzry9x8gf2tvdw0s3jn54khce6mua7l"</span>;
-<span class="kw">fn</span> <span class="ident">poly_mod</span>(<span class="kw-2">mut</span> <span class="ident">c</span>: <span class="ident">u64</span>, <span class="ident">val</span>: <span class="ident">u64</span>) -> <span class="ident">u64</span> {
- <span class="kw">let</span> <span class="ident">c0</span> <span class="op">=</span> <span class="ident">c</span> <span class="op">></span><span class="op">></span> <span class="number">35</span>;
- <span class="ident">c</span> <span class="op">=</span> ((<span class="ident">c</span> <span class="op">&</span> <span class="number">0x7ffffffff</span>) <span class="op"><</span><span class="op"><</span> <span class="number">5</span>) <span class="op">^</span> <span class="ident">val</span>;
- <span class="kw">if</span> <span class="ident">c0</span> <span class="op">&</span> <span class="number">1</span> <span class="op">></span> <span class="number">0</span> {
- <span class="ident">c</span> <span class="op">^</span><span class="op">=</span> <span class="number">0xf5dee51989</span>
- };
- <span class="kw">if</span> <span class="ident">c0</span> <span class="op">&</span> <span class="number">2</span> <span class="op">></span> <span class="number">0</span> {
- <span class="ident">c</span> <span class="op">^</span><span class="op">=</span> <span class="number">0xa9fdca3312</span>
- };
- <span class="kw">if</span> <span class="ident">c0</span> <span class="op">&</span> <span class="number">4</span> <span class="op">></span> <span class="number">0</span> {
- <span class="ident">c</span> <span class="op">^</span><span class="op">=</span> <span class="number">0x1bab10e32d</span>
- };
- <span class="kw">if</span> <span class="ident">c0</span> <span class="op">&</span> <span class="number">8</span> <span class="op">></span> <span class="number">0</span> {
- <span class="ident">c</span> <span class="op">^</span><span class="op">=</span> <span class="number">0x3706b1677a</span>
- };
- <span class="kw">if</span> <span class="ident">c0</span> <span class="op">&</span> <span class="number">16</span> <span class="op">></span> <span class="number">0</span> {
- <span class="ident">c</span> <span class="op">^</span><span class="op">=</span> <span class="number">0x644d626ffd</span>
- };
+<span class="kw">fn </span>poly_mod(<span class="kw-2">mut </span>c: u64, val: u64) -> u64 {
+ <span class="kw">let </span>c0 = c >> <span class="number">35</span>;
+ c = ((c & <span class="number">0x7ffffffff</span>) << <span class="number">5</span>) ^ val;
+ <span class="kw">if </span>c0 & <span class="number">1 </span>> <span class="number">0 </span>{
+ c ^= <span class="number">0xf5dee51989
+ </span>};
+ <span class="kw">if </span>c0 & <span class="number">2 </span>> <span class="number">0 </span>{
+ c ^= <span class="number">0xa9fdca3312
+ </span>};
+ <span class="kw">if </span>c0 & <span class="number">4 </span>> <span class="number">0 </span>{
+ c ^= <span class="number">0x1bab10e32d
+ </span>};
+ <span class="kw">if </span>c0 & <span class="number">8 </span>> <span class="number">0 </span>{
+ c ^= <span class="number">0x3706b1677a
+ </span>};
+ <span class="kw">if </span>c0 & <span class="number">16 </span>> <span class="number">0 </span>{
+ c ^= <span class="number">0x644d626ffd
+ </span>};
- <span class="ident">c</span>
+ c
}
-<span class="doccomment">/// Computes the checksum bytes of a descriptor.</span>
-<span class="doccomment">/// `exclude_hash = true` ignores all data after the first '#' (inclusive).</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">calc_checksum_bytes_internal</span>(
- <span class="kw-2">mut</span> <span class="ident">desc</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- <span class="ident">exclude_hash</span>: <span class="ident">bool</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>[<span class="ident">u8</span>; <span class="number">8</span>], <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">c</span> <span class="op">=</span> <span class="number">1</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cls</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">clscount</span> <span class="op">=</span> <span class="number">0</span>;
+<span class="doccomment">/// Computes the checksum bytes of a descriptor.
+/// `exclude_hash = true` ignores all data after the first '#' (inclusive).
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>calc_checksum_bytes_internal(
+ <span class="kw-2">mut </span>desc: <span class="kw-2">&</span>str,
+ exclude_hash: bool,
+) -> <span class="prelude-ty">Result</span><[u8; <span class="number">8</span>], DescriptorError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>c = <span class="number">1</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>cls = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>clscount = <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">original_checksum</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="kw">if</span> <span class="ident">exclude_hash</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">split</span>) <span class="op">=</span> <span class="ident">desc</span>.<span class="ident">split_once</span>(<span class="string">'#'</span>) {
- <span class="ident">desc</span> <span class="op">=</span> <span class="ident">split</span>.<span class="number">0</span>;
- <span class="ident">original_checksum</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">split</span>.<span class="number">1</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>original_checksum = <span class="prelude-val">None</span>;
+ <span class="kw">if </span>exclude_hash {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(split) = desc.split_once(<span class="string">'#'</span>) {
+ desc = split.<span class="number">0</span>;
+ original_checksum = <span class="prelude-val">Some</span>(split.<span class="number">1</span>);
}
}
- <span class="kw">for</span> <span class="ident">ch</span> <span class="kw">in</span> <span class="ident">desc</span>.<span class="ident">as_bytes</span>() {
- <span class="kw">let</span> <span class="ident">pos</span> <span class="op">=</span> <span class="ident">INPUT_CHARSET</span>
- .<span class="ident">iter</span>()
- .<span class="ident">position</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="ident">b</span> <span class="op">==</span> <span class="ident">ch</span>)
- .<span class="ident">ok_or</span>(<span class="ident">DescriptorError::InvalidDescriptorCharacter</span>(<span class="kw-2">*</span><span class="ident">ch</span>))<span class="question-mark">?</span> <span class="kw">as</span> <span class="ident">u64</span>;
- <span class="ident">c</span> <span class="op">=</span> <span class="ident">poly_mod</span>(<span class="ident">c</span>, <span class="ident">pos</span> <span class="op">&</span> <span class="number">31</span>);
- <span class="ident">cls</span> <span class="op">=</span> <span class="ident">cls</span> <span class="op">*</span> <span class="number">3</span> <span class="op">+</span> (<span class="ident">pos</span> <span class="op">></span><span class="op">></span> <span class="number">5</span>);
- <span class="ident">clscount</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
- <span class="kw">if</span> <span class="ident">clscount</span> <span class="op">==</span> <span class="number">3</span> {
- <span class="ident">c</span> <span class="op">=</span> <span class="ident">poly_mod</span>(<span class="ident">c</span>, <span class="ident">cls</span>);
- <span class="ident">cls</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="ident">clscount</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="kw">for </span>ch <span class="kw">in </span>desc.as_bytes() {
+ <span class="kw">let </span>pos = INPUT_CHARSET
+ .iter()
+ .position(|b| b == ch)
+ .ok_or(DescriptorError::InvalidDescriptorCharacter(<span class="kw-2">*</span>ch))<span class="question-mark">? </span><span class="kw">as </span>u64;
+ c = poly_mod(c, pos & <span class="number">31</span>);
+ cls = cls * <span class="number">3 </span>+ (pos >> <span class="number">5</span>);
+ clscount += <span class="number">1</span>;
+ <span class="kw">if </span>clscount == <span class="number">3 </span>{
+ c = poly_mod(c, cls);
+ cls = <span class="number">0</span>;
+ clscount = <span class="number">0</span>;
}
}
- <span class="kw">if</span> <span class="ident">clscount</span> <span class="op">></span> <span class="number">0</span> {
- <span class="ident">c</span> <span class="op">=</span> <span class="ident">poly_mod</span>(<span class="ident">c</span>, <span class="ident">cls</span>);
+ <span class="kw">if </span>clscount > <span class="number">0 </span>{
+ c = poly_mod(c, cls);
}
- (<span class="number">0</span>..<span class="number">8</span>).<span class="ident">for_each</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">c</span> <span class="op">=</span> <span class="ident">poly_mod</span>(<span class="ident">c</span>, <span class="number">0</span>));
- <span class="ident">c</span> <span class="op">^</span><span class="op">=</span> <span class="number">1</span>;
+ (<span class="number">0</span>..<span class="number">8</span>).for_each(|<span class="kw">_</span>| c = poly_mod(c, <span class="number">0</span>));
+ c ^= <span class="number">1</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">checksum</span> <span class="op">=</span> [<span class="number">0_u8</span>; <span class="number">8</span>];
- <span class="kw">for</span> <span class="ident">j</span> <span class="kw">in</span> <span class="number">0</span>..<span class="number">8</span> {
- <span class="ident">checksum</span>[<span class="ident">j</span>] <span class="op">=</span> <span class="ident">CHECKSUM_CHARSET</span>[((<span class="ident">c</span> <span class="op">></span><span class="op">></span> (<span class="number">5</span> <span class="op">*</span> (<span class="number">7</span> <span class="op">-</span> <span class="ident">j</span>))) <span class="op">&</span> <span class="number">31</span>) <span class="kw">as</span> <span class="ident">usize</span>];
+ <span class="kw">let </span><span class="kw-2">mut </span>checksum = [<span class="number">0_u8</span>; <span class="number">8</span>];
+ <span class="kw">for </span>j <span class="kw">in </span><span class="number">0</span>..<span class="number">8 </span>{
+ checksum[j] = CHECKSUM_CHARSET[((c >> (<span class="number">5 </span>* (<span class="number">7 </span>- j))) & <span class="number">31</span>) <span class="kw">as </span>usize];
}
- <span class="comment">// if input data already had a checksum, check calculated checksum against original checksum</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">original_checksum</span>) <span class="op">=</span> <span class="ident">original_checksum</span> {
- <span class="kw">if</span> <span class="ident">original_checksum</span>.<span class="ident">as_bytes</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">checksum</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">DescriptorError::InvalidDescriptorChecksum</span>);
+ <span class="comment">// if input data already had a checksum, check calculated checksum against original checksum
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>(original_checksum) = original_checksum {
+ <span class="kw">if </span>original_checksum.as_bytes() != checksum {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(DescriptorError::InvalidDescriptorChecksum);
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">checksum</span>)
+ <span class="prelude-val">Ok</span>(checksum)
}
-<span class="doccomment">/// Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">calc_checksum_bytes</span>(<span class="ident">desc</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>[<span class="ident">u8</span>; <span class="number">8</span>], <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">calc_checksum_bytes_internal</span>(<span class="ident">desc</span>, <span class="bool-val">true</span>)
+<span class="doccomment">/// Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation
+</span><span class="kw">pub fn </span>calc_checksum_bytes(desc: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><[u8; <span class="number">8</span>], DescriptorError> {
+ calc_checksum_bytes_internal(desc, <span class="bool-val">true</span>)
}
-<span class="doccomment">/// Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">calc_checksum</span>(<span class="ident">desc</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="comment">// unsafe is okay here as the checksum only uses bytes in `CHECKSUM_CHARSET`</span>
- <span class="ident">calc_checksum_bytes_internal</span>(<span class="ident">desc</span>, <span class="bool-val">true</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="kw">unsafe</span> { <span class="ident">String::from_utf8_unchecked</span>(<span class="ident">b</span>.<span class="ident">to_vec</span>()) })
+<span class="doccomment">/// Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation
+</span><span class="kw">pub fn </span>calc_checksum(desc: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><String, DescriptorError> {
+ <span class="comment">// unsafe is okay here as the checksum only uses bytes in `CHECKSUM_CHARSET`
+ </span>calc_checksum_bytes_internal(desc, <span class="bool-val">true</span>)
+ .map(|b| <span class="kw">unsafe </span>{ String::from_utf8_unchecked(b.to_vec()) })
}
-<span class="comment">// TODO in release 0.25.0, remove get_checksum_bytes and get_checksum</span>
-<span class="comment">// TODO in release 0.25.0, consolidate calc_checksum_bytes_internal into calc_checksum_bytes</span>
+<span class="comment">// TODO in release 0.25.0, remove get_checksum_bytes and get_checksum
+// TODO in release 0.25.0, consolidate calc_checksum_bytes_internal into calc_checksum_bytes
-<span class="doccomment">/// Compute the checksum bytes of a descriptor</span>
-<span class="attribute">#[<span class="ident">deprecated</span>(
- <span class="ident">since</span> <span class="op">=</span> <span class="string">"0.24.0"</span>,
- <span class="ident">note</span> <span class="op">=</span> <span class="string">"Use new `calc_checksum_bytes` function which excludes any existing checksum in the descriptor string before calculating the checksum hash bytes. See https://github.com/bitcoindevkit/bdk/pull/765."</span>
-)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_checksum_bytes</span>(<span class="ident">desc</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>[<span class="ident">u8</span>; <span class="number">8</span>], <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">calc_checksum_bytes_internal</span>(<span class="ident">desc</span>, <span class="bool-val">false</span>)
+</span><span class="doccomment">/// Compute the checksum bytes of a descriptor
+</span><span class="attr">#[deprecated(
+ since = <span class="string">"0.24.0"</span>,
+ note = <span class="string">"Use new `calc_checksum_bytes` function which excludes any existing checksum in the descriptor string before calculating the checksum hash bytes. See https://github.com/bitcoindevkit/bdk/pull/765."
+</span>)]
+</span><span class="kw">pub fn </span>get_checksum_bytes(desc: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><[u8; <span class="number">8</span>], DescriptorError> {
+ calc_checksum_bytes_internal(desc, <span class="bool-val">false</span>)
}
-<span class="doccomment">/// Compute the checksum of a descriptor</span>
-<span class="attribute">#[<span class="ident">deprecated</span>(
- <span class="ident">since</span> <span class="op">=</span> <span class="string">"0.24.0"</span>,
- <span class="ident">note</span> <span class="op">=</span> <span class="string">"Use new `calc_checksum` function which excludes any existing checksum in the descriptor string before calculating the checksum hash. See https://github.com/bitcoindevkit/bdk/pull/765."</span>
-)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_checksum</span>(<span class="ident">desc</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="comment">// unsafe is okay here as the checksum only uses bytes in `CHECKSUM_CHARSET`</span>
- <span class="ident">calc_checksum_bytes_internal</span>(<span class="ident">desc</span>, <span class="bool-val">false</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">b</span><span class="op">|</span> <span class="kw">unsafe</span> { <span class="ident">String::from_utf8_unchecked</span>(<span class="ident">b</span>.<span class="ident">to_vec</span>()) })
+<span class="doccomment">/// Compute the checksum of a descriptor
+</span><span class="attr">#[deprecated(
+ since = <span class="string">"0.24.0"</span>,
+ note = <span class="string">"Use new `calc_checksum` function which excludes any existing checksum in the descriptor string before calculating the checksum hash. See https://github.com/bitcoindevkit/bdk/pull/765."
+</span>)]
+</span><span class="kw">pub fn </span>get_checksum(desc: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><String, DescriptorError> {
+ <span class="comment">// unsafe is okay here as the checksum only uses bytes in `CHECKSUM_CHARSET`
+ </span>calc_checksum_bytes_internal(desc, <span class="bool-val">false</span>)
+ .map(|b| <span class="kw">unsafe </span>{ String::from_utf8_unchecked(b.to_vec()) })
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::calc_checksum</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::calc_checksum;
- <span class="comment">// test calc_checksum() function; it should return the same value as Bitcoin Core</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_calc_checksum</span>() {
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">calc_checksum</span>(<span class="ident">desc</span>).<span class="ident">unwrap</span>(), <span class="string">"tqz0nc62"</span>);
+ <span class="comment">// test calc_checksum() function; it should return the same value as Bitcoin Core
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_calc_checksum() {
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>;
+ <span class="macro">assert_eq!</span>(calc_checksum(desc).unwrap(), <span class="string">"tqz0nc62"</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)"</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">calc_checksum</span>(<span class="ident">desc</span>).<span class="ident">unwrap</span>(), <span class="string">"lasegmfs"</span>);
+ <span class="kw">let </span>desc = <span class="string">"pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)"</span>;
+ <span class="macro">assert_eq!</span>(calc_checksum(desc).unwrap(), <span class="string">"lasegmfs"</span>);
}
- <span class="comment">// test calc_checksum() function; it should return the same value as Bitcoin Core even if the</span>
- <span class="comment">// descriptor string includes a checksum hash</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_calc_checksum_with_checksum_hash</span>() {
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62"</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">calc_checksum</span>(<span class="ident">desc</span>).<span class="ident">unwrap</span>(), <span class="string">"tqz0nc62"</span>);
+ <span class="comment">// test calc_checksum() function; it should return the same value as Bitcoin Core even if the
+ // descriptor string includes a checksum hash
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_calc_checksum_with_checksum_hash() {
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62"</span>;
+ <span class="macro">assert_eq!</span>(calc_checksum(desc).unwrap(), <span class="string">"tqz0nc62"</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmfs"</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">calc_checksum</span>(<span class="ident">desc</span>).<span class="ident">unwrap</span>(), <span class="string">"lasegmfs"</span>);
+ <span class="kw">let </span>desc = <span class="string">"pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmfs"</span>;
+ <span class="macro">assert_eq!</span>(calc_checksum(desc).unwrap(), <span class="string">"lasegmfs"</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc26"</span>;
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc26"</span>;
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">calc_checksum</span>(<span class="ident">desc</span>).<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::InvalidDescriptorChecksum</span>)
+ calc_checksum(desc).err(),
+ <span class="prelude-val">Some</span>(DescriptorError::InvalidDescriptorChecksum)
));
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmsf"</span>;
+ <span class="kw">let </span>desc = <span class="string">"pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmsf"</span>;
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">calc_checksum</span>(<span class="ident">desc</span>).<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::InvalidDescriptorChecksum</span>)
+ calc_checksum(desc).err(),
+ <span class="prelude-val">Some</span>(DescriptorError::InvalidDescriptorChecksum)
));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_calc_checksum_invalid_character</span>() {
- <span class="kw">let</span> <span class="ident">sparkle_heart</span> <span class="op">=</span> <span class="kw">unsafe</span> { <span class="ident">std::str::from_utf8_unchecked</span>(<span class="kw-2">&</span>[<span class="number">240</span>, <span class="number">159</span>, <span class="number">146</span>, <span class="number">150</span>]) };
- <span class="kw">let</span> <span class="ident">invalid_desc</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcL{}fjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>, <span class="ident">sparkle_heart</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_calc_checksum_invalid_character() {
+ <span class="kw">let </span>sparkle_heart = <span class="kw">unsafe </span>{ std::str::from_utf8_unchecked(<span class="kw-2">&</span>[<span class="number">240</span>, <span class="number">159</span>, <span class="number">146</span>, <span class="number">150</span>]) };
+ <span class="kw">let </span>invalid_desc = <span class="macro">format!</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcL{}fjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>, sparkle_heart);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">calc_checksum</span>(<span class="kw-2">&</span><span class="ident">invalid_desc</span>).<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::InvalidDescriptorCharacter</span>(<span class="ident">invalid_char</span>)) <span class="kw">if</span> <span class="ident">invalid_char</span> <span class="op">==</span> <span class="ident">sparkle_heart</span>.<span class="ident">as_bytes</span>()[<span class="number">0</span>]
+ calc_checksum(<span class="kw-2">&</span>invalid_desc).err(),
+ <span class="prelude-val">Some</span>(DescriptorError::InvalidDescriptorCharacter(invalid_char)) <span class="kw">if </span>invalid_char == sparkle_heart.as_bytes()[<span class="number">0</span>]
));
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/dsl.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>dsl.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-<span id="1001">1001</span>
-<span id="1002">1002</span>
-<span id="1003">1003</span>
-<span id="1004">1004</span>
-<span id="1005">1005</span>
-<span id="1006">1006</span>
-<span id="1007">1007</span>
-<span id="1008">1008</span>
-<span id="1009">1009</span>
-<span id="1010">1010</span>
-<span id="1011">1011</span>
-<span id="1012">1012</span>
-<span id="1013">1013</span>
-<span id="1014">1014</span>
-<span id="1015">1015</span>
-<span id="1016">1016</span>
-<span id="1017">1017</span>
-<span id="1018">1018</span>
-<span id="1019">1019</span>
-<span id="1020">1020</span>
-<span id="1021">1021</span>
-<span id="1022">1022</span>
-<span id="1023">1023</span>
-<span id="1024">1024</span>
-<span id="1025">1025</span>
-<span id="1026">1026</span>
-<span id="1027">1027</span>
-<span id="1028">1028</span>
-<span id="1029">1029</span>
-<span id="1030">1030</span>
-<span id="1031">1031</span>
-<span id="1032">1032</span>
-<span id="1033">1033</span>
-<span id="1034">1034</span>
-<span id="1035">1035</span>
-<span id="1036">1036</span>
-<span id="1037">1037</span>
-<span id="1038">1038</span>
-<span id="1039">1039</span>
-<span id="1040">1040</span>
-<span id="1041">1041</span>
-<span id="1042">1042</span>
-<span id="1043">1043</span>
-<span id="1044">1044</span>
-<span id="1045">1045</span>
-<span id="1046">1046</span>
-<span id="1047">1047</span>
-<span id="1048">1048</span>
-<span id="1049">1049</span>
-<span id="1050">1050</span>
-<span id="1051">1051</span>
-<span id="1052">1052</span>
-<span id="1053">1053</span>
-<span id="1054">1054</span>
-<span id="1055">1055</span>
-<span id="1056">1056</span>
-<span id="1057">1057</span>
-<span id="1058">1058</span>
-<span id="1059">1059</span>
-<span id="1060">1060</span>
-<span id="1061">1061</span>
-<span id="1062">1062</span>
-<span id="1063">1063</span>
-<span id="1064">1064</span>
-<span id="1065">1065</span>
-<span id="1066">1066</span>
-<span id="1067">1067</span>
-<span id="1068">1068</span>
-<span id="1069">1069</span>
-<span id="1070">1070</span>
-<span id="1071">1071</span>
-<span id="1072">1072</span>
-<span id="1073">1073</span>
-<span id="1074">1074</span>
-<span id="1075">1075</span>
-<span id="1076">1076</span>
-<span id="1077">1077</span>
-<span id="1078">1078</span>
-<span id="1079">1079</span>
-<span id="1080">1080</span>
-<span id="1081">1081</span>
-<span id="1082">1082</span>
-<span id="1083">1083</span>
-<span id="1084">1084</span>
-<span id="1085">1085</span>
-<span id="1086">1086</span>
-<span id="1087">1087</span>
-<span id="1088">1088</span>
-<span id="1089">1089</span>
-<span id="1090">1090</span>
-<span id="1091">1091</span>
-<span id="1092">1092</span>
-<span id="1093">1093</span>
-<span id="1094">1094</span>
-<span id="1095">1095</span>
-<span id="1096">1096</span>
-<span id="1097">1097</span>
-<span id="1098">1098</span>
-<span id="1099">1099</span>
-<span id="1100">1100</span>
-<span id="1101">1101</span>
-<span id="1102">1102</span>
-<span id="1103">1103</span>
-<span id="1104">1104</span>
-<span id="1105">1105</span>
-<span id="1106">1106</span>
-<span id="1107">1107</span>
-<span id="1108">1108</span>
-<span id="1109">1109</span>
-<span id="1110">1110</span>
-<span id="1111">1111</span>
-<span id="1112">1112</span>
-<span id="1113">1113</span>
-<span id="1114">1114</span>
-<span id="1115">1115</span>
-<span id="1116">1116</span>
-<span id="1117">1117</span>
-<span id="1118">1118</span>
-<span id="1119">1119</span>
-<span id="1120">1120</span>
-<span id="1121">1121</span>
-<span id="1122">1122</span>
-<span id="1123">1123</span>
-<span id="1124">1124</span>
-<span id="1125">1125</span>
-<span id="1126">1126</span>
-<span id="1127">1127</span>
-<span id="1128">1128</span>
-<span id="1129">1129</span>
-<span id="1130">1130</span>
-<span id="1131">1131</span>
-<span id="1132">1132</span>
-<span id="1133">1133</span>
-<span id="1134">1134</span>
-<span id="1135">1135</span>
-<span id="1136">1136</span>
-<span id="1137">1137</span>
-<span id="1138">1138</span>
-<span id="1139">1139</span>
-<span id="1140">1140</span>
-<span id="1141">1141</span>
-<span id="1142">1142</span>
-<span id="1143">1143</span>
-<span id="1144">1144</span>
-<span id="1145">1145</span>
-<span id="1146">1146</span>
-<span id="1147">1147</span>
-<span id="1148">1148</span>
-<span id="1149">1149</span>
-<span id="1150">1150</span>
-<span id="1151">1151</span>
-<span id="1152">1152</span>
-<span id="1153">1153</span>
-<span id="1154">1154</span>
-<span id="1155">1155</span>
-<span id="1156">1156</span>
-<span id="1157">1157</span>
-<span id="1158">1158</span>
-<span id="1159">1159</span>
-<span id="1160">1160</span>
-<span id="1161">1161</span>
-<span id="1162">1162</span>
-<span id="1163">1163</span>
-<span id="1164">1164</span>
-<span id="1165">1165</span>
-<span id="1166">1166</span>
-<span id="1167">1167</span>
-<span id="1168">1168</span>
-<span id="1169">1169</span>
-<span id="1170">1170</span>
-<span id="1171">1171</span>
-<span id="1172">1172</span>
-<span id="1173">1173</span>
-<span id="1174">1174</span>
-<span id="1175">1175</span>
-<span id="1176">1176</span>
-<span id="1177">1177</span>
-<span id="1178">1178</span>
-<span id="1179">1179</span>
-<span id="1180">1180</span>
-<span id="1181">1181</span>
-<span id="1182">1182</span>
-<span id="1183">1183</span>
-<span id="1184">1184</span>
-<span id="1185">1185</span>
-<span id="1186">1186</span>
-<span id="1187">1187</span>
-<span id="1188">1188</span>
-<span id="1189">1189</span>
-<span id="1190">1190</span>
-<span id="1191">1191</span>
-<span id="1192">1192</span>
-<span id="1193">1193</span>
-<span id="1194">1194</span>
-<span id="1195">1195</span>
-<span id="1196">1196</span>
-<span id="1197">1197</span>
-<span id="1198">1198</span>
-<span id="1199">1199</span>
-<span id="1200">1200</span>
-<span id="1201">1201</span>
-<span id="1202">1202</span>
-<span id="1203">1203</span>
-<span id="1204">1204</span>
-<span id="1205">1205</span>
-<span id="1206">1206</span>
-<span id="1207">1207</span>
-<span id="1208">1208</span>
-<span id="1209">1209</span>
-<span id="1210">1210</span>
-<span id="1211">1211</span>
-<span id="1212">1212</span>
-<span id="1213">1213</span>
-<span id="1214">1214</span>
-<span id="1215">1215</span>
-<span id="1216">1216</span>
-<span id="1217">1217</span>
-<span id="1218">1218</span>
-<span id="1219">1219</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Descriptors DSL</span>
-
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_top_level_sh</span> {
- <span class="comment">// disallow `sortedmulti` in `bare()`</span>
- ( <span class="ident">Bare</span>, <span class="ident">new</span>, <span class="ident">new</span>, <span class="ident">Legacy</span>, <span class="ident">sortedmulti</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/dsl.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>dsl.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Descriptors DSL
+
+</span><span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_top_level_sh {
+ <span class="comment">// disallow `sortedmulti` in `bare()`
+ </span>( Bare, new, new, Legacy, sortedmulti $( <span class="macro-nonterminal">$inner</span>:tt )* ) => {
<span class="macro">compile_error!</span>(<span class="string">"`bare()` descriptors can't contain any `sortedmulti()` operands"</span>);
};
- ( <span class="ident">Bare</span>, <span class="ident">new</span>, <span class="ident">new</span>, <span class="ident">Legacy</span>, <span class="ident">sortedmulti_vec</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {
+ ( Bare, new, new, Legacy, sortedmulti_vec $( <span class="macro-nonterminal">$inner</span>:tt )* ) => {
<span class="macro">compile_error!</span>(<span class="string">"`bare()` descriptors can't contain any `sortedmulti_vec()` operands"</span>);
};
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">constructor</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">sortedmulti_constructor</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>:<span class="ident">ident</span>, <span class="ident">sortedmulti</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {{
- <span class="kw">use</span> <span class="ident">std::marker::PhantomData</span>;
+ ( <span class="macro-nonterminal">$inner_struct</span>:ident, <span class="macro-nonterminal">$constructor</span>:ident, <span class="macro-nonterminal">$sortedmulti_constructor</span>:ident, <span class="macro-nonterminal">$ctx</span>:ident, sortedmulti $( <span class="macro-nonterminal">$inner</span>:tt )* ) => {{
+ <span class="kw">use </span>std::marker::PhantomData;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>, <span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{<span class="macro-nonterminal">$inner_struct</span>, Descriptor, DescriptorPublicKey};
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript</span>::<span class="macro-nonterminal">$ctx</span>;
- <span class="kw">let</span> <span class="ident">build_desc</span> <span class="op">=</span> <span class="op">|</span><span class="ident">k</span>, <span class="ident">pks</span><span class="op">|</span> {
- <span class="prelude-val">Ok</span>((<span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">sortedmulti_constructor</span>(<span class="ident">k</span>, <span class="ident">pks</span>)<span class="question-mark">?</span>), <span class="ident">PhantomData</span>::<span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span>))
+ <span class="kw">let </span>build_desc = |k, pks| {
+ <span class="prelude-val">Ok</span>((Descriptor::<DescriptorPublicKey>::<span class="macro-nonterminal">$inner_struct</span>(<span class="macro-nonterminal">$inner_struct</span>::<span class="macro-nonterminal">$sortedmulti_constructor</span>(k, pks)<span class="question-mark">?</span>), PhantomData::<<span class="macro-nonterminal">$ctx</span>>))
};
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_sortedmulti!</span>(<span class="macro-nonterminal">build_desc</span>, <span class="ident">sortedmulti</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_sortedmulti!</span>(<span class="macro-nonterminal">build_desc</span>, sortedmulti $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
}};
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">constructor</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">sortedmulti_constructor</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>:<span class="ident">ident</span>, <span class="ident">sortedmulti_vec</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {{
- <span class="kw">use</span> <span class="ident">std::marker::PhantomData</span>;
+ ( <span class="macro-nonterminal">$inner_struct</span>:ident, <span class="macro-nonterminal">$constructor</span>:ident, <span class="macro-nonterminal">$sortedmulti_constructor</span>:ident, <span class="macro-nonterminal">$ctx</span>:ident, sortedmulti_vec $( <span class="macro-nonterminal">$inner</span>:tt )* ) => {{
+ <span class="kw">use </span>std::marker::PhantomData;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>, <span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{<span class="macro-nonterminal">$inner_struct</span>, Descriptor, DescriptorPublicKey};
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript</span>::<span class="macro-nonterminal">$ctx</span>;
- <span class="kw">let</span> <span class="ident">build_desc</span> <span class="op">=</span> <span class="op">|</span><span class="ident">k</span>, <span class="ident">pks</span><span class="op">|</span> {
- <span class="prelude-val">Ok</span>((<span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">sortedmulti_constructor</span>(<span class="ident">k</span>, <span class="ident">pks</span>)<span class="question-mark">?</span>), <span class="ident">PhantomData</span>::<span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span>))
+ <span class="kw">let </span>build_desc = |k, pks| {
+ <span class="prelude-val">Ok</span>((Descriptor::<DescriptorPublicKey>::<span class="macro-nonterminal">$inner_struct</span>(<span class="macro-nonterminal">$inner_struct</span>::<span class="macro-nonterminal">$sortedmulti_constructor</span>(k, pks)<span class="question-mark">?</span>), PhantomData::<<span class="macro-nonterminal">$ctx</span>>))
};
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_sortedmulti!</span>(<span class="macro-nonterminal">build_desc</span>, <span class="ident">sortedmulti_vec</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_sortedmulti!</span>(<span class="macro-nonterminal">build_desc</span>, sortedmulti_vec $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
}};
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">constructor</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">sortedmulti_constructor</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>:<span class="ident">ident</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>, <span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
+ ( <span class="macro-nonterminal">$inner_struct</span>:ident, <span class="macro-nonterminal">$constructor</span>:ident, <span class="macro-nonterminal">$sortedmulti_constructor</span>:ident, <span class="macro-nonterminal">$ctx</span>:ident, $( <span class="macro-nonterminal">$minisc</span>:tt )* ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{<span class="macro-nonterminal">$inner_struct</span>, Descriptor, DescriptorPublicKey};
- <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="kw-2">*</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">minisc</span>, <span class="ident">keymap</span>, <span class="ident">networks</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">constructor</span>(<span class="ident">minisc</span>)<span class="question-mark">?</span>, <span class="ident">keymap</span>, <span class="ident">networks</span>)))
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">inner</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_struct</span>(<span class="ident">inner</span>), <span class="ident">key_map</span>, <span class="ident">valid_networks</span>)))
+ <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>($( <span class="macro-nonterminal">$minisc </span>)<span class="kw-2">*</span>)
+ .and_then(|(minisc, keymap, networks)| <span class="prelude-val">Ok</span>((<span class="macro-nonterminal">$inner_struct</span>::<span class="macro-nonterminal">$constructor</span>(minisc)<span class="question-mark">?</span>, keymap, networks)))
+ .and_then(|(inner, key_map, valid_networks)| <span class="prelude-val">Ok</span>((Descriptor::<DescriptorPublicKey>::<span class="macro-nonterminal">$inner_struct</span>(inner), key_map, valid_networks)))
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_top_level_pk</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_type</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_type</span>;
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_top_level_pk {
+ ( <span class="macro-nonterminal">$inner_type</span>:ident, <span class="macro-nonterminal">$ctx</span>:ty, <span class="macro-nonterminal">$key</span>:expr ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::<span class="macro-nonterminal">$inner_type</span>;
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>};
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ <span class="attr">#[allow(unused_imports)]
+ </span><span class="kw">use </span><span class="macro-nonterminal">$crate::keys</span>::{DescriptorKey, IntoDescriptorKey};
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>.<span class="ident">into_descriptor_key</span>()
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span><span class="op">|</span> <span class="ident">key</span>.<span class="ident">extract</span>(<span class="kw-2">&</span><span class="ident">secp</span>))
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Key</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>)<span class="op">|</span> (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner_type::new</span>(<span class="ident">pk</span>), <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+ <span class="macro-nonterminal">$key</span>.into_descriptor_key()
+ .and_then(|key: DescriptorKey<<span class="macro-nonterminal">$ctx</span>>| key.extract(<span class="kw-2">&</span>secp))
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Key</span>)
+ .map(|(pk, key_map, valid_networks)| (<span class="macro-nonterminal">$inner_type::new</span>(pk), key_map, valid_networks))
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_top_level_tr</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tap_tree</span>:<span class="ident">expr</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{
- <span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>, <span class="ident">KeyMap</span>, <span class="ident">TapTree</span>, <span class="ident">Tr</span>,
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_top_level_tr {
+ ( <span class="macro-nonterminal">$internal_key</span>:expr, <span class="macro-nonterminal">$tap_tree</span>:expr ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{
+ Descriptor, DescriptorPublicKey, KeyMap, TapTree, Tr,
};
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Tap</span>;
-
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">ValidNetworks</span>};
-
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
-
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>
- .<span class="ident">into_descriptor_key</span>()
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Tap</span><span class="op">></span><span class="op">|</span> <span class="ident">key</span>.<span class="ident">extract</span>(<span class="kw-2">&</span><span class="ident">secp</span>))
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Key</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">pk</span>, <span class="kw-2">mut</span> <span class="ident">key_map</span>, <span class="kw-2">mut</span> <span class="ident">valid_networks</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">tap_tree</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tap_tree</span>.<span class="ident">map</span>(
- <span class="op">|</span>(<span class="ident">tap_tree</span>, <span class="ident">tree_keymap</span>, <span class="ident">tree_networks</span>): (
- <span class="ident">TapTree</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>,
- <span class="ident">KeyMap</span>,
- <span class="ident">ValidNetworks</span>,
- )<span class="op">|</span> {
- <span class="ident">key_map</span>.<span class="ident">extend</span>(<span class="ident">tree_keymap</span>.<span class="ident">into_iter</span>());
- <span class="ident">valid_networks</span> <span class="op">=</span>
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::merge_networks</span>(<span class="kw-2">&</span><span class="ident">valid_networks</span>, <span class="kw-2">&</span><span class="ident">tree_networks</span>);
-
- <span class="ident">tap_tree</span>
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::Tap</span>;
+
+ <span class="attr">#[allow(unused_imports)]
+ </span><span class="kw">use </span><span class="macro-nonterminal">$crate::keys</span>::{DescriptorKey, IntoDescriptorKey, ValidNetworks};
+
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
+
+ <span class="macro-nonterminal">$internal_key
+ </span>.into_descriptor_key()
+ .and_then(|key: DescriptorKey<Tap>| key.extract(<span class="kw-2">&</span>secp))
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Key</span>)
+ .and_then(|(pk, <span class="kw-2">mut </span>key_map, <span class="kw-2">mut </span>valid_networks)| {
+ <span class="kw">let </span>tap_tree = <span class="macro-nonterminal">$tap_tree</span>.map(
+ |(tap_tree, tree_keymap, tree_networks): (
+ TapTree<DescriptorPublicKey>,
+ KeyMap,
+ ValidNetworks,
+ )| {
+ key_map.extend(tree_keymap.into_iter());
+ valid_networks =
+ <span class="macro-nonterminal">$crate::keys::merge_networks</span>(<span class="kw-2">&</span>valid_networks, <span class="kw-2">&</span>tree_networks);
+
+ tap_tree
},
);
<span class="prelude-val">Ok</span>((
- <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::Tr</span>(<span class="ident">Tr::new</span>(<span class="ident">pk</span>, <span class="ident">tap_tree</span>)<span class="question-mark">?</span>),
- <span class="ident">key_map</span>,
- <span class="ident">valid_networks</span>,
+ Descriptor::<DescriptorPublicKey>::Tr(Tr::new(pk, tap_tree)<span class="question-mark">?</span>),
+ key_map,
+ valid_networks,
))
})
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_leaf_opcode</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>:<span class="ident">ident</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::CheckMiniscript</span>;
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_leaf_opcode {
+ ( <span class="macro-nonterminal">$terminal_variant</span>:ident ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::descriptor::CheckMiniscript</span>;
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Miniscript::from_ast</span>(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>,
+ <span class="macro-nonterminal">$crate::miniscript::Miniscript::from_ast</span>(
+ <span class="macro-nonterminal">$crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$terminal_variant</span>,
)
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Miniscript</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">minisc</span><span class="op">|</span> {
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">minisc</span>)
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Miniscript</span>)
+ .and_then(|minisc| {
+ minisc.check_miniscript()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(minisc)
})
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">minisc</span><span class="op">|</span> {
+ .map(|minisc| {
(
- <span class="ident">minisc</span>,
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::KeyMap::default</span>(),
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::any_network</span>(),
+ minisc,
+ <span class="macro-nonterminal">$crate::miniscript::descriptor::KeyMap::default</span>(),
+ <span class="macro-nonterminal">$crate::keys::any_network</span>(),
)
})
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_leaf_opcode_value</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::CheckMiniscript</span>;
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_leaf_opcode_value {
+ ( <span class="macro-nonterminal">$terminal_variant</span>:ident, <span class="macro-nonterminal">$value</span>:expr ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::descriptor::CheckMiniscript</span>;
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Miniscript::from_ast</span>(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>),
+ <span class="macro-nonterminal">$crate::miniscript::Miniscript::from_ast</span>(
+ <span class="macro-nonterminal">$crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$terminal_variant</span>(<span class="macro-nonterminal">$value</span>),
)
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Miniscript</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">minisc</span><span class="op">|</span> {
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">minisc</span>)
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Miniscript</span>)
+ .and_then(|minisc| {
+ minisc.check_miniscript()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(minisc)
})
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">minisc</span><span class="op">|</span> {
+ .map(|minisc| {
(
- <span class="ident">minisc</span>,
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::KeyMap::default</span>(),
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::any_network</span>(),
+ minisc,
+ <span class="macro-nonterminal">$crate::miniscript::descriptor::KeyMap::default</span>(),
+ <span class="macro-nonterminal">$crate::keys::any_network</span>(),
)
})
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_leaf_opcode_value_two</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">one</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">two</span>:<span class="ident">expr</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::CheckMiniscript</span>;
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_leaf_opcode_value_two {
+ ( <span class="macro-nonterminal">$terminal_variant</span>:ident, <span class="macro-nonterminal">$one</span>:expr, <span class="macro-nonterminal">$two</span>:expr ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::descriptor::CheckMiniscript</span>;
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Miniscript::from_ast</span>(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">one</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">two</span>),
+ <span class="macro-nonterminal">$crate::miniscript::Miniscript::from_ast</span>(
+ <span class="macro-nonterminal">$crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$terminal_variant</span>(<span class="macro-nonterminal">$one</span>, <span class="macro-nonterminal">$two</span>),
)
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Miniscript</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">minisc</span><span class="op">|</span> {
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">minisc</span>)
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Miniscript</span>)
+ .and_then(|minisc| {
+ minisc.check_miniscript()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(minisc)
})
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">minisc</span><span class="op">|</span> {
+ .map(|minisc| {
(
- <span class="ident">minisc</span>,
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::KeyMap::default</span>(),
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::any_network</span>(),
+ minisc,
+ <span class="macro-nonterminal">$crate::miniscript::descriptor::KeyMap::default</span>(),
+ <span class="macro-nonterminal">$crate::keys::any_network</span>(),
)
})
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_node_opcode_two</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>:<span class="ident">ident</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::CheckMiniscript</span>;
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_node_opcode_two {
+ ( <span class="macro-nonterminal">$terminal_variant</span>:ident, $( <span class="macro-nonterminal">$inner</span>:tt )* ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::descriptor::CheckMiniscript</span>;
- <span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="op">*</span> );
- <span class="kw">let</span> (<span class="ident">a</span>, <span class="ident">b</span>) <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::dsl::TupleTwo::from</span>(<span class="ident">inner</span>).<span class="ident">flattened</span>();
+ <span class="kw">let </span>inner = <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t </span>$( <span class="macro-nonterminal">$inner </span>)* );
+ <span class="kw">let </span>(a, b) = <span class="macro-nonterminal">$crate::descriptor::dsl::TupleTwo::from</span>(inner).flattened();
- <span class="ident">a</span>
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">a</span><span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">a</span>, <span class="ident">b</span><span class="question-mark">?</span>)))
- .<span class="ident">and_then</span>(<span class="op">|</span>((<span class="ident">a_minisc</span>, <span class="kw-2">mut</span> <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>), (<span class="ident">b_minisc</span>, <span class="ident">b_keymap</span>, <span class="ident">b_networks</span>))<span class="op">|</span> {
- <span class="comment">// join key_maps</span>
- <span class="ident">a_keymap</span>.<span class="ident">extend</span>(<span class="ident">b_keymap</span>.<span class="ident">into_iter</span>());
+ a
+ .and_then(|a| <span class="prelude-val">Ok</span>((a, b<span class="question-mark">?</span>)))
+ .and_then(|((a_minisc, <span class="kw-2">mut </span>a_keymap, a_networks), (b_minisc, b_keymap, b_networks))| {
+ <span class="comment">// join key_maps
+ </span>a_keymap.extend(b_keymap.into_iter());
- <span class="kw">let</span> <span class="ident">minisc</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Miniscript::from_ast</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>(
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">a_minisc</span>),
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">b_minisc</span>),
+ <span class="kw">let </span>minisc = <span class="macro-nonterminal">$crate::miniscript::Miniscript::from_ast</span>(<span class="macro-nonterminal">$crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$terminal_variant</span>(
+ std::sync::Arc::new(a_minisc),
+ std::sync::Arc::new(b_minisc),
))<span class="question-mark">?</span>;
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
+ minisc.check_miniscript()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">minisc</span>, <span class="ident">a_keymap</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::merge_networks</span>(<span class="kw-2">&</span><span class="ident">a_networks</span>, <span class="kw-2">&</span><span class="ident">b_networks</span>)))
+ <span class="prelude-val">Ok</span>((minisc, a_keymap, <span class="macro-nonterminal">$crate::keys::merge_networks</span>(<span class="kw-2">&</span>a_networks, <span class="kw-2">&</span>b_networks)))
})
});
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_node_opcode_three</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>:<span class="ident">ident</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::CheckMiniscript</span>;
-
- <span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="op">*</span> );
- <span class="kw">let</span> (<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>) <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::dsl::TupleThree::from</span>(<span class="ident">inner</span>).<span class="ident">flattened</span>();
-
- <span class="ident">a</span>
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">a</span><span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">a</span>, <span class="ident">b</span><span class="question-mark">?</span>, <span class="ident">c</span><span class="question-mark">?</span>)))
- .<span class="ident">and_then</span>(<span class="op">|</span>((<span class="ident">a_minisc</span>, <span class="kw-2">mut</span> <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>), (<span class="ident">b_minisc</span>, <span class="ident">b_keymap</span>, <span class="ident">b_networks</span>), (<span class="ident">c_minisc</span>, <span class="ident">c_keymap</span>, <span class="ident">c_networks</span>))<span class="op">|</span> {
- <span class="comment">// join key_maps</span>
- <span class="ident">a_keymap</span>.<span class="ident">extend</span>(<span class="ident">b_keymap</span>.<span class="ident">into_iter</span>());
- <span class="ident">a_keymap</span>.<span class="ident">extend</span>(<span class="ident">c_keymap</span>.<span class="ident">into_iter</span>());
-
- <span class="kw">let</span> <span class="ident">networks</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::merge_networks</span>(<span class="kw-2">&</span><span class="ident">a_networks</span>, <span class="kw-2">&</span><span class="ident">b_networks</span>);
- <span class="kw">let</span> <span class="ident">networks</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::merge_networks</span>(<span class="kw-2">&</span><span class="ident">networks</span>, <span class="kw-2">&</span><span class="ident">c_networks</span>);
-
- <span class="kw">let</span> <span class="ident">minisc</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Miniscript::from_ast</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>(
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">a_minisc</span>),
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">b_minisc</span>),
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">c_minisc</span>),
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_node_opcode_three {
+ ( <span class="macro-nonterminal">$terminal_variant</span>:ident, $( <span class="macro-nonterminal">$inner</span>:tt )* ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::descriptor::CheckMiniscript</span>;
+
+ <span class="kw">let </span>inner = <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t </span>$( <span class="macro-nonterminal">$inner </span>)* );
+ <span class="kw">let </span>(a, b, c) = <span class="macro-nonterminal">$crate::descriptor::dsl::TupleThree::from</span>(inner).flattened();
+
+ a
+ .and_then(|a| <span class="prelude-val">Ok</span>((a, b<span class="question-mark">?</span>, c<span class="question-mark">?</span>)))
+ .and_then(|((a_minisc, <span class="kw-2">mut </span>a_keymap, a_networks), (b_minisc, b_keymap, b_networks), (c_minisc, c_keymap, c_networks))| {
+ <span class="comment">// join key_maps
+ </span>a_keymap.extend(b_keymap.into_iter());
+ a_keymap.extend(c_keymap.into_iter());
+
+ <span class="kw">let </span>networks = <span class="macro-nonterminal">$crate::keys::merge_networks</span>(<span class="kw-2">&</span>a_networks, <span class="kw-2">&</span>b_networks);
+ <span class="kw">let </span>networks = <span class="macro-nonterminal">$crate::keys::merge_networks</span>(<span class="kw-2">&</span>networks, <span class="kw-2">&</span>c_networks);
+
+ <span class="kw">let </span>minisc = <span class="macro-nonterminal">$crate::miniscript::Miniscript::from_ast</span>(<span class="macro-nonterminal">$crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$terminal_variant</span>(
+ std::sync::Arc::new(a_minisc),
+ std::sync::Arc::new(b_minisc),
+ std::sync::Arc::new(c_minisc),
))<span class="question-mark">?</span>;
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
+ minisc.check_miniscript()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">networks</span>))
+ <span class="prelude-val">Ok</span>((minisc, a_keymap, networks))
})
});
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">impl_sortedmulti</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">build_desc</span>:<span class="ident">expr</span>, <span class="ident">sortedmulti_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::make_sortedmulti</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">build_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>impl_sortedmulti {
+ ( <span class="macro-nonterminal">$build_desc</span>:expr, sortedmulti_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$keys</span>:expr ) ) => ({
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ <span class="macro-nonterminal">$crate::keys::make_sortedmulti</span>(<span class="macro-nonterminal">$thresh</span>, <span class="macro-nonterminal">$keys</span>, <span class="macro-nonterminal">$build_desc</span>, <span class="kw-2">&</span>secp)
});
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">build_desc</span>:<span class="ident">expr</span>, <span class="ident">sortedmulti</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> )<span class="op">+</span> ) ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::IntoDescriptorKey</span>;
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ ( <span class="macro-nonterminal">$build_desc</span>:expr, sortedmulti ( <span class="macro-nonterminal">$thresh</span>:expr $(, <span class="macro-nonterminal">$key</span>:expr )+ ) ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::keys::IntoDescriptorKey</span>;
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="kw">let</span> <span class="ident">keys</span> <span class="op">=</span> <span class="macro">vec!</span>[
+ <span class="kw">let </span>keys = <span class="macro">vec!</span>[
$(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>.<span class="ident">into_descriptor_key</span>(),
- )<span class="op">*</span>
+ <span class="macro-nonterminal">$key</span>.into_descriptor_key(),
+ )*
];
- <span class="ident">keys</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Key</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">keys</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::make_sortedmulti</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="ident">keys</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">build_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>))
+ keys.into_iter().collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Key</span>)
+ .and_then(|keys| <span class="macro-nonterminal">$crate::keys::make_sortedmulti</span>(<span class="macro-nonterminal">$thresh</span>, keys, <span class="macro-nonterminal">$build_desc</span>, <span class="kw-2">&</span>secp))
});
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">parse_tap_tree</span> {
- ( @<span class="ident">merge</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_a</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_b</span>:<span class="ident">expr</span>) => {{
- <span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::TapTree</span>;
-
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_a</span>
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">tree_a</span><span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">tree_a</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_b</span><span class="question-mark">?</span>)))
- .<span class="ident">and_then</span>(<span class="op">|</span>((<span class="ident">a_tree</span>, <span class="kw-2">mut</span> <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>), (<span class="ident">b_tree</span>, <span class="ident">b_keymap</span>, <span class="ident">b_networks</span>))<span class="op">|</span> {
- <span class="ident">a_keymap</span>.<span class="ident">extend</span>(<span class="ident">b_keymap</span>.<span class="ident">into_iter</span>());
- <span class="prelude-val">Ok</span>((<span class="ident">TapTree::Tree</span>(<span class="ident">Arc::new</span>(<span class="ident">a_tree</span>), <span class="ident">Arc::new</span>(<span class="ident">b_tree</span>)), <span class="ident">a_keymap</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::merge_networks</span>(<span class="kw-2">&</span><span class="ident">a_networks</span>, <span class="kw-2">&</span><span class="ident">b_networks</span>)))
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>parse_tap_tree {
+ ( @merge <span class="macro-nonterminal">$tree_a</span>:expr, <span class="macro-nonterminal">$tree_b</span>:expr) => {{
+ <span class="kw">use </span>std::sync::Arc;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor::TapTree</span>;
+
+ <span class="macro-nonterminal">$tree_a
+ </span>.and_then(|tree_a| <span class="prelude-val">Ok</span>((tree_a, <span class="macro-nonterminal">$tree_b</span><span class="question-mark">?</span>)))
+ .and_then(|((a_tree, <span class="kw-2">mut </span>a_keymap, a_networks), (b_tree, b_keymap, b_networks))| {
+ a_keymap.extend(b_keymap.into_iter());
+ <span class="prelude-val">Ok</span>((TapTree::Tree(Arc::new(a_tree), Arc::new(b_tree)), a_keymap, <span class="macro-nonterminal">$crate::keys::merge_networks</span>(<span class="kw-2">&</span>a_networks, <span class="kw-2">&</span>b_networks)))
})
}};
- <span class="comment">// Two sub-trees</span>
- ( { { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_a</span>:<span class="ident">tt</span> )<span class="op">*</span> }, { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_b</span>:<span class="ident">tt</span> )<span class="op">*</span> } } ) => {{
- <span class="kw">let</span> <span class="ident">tree_a</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_a</span> )<span class="op">*</span> } );
- <span class="kw">let</span> <span class="ident">tree_b</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_b</span> )<span class="op">*</span> } );
+ <span class="comment">// Two sub-trees
+ </span>( { { $( <span class="macro-nonterminal">$tree_a</span>:tt )* }, { $( <span class="macro-nonterminal">$tree_b</span>:tt )* } } ) => {{
+ <span class="kw">let </span>tree_a = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$tree_a </span>)* } );
+ <span class="kw">let </span>tree_b = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$tree_b </span>)* } );
- <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge</span> <span class="ident">tree_a</span>, <span class="ident">tree_b</span>)
+ <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge </span>tree_a, tree_b)
}};
- <span class="comment">// One leaf and a sub-tree</span>
- ( { <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_a</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_a</span>:<span class="ident">tt</span> )<span class="op">*</span> ), { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_b</span>:<span class="ident">tt</span> )<span class="op">*</span> } } ) => {{
- <span class="kw">let</span> <span class="ident">tree_a</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_a</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_a</span> )<span class="op">*</span> ) );
- <span class="kw">let</span> <span class="ident">tree_b</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_b</span> )<span class="op">*</span> } );
+ <span class="comment">// One leaf and a sub-tree
+ </span>( { <span class="macro-nonterminal">$op_a</span>:ident ( $( <span class="macro-nonterminal">$minisc_a</span>:tt )* ), { $( <span class="macro-nonterminal">$tree_b</span>:tt )* } } ) => {{
+ <span class="kw">let </span>tree_a = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$op_a </span>( $( <span class="macro-nonterminal">$minisc_a </span>)* ) );
+ <span class="kw">let </span>tree_b = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$tree_b </span>)* } );
- <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge</span> <span class="ident">tree_a</span>, <span class="ident">tree_b</span>)
+ <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge </span>tree_a, tree_b)
}};
- ( { { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_a</span>:<span class="ident">tt</span> )<span class="op">*</span> }, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_b</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_b</span>:<span class="ident">tt</span> )<span class="op">*</span> ) } ) => {{
- <span class="kw">let</span> <span class="ident">tree_a</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tree_a</span> )<span class="op">*</span> } );
- <span class="kw">let</span> <span class="ident">tree_b</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_b</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_b</span> )<span class="op">*</span> ) );
+ ( { { $( <span class="macro-nonterminal">$tree_a</span>:tt )* }, <span class="macro-nonterminal">$op_b</span>:ident ( $( <span class="macro-nonterminal">$minisc_b</span>:tt )* ) } ) => {{
+ <span class="kw">let </span>tree_a = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( { $( <span class="macro-nonterminal">$tree_a </span>)* } );
+ <span class="kw">let </span>tree_b = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$op_b </span>( $( <span class="macro-nonterminal">$minisc_b </span>)* ) );
- <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge</span> <span class="ident">tree_a</span>, <span class="ident">tree_b</span>)
+ <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge </span>tree_a, tree_b)
}};
- <span class="comment">// Two leaves</span>
- ( { <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_a</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_a</span>:<span class="ident">tt</span> )<span class="op">*</span> ), <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_b</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_b</span>:<span class="ident">tt</span> )<span class="op">*</span> ) } ) => {{
- <span class="kw">let</span> <span class="ident">tree_a</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_a</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_a</span> )<span class="op">*</span> ) );
- <span class="kw">let</span> <span class="ident">tree_b</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op_b</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc_b</span> )<span class="op">*</span> ) );
+ <span class="comment">// Two leaves
+ </span>( { <span class="macro-nonterminal">$op_a</span>:ident ( $( <span class="macro-nonterminal">$minisc_a</span>:tt )* ), <span class="macro-nonterminal">$op_b</span>:ident ( $( <span class="macro-nonterminal">$minisc_b</span>:tt )* ) } ) => {{
+ <span class="kw">let </span>tree_a = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$op_a </span>( $( <span class="macro-nonterminal">$minisc_a </span>)* ) );
+ <span class="kw">let </span>tree_b = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( <span class="macro-nonterminal">$op_b </span>( $( <span class="macro-nonterminal">$minisc_b </span>)* ) );
- <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge</span> <span class="ident">tree_a</span>, <span class="ident">tree_b</span>)
+ <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>(@<span class="macro-nonterminal">merge </span>tree_a, tree_b)
}};
- <span class="comment">// Single leaf</span>
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => {{
- <span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::TapTree</span>;
+ <span class="comment">// Single leaf
+ </span>( <span class="macro-nonterminal">$op</span>:ident ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => {{
+ <span class="kw">use </span>std::sync::Arc;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor::TapTree</span>;
- <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="op">*</span> ) )
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a_minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>)<span class="op">|</span> (<span class="ident">TapTree::Leaf</span>(<span class="ident">Arc::new</span>(<span class="ident">a_minisc</span>)), <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>))
+ <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">$op </span>( $( <span class="macro-nonterminal">$minisc </span>)* ) )
+ .map(|(a_minisc, a_keymap, a_networks)| (TapTree::Leaf(Arc::new(a_minisc)), a_keymap, a_networks))
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">apply_modifier</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::CheckMiniscript</span>;
-
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="ident">e</span><span class="op">|</span> -> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError</span> { <span class="ident">e</span>.<span class="ident">into</span>() })
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">minisc</span>, <span class="ident">keymap</span>, <span class="ident">networks</span>)<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">minisc</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Miniscript::from_ast</span>(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">terminal_variant</span>(
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">minisc</span>),
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>apply_modifier {
+ ( <span class="macro-nonterminal">$terminal_variant</span>:ident, <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::descriptor::CheckMiniscript</span>;
+
+ <span class="macro-nonterminal">$inner
+ </span>.map_err(|e| -> <span class="macro-nonterminal">$crate::descriptor::DescriptorError </span>{ e.into() })
+ .and_then(|(minisc, keymap, networks)| {
+ <span class="kw">let </span>minisc = <span class="macro-nonterminal">$crate::miniscript::Miniscript::from_ast</span>(
+ <span class="macro-nonterminal">$crate::miniscript::miniscript::decode::Terminal</span>::<span class="macro-nonterminal">$terminal_variant</span>(
+ std::sync::Arc::new(minisc),
),
)<span class="question-mark">?</span>;
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
+ minisc.check_miniscript()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">minisc</span>, <span class="ident">keymap</span>, <span class="ident">networks</span>))
+ <span class="prelude-val">Ok</span>((minisc, keymap, networks))
})
}};
- ( <span class="ident">a</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Alt</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( a: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Alt</span>, <span class="macro-nonterminal">$inner</span>)
}};
- ( <span class="ident">s</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Swap</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( s: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Swap</span>, <span class="macro-nonterminal">$inner</span>)
}};
- ( <span class="ident">c</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Check</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( c: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Check</span>, <span class="macro-nonterminal">$inner</span>)
}};
- ( <span class="ident">d</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">DupIf</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( d: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">DupIf</span>, <span class="macro-nonterminal">$inner</span>)
}};
- ( <span class="ident">v</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Verify</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( v: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">Verify</span>, <span class="macro-nonterminal">$inner</span>)
}};
- ( <span class="ident">j</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">NonZero</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( j: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">NonZero</span>, <span class="macro-nonterminal">$inner</span>)
}};
- ( <span class="ident">n</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">ZeroNotEqual</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>)
+ ( n: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">ZeroNotEqual</span>, <span class="macro-nonterminal">$inner</span>)
}};
- <span class="comment">// Modifiers expanded to other operators</span>
- ( <span class="ident">t</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>.<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">a_minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>)<span class="op">|</span> {
+ <span class="comment">// Modifiers expanded to other operators
+ </span>( t: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$inner</span>.and_then(|(a_minisc, a_keymap, a_networks)| {
<span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value_two!</span>(
<span class="macro-nonterminal">AndV</span>,
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">a_minisc</span>),
- <span class="ident">std::sync::Arc::new</span>(<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="bool-val">true</span>).<span class="macro-nonterminal">unwrap</span>().<span class="number">0</span>)
+ std::sync::Arc::new(a_minisc),
+ std::sync::Arc::new(<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="bool-val">true</span>).<span class="macro-nonterminal">unwrap</span>().<span class="number">0</span>)
)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">minisc</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">|</span> (<span class="ident">minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>))
+ .map(|(minisc, <span class="kw">_</span>, <span class="kw">_</span>)| (minisc, a_keymap, a_networks))
})
}};
- ( <span class="ident">l</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>.<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">a_minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>)<span class="op">|</span> {
+ ( l: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$inner</span>.and_then(|(a_minisc, a_keymap, a_networks)| {
<span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value_two!</span>(
<span class="macro-nonterminal">OrI</span>,
- <span class="ident">std::sync::Arc::new</span>(<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="bool-val">false</span>).<span class="macro-nonterminal">unwrap</span>().<span class="number">0</span>),
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">a_minisc</span>)
+ std::sync::Arc::new(<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="bool-val">false</span>).<span class="macro-nonterminal">unwrap</span>().<span class="number">0</span>),
+ std::sync::Arc::new(a_minisc)
)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">minisc</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">|</span> (<span class="ident">minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>))
+ .map(|(minisc, <span class="kw">_</span>, <span class="kw">_</span>)| (minisc, a_keymap, a_networks))
})
}};
- ( <span class="ident">u</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">expr</span> ) => {{
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>.<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">a_minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>)<span class="op">|</span> {
+ ( u: <span class="macro-nonterminal">$inner</span>:expr ) => {{
+ <span class="macro-nonterminal">$inner</span>.and_then(|(a_minisc, a_keymap, a_networks)| {
<span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value_two!</span>(
<span class="macro-nonterminal">OrI</span>,
- <span class="ident">std::sync::Arc::new</span>(<span class="ident">a_minisc</span>),
- <span class="ident">std::sync::Arc::new</span>(<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="bool-val">false</span>).<span class="macro-nonterminal">unwrap</span>().<span class="number">0</span>)
+ std::sync::Arc::new(a_minisc),
+ std::sync::Arc::new(<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="bool-val">false</span>).<span class="macro-nonterminal">unwrap</span>().<span class="number">0</span>)
)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">minisc</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">|</span> (<span class="ident">minisc</span>, <span class="ident">a_keymap</span>, <span class="ident">a_networks</span>))
+ .map(|(minisc, <span class="kw">_</span>, <span class="kw">_</span>)| (minisc, a_keymap, a_networks))
})
}};
}
-<span class="doccomment">/// Macro to write full descriptors with code</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This macro expands to a `Result` of</span>
-<span class="doccomment">/// [`DescriptorTemplateOut`](super::template::DescriptorTemplateOut) and [`DescriptorError`](crate::descriptor::DescriptorError)</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The syntax is very similar to the normal descriptor syntax, with the exception that modifiers</span>
-<span class="doccomment">/// cannot be grouped together. For instance, a descriptor fragment like `sdv:older(144)` has to be</span>
-<span class="doccomment">/// broken up to `s:d:v:older(144)`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The `pk()`, `pk_k()` and `pk_h()` operands can take as argument any type that implements</span>
-<span class="doccomment">/// [`IntoDescriptorKey`]. This means that keys can also be written inline as strings, but in that</span>
-<span class="doccomment">/// case they must be wrapped in quotes, which is another difference compared to the standard</span>
-<span class="doccomment">/// descriptor syntax.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`IntoDescriptorKey`]: crate::keys::IntoDescriptorKey</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Signature plus timelock descriptor:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// let (my_descriptor, my_keys_map, networks) = bdk::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;</span>
-<span class="doccomment">/// # Ok::<(), Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// -------</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// 2-of-3 that becomes a 1-of-3 after a timelock has expired. Both `descriptor_a` and `descriptor_b` are equivalent: the first</span>
-<span class="doccomment">/// syntax is more suitable for a fixed number of items known at compile time, while the other accepts a</span>
-<span class="doccomment">/// [`Vec`] of items, which makes it more suitable for writing dynamic descriptors.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// They both produce the descriptor: `wsh(thresh(2,pk(...),s:pk(...),sndv:older(...)))`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// let my_key_1 = bitcoin::PublicKey::from_str(</span>
-<span class="doccomment">/// "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">/// let my_key_2 =</span>
-<span class="doccomment">/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;</span>
-<span class="doccomment">/// let my_timelock = 50;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let (descriptor_a, key_map_a, networks) = bdk::descriptor! {</span>
-<span class="doccomment">/// wsh (</span>
-<span class="doccomment">/// thresh(2, pk(my_key_1), s:pk(my_key_2), s:n:d:v:older(my_timelock))</span>
-<span class="doccomment">/// )</span>
-<span class="doccomment">/// }?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// #[rustfmt::skip]</span>
-<span class="doccomment">/// let b_items = vec![</span>
-<span class="doccomment">/// bdk::fragment!(pk(my_key_1))?,</span>
-<span class="doccomment">/// bdk::fragment!(s:pk(my_key_2))?,</span>
-<span class="doccomment">/// bdk::fragment!(s:n:d:v:older(my_timelock))?,</span>
-<span class="doccomment">/// ];</span>
-<span class="doccomment">/// let (descriptor_b, mut key_map_b, networks) = bdk::descriptor!(wsh(thresh_vec(2, b_items)))?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(descriptor_a, descriptor_b);</span>
-<span class="doccomment">/// assert_eq!(key_map_a.len(), key_map_b.len());</span>
-<span class="doccomment">/// # Ok::<(), Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ------</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Simple 2-of-2 multi-signature, equivalent to: `wsh(multi(2, ...))`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// let my_key_1 = bitcoin::PublicKey::from_str(</span>
-<span class="doccomment">/// "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">/// let my_key_2 =</span>
-<span class="doccomment">/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let (descriptor, key_map, networks) = bdk::descriptor! {</span>
-<span class="doccomment">/// wsh (</span>
-<span class="doccomment">/// multi(2, my_key_1, my_key_2)</span>
-<span class="doccomment">/// )</span>
-<span class="doccomment">/// }?;</span>
-<span class="doccomment">/// # Ok::<(), Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ------</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Native-Segwit single-sig, equivalent to: `wpkh(...)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// let my_key =</span>
-<span class="doccomment">/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let (descriptor, key_map, networks) = bdk::descriptor!(wpkh(my_key))?;</span>
-<span class="doccomment">/// # Ok::<(), Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">descriptor</span> {
- ( <span class="ident">bare</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Bare</span>, <span class="ident">new</span>, <span class="ident">new</span>, <span class="ident">Legacy</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="kw-2">*</span>)
+<span class="doccomment">/// Macro to write full descriptors with code
+///
+/// This macro expands to a `Result` of
+/// [`DescriptorTemplateOut`](super::template::DescriptorTemplateOut) and [`DescriptorError`](crate::descriptor::DescriptorError)
+///
+/// The syntax is very similar to the normal descriptor syntax, with the exception that modifiers
+/// cannot be grouped together. For instance, a descriptor fragment like `sdv:older(144)` has to be
+/// broken up to `s:d:v:older(144)`.
+///
+/// The `pk()`, `pk_k()` and `pk_h()` operands can take as argument any type that implements
+/// [`IntoDescriptorKey`]. This means that keys can also be written inline as strings, but in that
+/// case they must be wrapped in quotes, which is another difference compared to the standard
+/// descriptor syntax.
+///
+/// [`IntoDescriptorKey`]: crate::keys::IntoDescriptorKey
+///
+/// ## Example
+///
+/// Signature plus timelock descriptor:
+///
+/// ```
+/// # use std::str::FromStr;
+/// let (my_descriptor, my_keys_map, networks) = bdk::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;
+/// # Ok::<(), Box<dyn std::error::Error>>(())
+/// ```
+///
+/// -------
+///
+/// 2-of-3 that becomes a 1-of-3 after a timelock has expired. Both `descriptor_a` and `descriptor_b` are equivalent: the first
+/// syntax is more suitable for a fixed number of items known at compile time, while the other accepts a
+/// [`Vec`] of items, which makes it more suitable for writing dynamic descriptors.
+///
+/// They both produce the descriptor: `wsh(thresh(2,pk(...),s:pk(...),sndv:older(...)))`
+///
+/// ```
+/// # use std::str::FromStr;
+/// let my_key_1 = bitcoin::PublicKey::from_str(
+/// "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
+/// )?;
+/// let my_key_2 =
+/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
+/// let my_timelock = 50;
+///
+/// let (descriptor_a, key_map_a, networks) = bdk::descriptor! {
+/// wsh (
+/// thresh(2, pk(my_key_1), s:pk(my_key_2), s:n:d:v:older(my_timelock))
+/// )
+/// }?;
+///
+/// #[rustfmt::skip]
+/// let b_items = vec![
+/// bdk::fragment!(pk(my_key_1))?,
+/// bdk::fragment!(s:pk(my_key_2))?,
+/// bdk::fragment!(s:n:d:v:older(my_timelock))?,
+/// ];
+/// let (descriptor_b, mut key_map_b, networks) = bdk::descriptor!(wsh(thresh_vec(2, b_items)))?;
+///
+/// assert_eq!(descriptor_a, descriptor_b);
+/// assert_eq!(key_map_a.len(), key_map_b.len());
+/// # Ok::<(), Box<dyn std::error::Error>>(())
+/// ```
+///
+/// ------
+///
+/// Simple 2-of-2 multi-signature, equivalent to: `wsh(multi(2, ...))`
+///
+/// ```
+/// # use std::str::FromStr;
+/// let my_key_1 = bitcoin::PublicKey::from_str(
+/// "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
+/// )?;
+/// let my_key_2 =
+/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
+///
+/// let (descriptor, key_map, networks) = bdk::descriptor! {
+/// wsh (
+/// multi(2, my_key_1, my_key_2)
+/// )
+/// }?;
+/// # Ok::<(), Box<dyn std::error::Error>>(())
+/// ```
+///
+/// ------
+///
+/// Native-Segwit single-sig, equivalent to: `wpkh(...)`
+///
+/// ```
+/// let my_key =
+/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
+///
+/// let (descriptor, key_map, networks) = bdk::descriptor!(wpkh(my_key))?;
+/// # Ok::<(), Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="attr">#[macro_export]
+</span><span class="macro">macro_rules! </span>descriptor {
+ ( bare ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Bare</span>, new, new, Legacy, $( <span class="macro-nonterminal">$minisc </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">sh</span> ( <span class="ident">wsh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::descriptor!</span>(<span class="macro-nonterminal">shwsh</span> ($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="kw-2">*</span>))
+ ( sh ( wsh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::descriptor!</span>(<span class="macro-nonterminal">shwsh </span>($( <span class="macro-nonterminal">$minisc </span>)<span class="kw-2">*</span>))
});
- ( <span class="ident">shwsh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Sh</span>, <span class="ident">new_wsh</span>, <span class="ident">new_wsh_sortedmulti</span>, <span class="ident">Segwitv0</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="kw-2">*</span>)
+ ( shwsh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Sh</span>, new_wsh, new_wsh_sortedmulti, Segwitv0, $( <span class="macro-nonterminal">$minisc </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">pk</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="comment">// `pk()` is actually implemented as `bare(pk())`</span>
- <span class="macro-nonterminal">$</span><span class="macro">crate::descriptor!</span>( <span class="macro-nonterminal">bare</span> ( <span class="ident">pk</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span> ) ) )
+ ( pk ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="comment">// `pk()` is actually implemented as `bare(pk())`
+ </span><span class="macro-nonterminal">$</span><span class="macro">crate::descriptor!</span>( <span class="macro-nonterminal">bare </span>( pk ( <span class="macro-nonterminal">$key </span>) ) )
});
- ( <span class="ident">pkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
+ ( pkh ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{Descriptor, DescriptorPublicKey};
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_pk!</span>(<span class="macro-nonterminal">Pkh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Legacy</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> (<span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::Pkh</span>(<span class="ident">a</span>), <span class="ident">b</span>, <span class="ident">c</span>))
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_pk!</span>(<span class="macro-nonterminal">Pkh</span>, <span class="macro-nonterminal">$crate::miniscript::Legacy</span>, <span class="macro-nonterminal">$key</span>)
+ .map(|(a, b, c)| (Descriptor::<DescriptorPublicKey>::Pkh(a), b, c))
});
- ( <span class="ident">wpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
+ ( wpkh ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{Descriptor, DescriptorPublicKey};
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_pk!</span>(<span class="macro-nonterminal">Wpkh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Segwitv0</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">a</span><span class="question-mark">?</span>, <span class="ident">b</span>, <span class="ident">c</span>)))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> (<span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::Wpkh</span>(<span class="ident">a</span>), <span class="ident">b</span>, <span class="ident">c</span>))
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_pk!</span>(<span class="macro-nonterminal">Wpkh</span>, <span class="macro-nonterminal">$crate::miniscript::Segwitv0</span>, <span class="macro-nonterminal">$key</span>)
+ .and_then(|(a, b, c)| <span class="prelude-val">Ok</span>((a<span class="question-mark">?</span>, b, c)))
+ .map(|(a, b, c)| (Descriptor::<DescriptorPublicKey>::Wpkh(a), b, c))
});
- ( <span class="ident">sh</span> ( <span class="ident">wpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::descriptor!</span>(<span class="macro-nonterminal">shwpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span> ))
+ ( sh ( wpkh ( <span class="macro-nonterminal">$key</span>:expr ) ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::descriptor!</span>(<span class="macro-nonterminal">shwpkh </span>( <span class="macro-nonterminal">$key </span>))
});
- ( <span class="ident">shwpkh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>, <span class="ident">Sh</span>};
+ ( shwpkh ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{Descriptor, DescriptorPublicKey, Sh};
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_pk!</span>(<span class="macro-nonterminal">Wpkh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Segwitv0</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">a</span><span class="question-mark">?</span>, <span class="ident">b</span>, <span class="ident">c</span>)))
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> <span class="prelude-val">Ok</span>((<span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::Sh</span>(<span class="ident">Sh::new_wpkh</span>(<span class="ident">a</span>.<span class="ident">into_inner</span>())<span class="question-mark">?</span>), <span class="ident">b</span>, <span class="ident">c</span>)))
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_pk!</span>(<span class="macro-nonterminal">Wpkh</span>, <span class="macro-nonterminal">$crate::miniscript::Segwitv0</span>, <span class="macro-nonterminal">$key</span>)
+ .and_then(|(a, b, c)| <span class="prelude-val">Ok</span>((a<span class="question-mark">?</span>, b, c)))
+ .and_then(|(a, b, c)| <span class="prelude-val">Ok</span>((Descriptor::<DescriptorPublicKey>::Sh(Sh::new_wpkh(a.into_inner())<span class="question-mark">?</span>), b, c)))
});
- ( <span class="ident">sh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Sh</span>, <span class="ident">new</span>, <span class="ident">new_sortedmulti</span>, <span class="ident">Legacy</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="kw-2">*</span>)
+ ( sh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Sh</span>, new, new_sortedmulti, Legacy, $( <span class="macro-nonterminal">$minisc </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">wsh</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Wsh</span>, <span class="ident">new</span>, <span class="ident">new_sortedmulti</span>, <span class="ident">Segwitv0</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">minisc</span> )<span class="kw-2">*</span>)
+ ( wsh ( $( <span class="macro-nonterminal">$minisc</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_sh!</span>(<span class="macro-nonterminal">Wsh</span>, new, new_sortedmulti, Segwitv0, $( <span class="macro-nonterminal">$minisc </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">tr</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_tr!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>, <span class="prelude-val">None</span>)
+ ( tr ( <span class="macro-nonterminal">$internal_key</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_tr!</span>(<span class="macro-nonterminal">$internal_key</span>, <span class="prelude-val">None</span>)
});
- ( <span class="ident">tr</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>:<span class="ident">expr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">taptree</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">tap_tree</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">taptree</span> )<span class="op">*</span> );
- <span class="ident">tap_tree</span>
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">tap_tree</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_tr!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_key</span>, <span class="prelude-val">Some</span>(<span class="ident">tap_tree</span>)))
+ ( tr ( <span class="macro-nonterminal">$internal_key</span>:expr, $( <span class="macro-nonterminal">$taptree</span>:tt )* ) ) => ({
+ <span class="kw">let </span>tap_tree = <span class="macro-nonterminal">$</span><span class="macro">crate::parse_tap_tree!</span>( $( <span class="macro-nonterminal">$taptree </span>)* );
+ tap_tree
+ .and_then(|tap_tree| <span class="macro-nonterminal">$</span><span class="macro">crate::impl_top_level_tr!</span>(<span class="macro-nonterminal">$internal_key</span>, <span class="prelude-val">Some</span>(tap_tree)))
});
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TupleTwo</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="ident">a</span>: <span class="ident">A</span>,
- <span class="kw">pub</span> <span class="ident">b</span>: <span class="ident">B</span>,
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub struct </span>TupleTwo<A, B> {
+ <span class="kw">pub </span>a: A,
+ <span class="kw">pub </span>b: B,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">></span> <span class="ident">TupleTwo</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">flattened</span>(<span class="self">self</span>) -> (<span class="ident">A</span>, <span class="ident">B</span>) {
- (<span class="self">self</span>.<span class="ident">a</span>, <span class="self">self</span>.<span class="ident">b</span>)
+<span class="kw">impl</span><A, B> TupleTwo<A, B> {
+ <span class="kw">pub fn </span>flattened(<span class="self">self</span>) -> (A, B) {
+ (<span class="self">self</span>.a, <span class="self">self</span>.b)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">></span> <span class="ident">From</span><span class="op"><</span>(<span class="ident">A</span>, (<span class="ident">B</span>, ()))<span class="op">></span> <span class="kw">for</span> <span class="ident">TupleTwo</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">from</span>((<span class="ident">a</span>, (<span class="ident">b</span>, <span class="kw">_</span>)): (<span class="ident">A</span>, (<span class="ident">B</span>, ()))) -> <span class="self">Self</span> {
- <span class="ident">TupleTwo</span> { <span class="ident">a</span>, <span class="ident">b</span> }
+<span class="kw">impl</span><A, B> From<(A, (B, ()))> <span class="kw">for </span>TupleTwo<A, B> {
+ <span class="kw">fn </span>from((a, (b, <span class="kw">_</span>)): (A, (B, ()))) -> <span class="self">Self </span>{
+ TupleTwo { a, b }
}
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TupleThree</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span>, <span class="ident">C</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="ident">a</span>: <span class="ident">A</span>,
- <span class="kw">pub</span> <span class="ident">b</span>: <span class="ident">B</span>,
- <span class="kw">pub</span> <span class="ident">c</span>: <span class="ident">C</span>,
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub struct </span>TupleThree<A, B, C> {
+ <span class="kw">pub </span>a: A,
+ <span class="kw">pub </span>b: B,
+ <span class="kw">pub </span>c: C,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span>, <span class="ident">C</span><span class="op">></span> <span class="ident">TupleThree</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span>, <span class="ident">C</span><span class="op">></span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">flattened</span>(<span class="self">self</span>) -> (<span class="ident">A</span>, <span class="ident">B</span>, <span class="ident">C</span>) {
- (<span class="self">self</span>.<span class="ident">a</span>, <span class="self">self</span>.<span class="ident">b</span>, <span class="self">self</span>.<span class="ident">c</span>)
+<span class="kw">impl</span><A, B, C> TupleThree<A, B, C> {
+ <span class="kw">pub fn </span>flattened(<span class="self">self</span>) -> (A, B, C) {
+ (<span class="self">self</span>.a, <span class="self">self</span>.b, <span class="self">self</span>.c)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span>, <span class="ident">C</span><span class="op">></span> <span class="ident">From</span><span class="op"><</span>(<span class="ident">A</span>, (<span class="ident">B</span>, (<span class="ident">C</span>, ())))<span class="op">></span> <span class="kw">for</span> <span class="ident">TupleThree</span><span class="op"><</span><span class="ident">A</span>, <span class="ident">B</span>, <span class="ident">C</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">from</span>((<span class="ident">a</span>, (<span class="ident">b</span>, (<span class="ident">c</span>, <span class="kw">_</span>))): (<span class="ident">A</span>, (<span class="ident">B</span>, (<span class="ident">C</span>, ())))) -> <span class="self">Self</span> {
- <span class="ident">TupleThree</span> { <span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span> }
+<span class="kw">impl</span><A, B, C> From<(A, (B, (C, ())))> <span class="kw">for </span>TupleThree<A, B, C> {
+ <span class="kw">fn </span>from((a, (b, (c, <span class="kw">_</span>))): (A, (B, (C, ())))) -> <span class="self">Self </span>{
+ TupleThree { a, b, c }
}
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">group_multi_keys</span> {
- ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ),<span class="op">+</span> ) => {{
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::IntoDescriptorKey</span>;
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>group_multi_keys {
+ ( $( <span class="macro-nonterminal">$key</span>:expr ),+ ) => {{
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::keys::IntoDescriptorKey</span>;
- <span class="kw">let</span> <span class="ident">keys</span> <span class="op">=</span> <span class="macro">vec!</span>[
+ <span class="kw">let </span>keys = <span class="macro">vec!</span>[
$(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>.<span class="ident">into_descriptor_key</span>(),
- )<span class="op">*</span>
+ <span class="macro-nonterminal">$key</span>.into_descriptor_key(),
+ )*
];
- <span class="ident">keys</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
- .<span class="ident">map_err</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::descriptor::DescriptorError::Key</span>)
+ keys.into_iter().collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()
+ .map_err(<span class="macro-nonterminal">$crate::descriptor::DescriptorError::Key</span>)
}};
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">fragment_internal</span> {
- <span class="comment">// The @v prefix is used to parse a sequence of operands and return them in a vector. This is</span>
- <span class="comment">// used by operands that take a variable number of arguments, like `thresh()` and `multi()`.</span>
- ( @<span class="ident">v</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>:<span class="ident">tt</span> )<span class="op">*</span> ) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span> )<span class="op">*</span> ) )];
- <span class="ident">v</span>.<span class="ident">append</span>(<span class="kw-2">&mut</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> ));
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>fragment_internal {
+ <span class="comment">// The @v prefix is used to parse a sequence of operands and return them in a vector. This is
+ // used by operands that take a variable number of arguments, like `thresh()` and `multi()`.
+ </span>( @v <span class="macro-nonterminal">$op</span>:ident ( $( <span class="macro-nonterminal">$args</span>:tt )* ) $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ <span class="kw">let </span><span class="kw-2">mut </span>v = <span class="macro">vec!</span>[<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">$op </span>( $( <span class="macro-nonterminal">$args </span>)* ) )];
+ v.append(<span class="kw-2">&mut </span><span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v </span>$( <span class="macro-nonterminal">$tail </span>)* ));
- <span class="ident">v</span>
+ v
});
- <span class="comment">// Match modifiers</span>
- ( @<span class="ident">v</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">tt</span> : $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> );
- <span class="kw">let</span> <span class="ident">first</span> <span class="op">=</span> <span class="ident">v</span>.<span class="ident">drain</span>(..<span class="number">1</span>).<span class="ident">next</span>().<span class="ident">unwrap</span>();
+ <span class="comment">// Match modifiers
+ </span>( @v <span class="macro-nonterminal">$modif</span>:tt : $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ <span class="kw">let </span><span class="kw-2">mut </span>v = <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v </span>$( <span class="macro-nonterminal">$tail </span>)* );
+ <span class="kw">let </span>first = v.drain(..<span class="number">1</span>).next().unwrap();
- <span class="kw">let</span> <span class="ident">first</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">first</span>);
+ <span class="kw">let </span>first = <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">$modif</span>:first);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v_final</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">first</span>];
- <span class="ident">v_final</span>.<span class="ident">append</span>(<span class="kw-2">&mut</span> <span class="ident">v</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>v_final = <span class="macro">vec!</span>[first];
+ v_final.append(<span class="kw-2">&mut </span>v);
- <span class="ident">v_final</span>
+ v_final
});
- <span class="comment">// Remove commas between operands</span>
- ( @<span class="ident">v</span> , $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> )
+ <span class="comment">// Remove commas between operands
+ </span>( @v , $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v </span>$( <span class="macro-nonterminal">$tail </span>)* )
});
- ( @<span class="ident">v</span> ) => ({
+ ( @v ) => ({
<span class="macro">vec!</span>[]
});
- <span class="comment">// The @t prefix is used to parse a sequence of operands and return them in a tuple. This</span>
- <span class="comment">// allows checking at compile-time the number of arguments passed to an operand. For this</span>
- <span class="comment">// reason it's used by `and_*()`, `or_*()`, etc.</span>
- <span class="comment">//</span>
- <span class="comment">// Unfortunately, due to the fact that concatenating tuples is pretty hard, the final result</span>
- <span class="comment">// adds in the first spot the parsed operand and in the second spot the result of parsing</span>
- <span class="comment">// all the following ones. For two operands the type then corresponds to: (X, (X, ())). For</span>
- <span class="comment">// three operands it's (X, (X, (X, ()))), etc.</span>
- <span class="comment">//</span>
- <span class="comment">// To check that the right number of arguments has been passed we can "cast" those tuples to</span>
- <span class="comment">// more convenient structures like `TupleTwo`. If the conversion succeeds, the right number of</span>
- <span class="comment">// args was passed. Otherwise the compilation fails entirely.</span>
- ( @<span class="ident">t</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op</span>:<span class="ident">ident</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span>:<span class="ident">tt</span> )<span class="op">*</span> ) $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- (<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">op</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">args</span> )<span class="op">*</span> ) ), <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> ))
+ <span class="comment">// The @t prefix is used to parse a sequence of operands and return them in a tuple. This
+ // allows checking at compile-time the number of arguments passed to an operand. For this
+ // reason it's used by `and_*()`, `or_*()`, etc.
+ //
+ // Unfortunately, due to the fact that concatenating tuples is pretty hard, the final result
+ // adds in the first spot the parsed operand and in the second spot the result of parsing
+ // all the following ones. For two operands the type then corresponds to: (X, (X, ())). For
+ // three operands it's (X, (X, (X, ()))), etc.
+ //
+ // To check that the right number of arguments has been passed we can "cast" those tuples to
+ // more convenient structures like `TupleTwo`. If the conversion succeeds, the right number of
+ // args was passed. Otherwise the compilation fails entirely.
+ </span>( @t <span class="macro-nonterminal">$op</span>:ident ( $( <span class="macro-nonterminal">$args</span>:tt )* ) $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ (<span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">$op </span>( $( <span class="macro-nonterminal">$args </span>)* ) ), <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t </span>$( <span class="macro-nonterminal">$tail </span>)* ))
});
- <span class="comment">// Match modifiers</span>
- ( @<span class="ident">t</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">tt</span> : $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="kw">let</span> (<span class="ident">first</span>, <span class="ident">tail</span>) <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> );
- (<span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">first</span>), <span class="ident">tail</span>)
+ <span class="comment">// Match modifiers
+ </span>( @t <span class="macro-nonterminal">$modif</span>:tt : $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ <span class="kw">let </span>(first, tail) = <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t </span>$( <span class="macro-nonterminal">$tail </span>)* );
+ (<span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">$modif</span>:first), tail)
});
- <span class="comment">// Remove commas between operands</span>
- ( @<span class="ident">t</span> , $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> )
+ <span class="comment">// Remove commas between operands
+ </span>( @t , $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">t </span>$( <span class="macro-nonterminal">$tail </span>)* )
});
- ( @<span class="ident">t</span> ) => ({});
+ ( @t ) => ({});
- <span class="comment">// Fallback to calling `fragment!()`</span>
- ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tokens</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>($( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tokens</span> )<span class="kw-2">*</span>)
+ <span class="comment">// Fallback to calling `fragment!()`
+ </span>( $( <span class="macro-nonterminal">$tokens</span>:tt )* ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>($( <span class="macro-nonterminal">$tokens </span>)<span class="kw-2">*</span>)
});
}
-<span class="doccomment">/// Macro to write descriptor fragments with code</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This macro will be expanded to an object of type `Result<(Miniscript<DescriptorPublicKey, _>, KeyMap, ValidNetworks), DescriptorError>`. It allows writing</span>
-<span class="doccomment">/// fragments of larger descriptors that can be pieced together using `fragment!(thresh_vec(m, ...))`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The syntax to write macro fragment is the same as documented for the [`descriptor`] macro.</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">fragment</span> {
- <span class="comment">// Modifiers</span>
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">tt</span> : $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => ({
- <span class="kw">let</span> <span class="ident">op</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">tail</span> )<span class="op">*</span> );
- <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">modif</span>:<span class="ident">op</span>)
+<span class="doccomment">/// Macro to write descriptor fragments with code
+///
+/// This macro will be expanded to an object of type `Result<(Miniscript<DescriptorPublicKey, _>, KeyMap, ValidNetworks), DescriptorError>`. It allows writing
+/// fragments of larger descriptors that can be pieced together using `fragment!(thresh_vec(m, ...))`.
+///
+/// The syntax to write macro fragment is the same as documented for the [`descriptor`] macro.
+</span><span class="attr">#[macro_export]
+</span><span class="macro">macro_rules! </span>fragment {
+ <span class="comment">// Modifiers
+ </span>( <span class="macro-nonterminal">$modif</span>:tt : $( <span class="macro-nonterminal">$tail</span>:tt )* ) => ({
+ <span class="kw">let </span>op = <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( $( <span class="macro-nonterminal">$tail </span>)* );
+ <span class="macro-nonterminal">$</span><span class="macro">crate::apply_modifier!</span>(<span class="macro-nonterminal">$modif</span>:op)
});
- <span class="comment">// Miniscript</span>
- ( <span class="bool-val">true</span> ) => ({
+ <span class="comment">// Miniscript
+ </span>( <span class="bool-val">true </span>) => ({
<span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode!</span>(<span class="macro-nonterminal">True</span>)
});
- ( <span class="bool-val">false</span> ) => ({
+ ( <span class="bool-val">false </span>) => ({
<span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode!</span>(<span class="macro-nonterminal">False</span>)
});
- ( <span class="ident">pk_k</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::make_pk</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
+ ( pk_k ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ <span class="macro-nonterminal">$crate::keys::make_pk</span>(<span class="macro-nonterminal">$key</span>, <span class="kw-2">&</span>secp)
});
- ( <span class="ident">pk</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="macro-nonterminal">c</span>:<span class="ident">pk_k</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span> ))
+ ( pk ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="macro-nonterminal">c</span>:pk_k ( <span class="macro-nonterminal">$key </span>))
});
- ( <span class="ident">pk_h</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::make_pkh</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
+ ( pk_h ( <span class="macro-nonterminal">$key</span>:expr ) ) => ({
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ <span class="macro-nonterminal">$crate::keys::make_pkh</span>(<span class="macro-nonterminal">$key</span>, <span class="kw-2">&</span>secp)
});
- ( <span class="ident">after</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">After</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::PackedLockTime</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>)) <span class="comment">// TODO!! https://github.com/rust-bitcoin/rust-bitcoin/issues/1302</span>
+ ( after ( <span class="macro-nonterminal">$value</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">After</span>, <span class="macro-nonterminal">$crate::bitcoin::PackedLockTime</span>(<span class="macro-nonterminal">$value</span>)) <span class="comment">// TODO!! https://github.com/rust-bitcoin/rust-bitcoin/issues/1302
+ </span>});
+ ( older ( <span class="macro-nonterminal">$value</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Older</span>, <span class="macro-nonterminal">$crate::bitcoin::Sequence</span>(<span class="macro-nonterminal">$value</span>)) <span class="comment">// TODO!!
+ </span>});
+ ( sha256 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Sha256</span>, <span class="macro-nonterminal">$hash</span>)
});
- ( <span class="ident">older</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Older</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Sequence</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>)) <span class="comment">// TODO!!</span>
+ ( hash256 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Hash256</span>, <span class="macro-nonterminal">$hash</span>)
});
- ( <span class="ident">sha256</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Sha256</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>)
+ ( ripemd160 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Ripemd160</span>, <span class="macro-nonterminal">$hash</span>)
});
- ( <span class="ident">hash256</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Hash256</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>)
+ ( hash160 ( <span class="macro-nonterminal">$hash</span>:expr ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Hash160</span>, <span class="macro-nonterminal">$hash</span>)
});
- ( <span class="ident">ripemd160</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Ripemd160</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>)
+ ( and_v ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">AndV</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">hash160</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>:<span class="ident">expr</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value!</span>(<span class="macro-nonterminal">Hash160</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">hash</span>)
+ ( and_b ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">AndB</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">and_v</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">AndV</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ ( and_or ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_three!</span>(<span class="macro-nonterminal">AndOr</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">and_b</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">AndB</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ ( andor ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_three!</span>(<span class="macro-nonterminal">AndOr</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">and_or</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_three!</span>(<span class="macro-nonterminal">AndOr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ ( or_b ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrB</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">andor</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_three!</span>(<span class="macro-nonterminal">AndOr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ ( or_d ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrD</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">or_b</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrB</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ ( or_c ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrC</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">or_d</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrD</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
+ ( or_i ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrI</span>, $( <span class="macro-nonterminal">$inner </span>)<span class="kw-2">*</span>)
});
- ( <span class="ident">or_c</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrC</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
- });
- ( <span class="ident">or_i</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_node_opcode_two!</span>(<span class="macro-nonterminal">OrI</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="kw-2">*</span>)
- });
- ( <span class="ident">thresh_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">items</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::KeyMap</span>;
+ ( thresh_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$items</span>:expr ) ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor::KeyMap</span>;
- <span class="kw">let</span> (<span class="ident">items</span>, <span class="ident">key_maps_networks</span>): (<span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>) <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">items</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> (<span class="ident">a</span>, (<span class="ident">b</span>, <span class="ident">c</span>))).<span class="ident">unzip</span>();
- <span class="kw">let</span> <span class="ident">items</span> <span class="op">=</span> <span class="ident">items</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="ident">std::sync::Arc::new</span>).<span class="ident">collect</span>();
+ <span class="kw">let </span>(items, key_maps_networks): (Vec<<span class="kw">_</span>>, Vec<<span class="kw">_</span>>) = <span class="macro-nonterminal">$items</span>.into_iter().map(|(a, b, c)| (a, (b, c))).unzip();
+ <span class="kw">let </span>items = items.into_iter().map(std::sync::Arc::new).collect();
- <span class="kw">let</span> (<span class="ident">key_maps</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="ident">key_maps_networks</span>.<span class="ident">into_iter</span>().<span class="ident">fold</span>((<span class="ident">KeyMap::default</span>(), <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::any_network</span>()), <span class="op">|</span>(<span class="kw-2">mut</span> <span class="ident">keys_acc</span>, <span class="ident">net_acc</span>), (<span class="ident">key</span>, <span class="ident">net</span>)<span class="op">|</span> {
- <span class="ident">keys_acc</span>.<span class="ident">extend</span>(<span class="ident">key</span>.<span class="ident">into_iter</span>());
- <span class="kw">let</span> <span class="ident">net_acc</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::merge_networks</span>(<span class="kw-2">&</span><span class="ident">net_acc</span>, <span class="kw-2">&</span><span class="ident">net</span>);
+ <span class="kw">let </span>(key_maps, valid_networks) = key_maps_networks.into_iter().fold((KeyMap::default(), <span class="macro-nonterminal">$crate::keys::any_network</span>()), |(<span class="kw-2">mut </span>keys_acc, net_acc), (key, net)| {
+ keys_acc.extend(key.into_iter());
+ <span class="kw">let </span>net_acc = <span class="macro-nonterminal">$crate::keys::merge_networks</span>(<span class="kw-2">&</span>net_acc, <span class="kw-2">&</span>net);
- (<span class="ident">keys_acc</span>, <span class="ident">net_acc</span>)
+ (keys_acc, net_acc)
});
- <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value_two!</span>(<span class="macro-nonterminal">Thresh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="ident">items</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">minisc</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">|</span> (<span class="ident">minisc</span>, <span class="ident">key_maps</span>, <span class="ident">valid_networks</span>))
+ <span class="macro-nonterminal">$</span><span class="macro">crate::impl_leaf_opcode_value_two!</span>(<span class="macro-nonterminal">Thresh</span>, <span class="macro-nonterminal">$thresh</span>, items)
+ .map(|(minisc, <span class="kw">_</span>, <span class="kw">_</span>)| (minisc, key_maps, valid_networks))
});
- ( <span class="ident">thresh</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">items</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span> )<span class="op">*</span> );
+ ( thresh ( <span class="macro-nonterminal">$thresh</span>:expr, $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
+ <span class="kw">let </span>items = <span class="macro-nonterminal">$</span><span class="macro">crate::fragment_internal!</span>( @<span class="macro-nonterminal">v </span>$( <span class="macro-nonterminal">$inner </span>)* );
- <span class="ident">items</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">items</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="macro-nonterminal">thresh_vec</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="ident">items</span>)))
+ items.into_iter().collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()
+ .and_then(|items| <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>(<span class="macro-nonterminal">thresh_vec</span>(<span class="macro-nonterminal">$thresh</span>, items)))
});
- ( <span class="ident">multi_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ ( multi_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$keys</span>:expr ) ) => ({
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::make_multi</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Terminal::Multi</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
+ <span class="macro-nonterminal">$crate::keys::make_multi</span>(<span class="macro-nonterminal">$thresh</span>, <span class="macro-nonterminal">$crate::miniscript::Terminal::Multi</span>, <span class="macro-nonterminal">$keys</span>, <span class="kw-2">&</span>secp)
});
- ( <span class="ident">multi</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> )<span class="op">+</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::group_multi_keys!</span>( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span> ),<span class="op">*</span> )
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">keys</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">multi_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="ident">keys</span> ) ))
+ ( multi ( <span class="macro-nonterminal">$thresh</span>:expr $(, <span class="macro-nonterminal">$key</span>:expr )+ ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::group_multi_keys!</span>( $( <span class="macro-nonterminal">$key </span>),* )
+ .and_then(|keys| <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">multi_vec </span>( <span class="macro-nonterminal">$thresh</span>, keys ) ))
});
- ( <span class="ident">multi_a_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>:<span class="ident">expr</span> ) ) => ({
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1::new</span>();
+ ( multi_a_vec ( <span class="macro-nonterminal">$thresh</span>:expr, <span class="macro-nonterminal">$keys</span>:expr ) ) => ({
+ <span class="kw">let </span>secp = <span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1::new</span>();
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::keys::make_multi</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Terminal::MultiA</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
+ <span class="macro-nonterminal">$crate::keys::make_multi</span>(<span class="macro-nonterminal">$thresh</span>, <span class="macro-nonterminal">$crate::miniscript::Terminal::MultiA</span>, <span class="macro-nonterminal">$keys</span>, <span class="kw-2">&</span>secp)
});
- ( <span class="ident">multi_a</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>:<span class="ident">expr</span> $(, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> )<span class="op">+</span> ) ) => ({
- <span class="macro-nonterminal">$</span><span class="macro">crate::group_multi_keys!</span>( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span> ),<span class="op">*</span> )
- .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">keys</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">multi_a_vec</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">thresh</span>, <span class="ident">keys</span> ) ))
+ ( multi_a ( <span class="macro-nonterminal">$thresh</span>:expr $(, <span class="macro-nonterminal">$key</span>:expr )+ ) ) => ({
+ <span class="macro-nonterminal">$</span><span class="macro">crate::group_multi_keys!</span>( $( <span class="macro-nonterminal">$key </span>),* )
+ .and_then(|keys| <span class="macro-nonterminal">$</span><span class="macro">crate::fragment!</span>( <span class="macro-nonterminal">multi_a_vec </span>( <span class="macro-nonterminal">$thresh</span>, keys ) ))
});
- <span class="comment">// `sortedmulti()` is handled separately</span>
- ( <span class="ident">sortedmulti</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
+ <span class="comment">// `sortedmulti()` is handled separately
+ </span>( sortedmulti ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
<span class="macro">compile_error!</span>(<span class="string">"`sortedmulti` can only be used as the root operand of a descriptor"</span>);
});
- ( <span class="ident">sortedmulti_vec</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">inner</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ) => ({
+ ( sortedmulti_vec ( $( <span class="macro-nonterminal">$inner</span>:tt )* ) ) => ({
<span class="macro">compile_error!</span>(<span class="string">"`sortedmulti_vec` can only be used as the root operand of a descriptor"</span>);
});
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::ToHex</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::secp256k1::Secp256k1</span>;
- <span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{<span class="ident">DescriptorPublicKey</span>, <span class="ident">KeyMap</span>};
- <span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">Descriptor</span>, <span class="ident">Legacy</span>, <span class="ident">Segwitv0</span>};
-
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
-
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>::{<span class="ident">DescriptorError</span>, <span class="ident">DescriptorMeta</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">ValidNetworks</span>};
- <span class="kw">use</span> <span class="ident">bitcoin::network::constants::Network</span>::{<span class="ident">Bitcoin</span>, <span class="ident">Regtest</span>, <span class="ident">Signet</span>, <span class="ident">Testnet</span>};
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::PrivateKey</span>;
-
- <span class="comment">// test the descriptor!() macro</span>
-
- <span class="comment">// verify descriptor generates expected script(s) (if bare or pk) or address(es)</span>
- <span class="kw">fn</span> <span class="ident">check</span>(
- <span class="ident">desc</span>: <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">DescriptorError</span><span class="op">></span>,
- <span class="ident">is_witness</span>: <span class="ident">bool</span>,
- <span class="ident">is_fixed</span>: <span class="ident">bool</span>,
- <span class="ident">expected</span>: <span class="kw-2">&</span>[<span class="kw-2">&</span><span class="ident">str</span>],
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>bitcoin::hashes::hex::ToHex;
+ <span class="kw">use </span>bitcoin::secp256k1::Secp256k1;
+ <span class="kw">use </span>miniscript::descriptor::{DescriptorPublicKey, KeyMap};
+ <span class="kw">use </span>miniscript::{Descriptor, Legacy, Segwitv0};
+
+ <span class="kw">use </span>std::str::FromStr;
+
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::{DescriptorError, DescriptorMeta};
+ <span class="kw">use </span><span class="kw">crate</span>::keys::{DescriptorKey, IntoDescriptorKey, ValidNetworks};
+ <span class="kw">use </span>bitcoin::network::constants::Network::{Bitcoin, Regtest, Signet, Testnet};
+ <span class="kw">use </span>bitcoin::util::bip32;
+ <span class="kw">use </span>bitcoin::PrivateKey;
+
+ <span class="comment">// test the descriptor!() macro
+
+ // verify descriptor generates expected script(s) (if bare or pk) or address(es)
+ </span><span class="kw">fn </span>check(
+ desc: <span class="prelude-ty">Result</span><(Descriptor<DescriptorPublicKey>, KeyMap, ValidNetworks), DescriptorError>,
+ is_witness: bool,
+ is_fixed: bool,
+ expected: <span class="kw-2">&</span>[<span class="kw-2">&</span>str],
) {
- <span class="kw">let</span> (<span class="ident">desc</span>, <span class="ident">_key_map</span>, <span class="ident">_networks</span>) <span class="op">=</span> <span class="ident">desc</span>.<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">desc</span>.<span class="ident">is_witness</span>(), <span class="ident">is_witness</span>);
- <span class="macro">assert_eq!</span>(<span class="op">!</span><span class="ident">desc</span>.<span class="ident">has_wildcard</span>(), <span class="ident">is_fixed</span>);
- <span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">expected</span>.<span class="ident">len</span>() {
- <span class="kw">let</span> <span class="ident">index</span> <span class="op">=</span> <span class="ident">i</span> <span class="kw">as</span> <span class="ident">u32</span>;
- <span class="kw">let</span> <span class="ident">child_desc</span> <span class="op">=</span> <span class="kw">if</span> <span class="op">!</span><span class="ident">desc</span>.<span class="ident">has_wildcard</span>() {
- <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="number">0</span>)
- } <span class="kw">else</span> {
- <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="ident">index</span>)
+ <span class="kw">let </span>(desc, _key_map, _networks) = desc.unwrap();
+ <span class="macro">assert_eq!</span>(desc.is_witness(), is_witness);
+ <span class="macro">assert_eq!</span>(!desc.has_wildcard(), is_fixed);
+ <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..expected.len() {
+ <span class="kw">let </span>index = i <span class="kw">as </span>u32;
+ <span class="kw">let </span>child_desc = <span class="kw">if </span>!desc.has_wildcard() {
+ desc.at_derivation_index(<span class="number">0</span>)
+ } <span class="kw">else </span>{
+ desc.at_derivation_index(index)
};
- <span class="kw">let</span> <span class="ident">address</span> <span class="op">=</span> <span class="ident">child_desc</span>.<span class="ident">address</span>(<span class="ident">Regtest</span>);
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Ok</span>(<span class="ident">address</span>) <span class="op">=</span> <span class="ident">address</span> {
- <span class="macro">assert_eq!</span>(<span class="ident">address</span>.<span class="ident">to_string</span>(), <span class="kw-2">*</span><span class="ident">expected</span>.<span class="ident">get</span>(<span class="ident">i</span>).<span class="ident">unwrap</span>());
- } <span class="kw">else</span> {
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">child_desc</span>.<span class="ident">script_pubkey</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">script</span>.<span class="ident">to_hex</span>().<span class="ident">as_str</span>(), <span class="kw-2">*</span><span class="ident">expected</span>.<span class="ident">get</span>(<span class="ident">i</span>).<span class="ident">unwrap</span>());
+ <span class="kw">let </span>address = child_desc.address(Regtest);
+ <span class="kw">if let </span><span class="prelude-val">Ok</span>(address) = address {
+ <span class="macro">assert_eq!</span>(address.to_string(), <span class="kw-2">*</span>expected.get(i).unwrap());
+ } <span class="kw">else </span>{
+ <span class="kw">let </span>script = child_desc.script_pubkey();
+ <span class="macro">assert_eq!</span>(script.to_hex().as_str(), <span class="kw-2">*</span>expected.get(i).unwrap());
}
}
}
- <span class="comment">// - at least one of each "type" of operator; i.e. one modifier, one leaf_opcode, one leaf_opcode_value, etc.</span>
- <span class="comment">// - mixing up key types that implement IntoDescriptorKey in multi() or thresh()</span>
+ <span class="comment">// - at least one of each "type" of operator; i.e. one modifier, one leaf_opcode, one leaf_opcode_value, etc.
+ // - mixing up key types that implement IntoDescriptorKey in multi() or thresh()
- <span class="comment">// expected script for pk and bare manually created</span>
- <span class="comment">// expected addresses created with `bitcoin-cli getdescriptorinfo` (for hash) and `bitcoin-cli deriveaddresses`</span>
+ // expected script for pk and bare manually created
+ // expected addresses created with `bitcoin-cli getdescriptorinfo` (for hash) and `bitcoin-cli deriveaddresses`
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fixed_legacy_descriptors</span>() {
- <span class="kw">let</span> <span class="ident">pubkey1</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fixed_legacy_descriptors() {
+ <span class="kw">let </span>pubkey1 = bitcoin::PublicKey::from_str(
<span class="string">"03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">pubkey2</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ .unwrap();
+ <span class="kw">let </span>pubkey2 = bitcoin::PublicKey::from_str(
<span class="string">"032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af"</span>,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">bare</span>(<span class="ident">multi</span>(<span class="number">1</span>,<span class="ident">pubkey1</span>,<span class="ident">pubkey2</span>))),
+ check(
+ <span class="macro">descriptor!</span>(bare(multi(<span class="number">1</span>,pubkey1,pubkey2))),
<span class="bool-val">false</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"512103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd21032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af52ae"</span>],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">pk</span>(<span class="ident">pubkey1</span>)),
+ check(
+ <span class="macro">descriptor!</span>(pk(pubkey1)),
<span class="bool-val">false</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bdac"</span>],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">pkh</span>(<span class="ident">pubkey1</span>)),
+ check(
+ <span class="macro">descriptor!</span>(pkh(pubkey1)),
<span class="bool-val">false</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"muZpTpBYhxmRFuCjLc7C6BBDF32C8XVJUi"</span>],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">pubkey1</span>, <span class="ident">pubkey2</span>))),
+ check(
+ <span class="macro">descriptor!</span>(sh(multi(<span class="number">1</span>, pubkey1, pubkey2))),
<span class="bool-val">false</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2MymURoV1bzuMnWMGiXzyomDkeuxXY7Suey"</span>],
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fixed_segwitv0_descriptors</span>() {
- <span class="kw">let</span> <span class="ident">pubkey1</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fixed_segwitv0_descriptors() {
+ <span class="kw">let </span>pubkey1 = bitcoin::PublicKey::from_str(
<span class="string">"03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">pubkey2</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ .unwrap();
+ <span class="kw">let </span>pubkey2 = bitcoin::PublicKey::from_str(
<span class="string">"032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af"</span>,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">pubkey1</span>)),
+ check(
+ <span class="macro">descriptor!</span>(wpkh(pubkey1)),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"bcrt1qngw83fg8dz0k749cg7k3emc7v98wy0c7azaa6h"</span>],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wpkh</span>(<span class="ident">pubkey1</span>))),
+ check(
+ <span class="macro">descriptor!</span>(sh(wpkh(pubkey1))),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2N5LiC3CqzxDamRTPG1kiNv1FpNJQ7x28sb"</span>],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">pubkey1</span>, <span class="ident">pubkey2</span>))),
+ check(
+ <span class="macro">descriptor!</span>(wsh(multi(<span class="number">1</span>, pubkey1, pubkey2))),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"bcrt1qgw8jvv2hsrvjfa6q66rk6har7d32lrqm5unnf5cl63q9phxfvgps5fyfqe"</span>],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">pubkey1</span>, <span class="ident">pubkey2</span>)))),
+ check(
+ <span class="macro">descriptor!</span>(sh(wsh(multi(<span class="number">1</span>, pubkey1, pubkey2)))),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2NCidRJysy7apkmE6JF5mLLaJFkrN3Ub9iy"</span>],
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fixed_threeop_descriptors</span>() {
- <span class="kw">let</span> <span class="ident">redeem_key</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fixed_threeop_descriptors() {
+ <span class="kw">let </span>redeem_key = bitcoin::PublicKey::from_str(
<span class="string">"03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">move_key</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ .unwrap();
+ <span class="kw">let </span>move_key = bitcoin::PublicKey::from_str(
<span class="string">"032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af"</span>,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wsh</span>(<span class="ident">and_or</span>(<span class="ident">pk</span>(<span class="ident">redeem_key</span>), <span class="ident">older</span>(<span class="number">1000</span>), <span class="ident">pk</span>(<span class="ident">move_key</span>))))),
+ check(
+ <span class="macro">descriptor!</span>(sh(wsh(and_or(pk(redeem_key), older(<span class="number">1000</span>), pk(move_key))))),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2MypGwr5eQWAWWJtiJgUEToVxc4zuokjQRe"</span>],
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip32_legacy_descriptors</span>() {
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip32_legacy_descriptors() {
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">pk</span>(<span class="ident">desc_key</span>)),
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key = (xprv, path.clone()).into_descriptor_key().unwrap();
+ check(
+ <span class="macro">descriptor!</span>(pk(desc_key)),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
],
);
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">pkh</span>(<span class="ident">desc_key</span>)),
+ <span class="kw">let </span>desc_key = (xprv, path.clone()).into_descriptor_key().unwrap();
+ check(
+ <span class="macro">descriptor!</span>(pkh(desc_key)),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
],
);
- <span class="kw">let</span> <span class="ident">path2</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/2147483647'/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key1</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key2</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path2</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>path2 = bip32::DerivationPath::from_str(<span class="string">"m/2147483647'/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key1 = (xprv, path).into_descriptor_key().unwrap();
+ <span class="kw">let </span>desc_key2 = (xprv, path2).into_descriptor_key().unwrap();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">desc_key1</span>, <span class="ident">desc_key2</span>))),
+ check(
+ <span class="macro">descriptor!</span>(sh(multi(<span class="number">1</span>, desc_key1, desc_key2))),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip32_segwitv0_descriptors</span>() {
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip32_segwitv0_descriptors() {
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">desc_key</span>)),
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key = (xprv, path.clone()).into_descriptor_key().unwrap();
+ check(
+ <span class="macro">descriptor!</span>(wpkh(desc_key)),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
],
);
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wpkh</span>(<span class="ident">desc_key</span>))),
+ <span class="kw">let </span>desc_key = (xprv, path.clone()).into_descriptor_key().unwrap();
+ check(
+ <span class="macro">descriptor!</span>(sh(wpkh(desc_key))),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
],
);
- <span class="kw">let</span> <span class="ident">path2</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/2147483647'/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key1</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key2</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path2</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">desc_key1</span>, <span class="ident">desc_key2</span>))),
+ <span class="kw">let </span>path2 = bip32::DerivationPath::from_str(<span class="string">"m/2147483647'/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key1 = (xprv, path.clone()).into_descriptor_key().unwrap();
+ <span class="kw">let </span>desc_key2 = (xprv, path2.clone()).into_descriptor_key().unwrap();
+ check(
+ <span class="macro">descriptor!</span>(wsh(multi(<span class="number">1</span>, desc_key1, desc_key2))),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
],
);
- <span class="kw">let</span> <span class="ident">desc_key1</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key2</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path2</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">desc_key1</span>, <span class="ident">desc_key2</span>)))),
+ <span class="kw">let </span>desc_key1 = (xprv, path).into_descriptor_key().unwrap();
+ <span class="kw">let </span>desc_key2 = (xprv, path2).into_descriptor_key().unwrap();
+ check(
+ <span class="macro">descriptor!</span>(sh(wsh(multi(<span class="number">1</span>, desc_key1, desc_key2)))),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_dsl_sortedmulti</span>() {
- <span class="kw">let</span> <span class="ident">key_1</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path_1</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_dsl_sortedmulti() {
+ <span class="kw">let </span>key_1 = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="kw">let </span>path_1 = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
- <span class="kw">let</span> <span class="ident">key_2</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path_2</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/1"</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>key_2 = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF"</span>).unwrap();
+ <span class="kw">let </span>path_2 = bip32::DerivationPath::from_str(<span class="string">"m/1"</span>).unwrap();
- <span class="kw">let</span> <span class="ident">desc_key1</span> <span class="op">=</span> (<span class="ident">key_1</span>, <span class="ident">path_1</span>);
- <span class="kw">let</span> <span class="ident">desc_key2</span> <span class="op">=</span> (<span class="ident">key_2</span>, <span class="ident">path_2</span>);
+ <span class="kw">let </span>desc_key1 = (key_1, path_1);
+ <span class="kw">let </span>desc_key2 = (key_2, path_2);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">sortedmulti</span>(<span class="number">1</span>, <span class="ident">desc_key1</span>.<span class="ident">clone</span>(), <span class="ident">desc_key2</span>.<span class="ident">clone</span>()))),
+ check(
+ <span class="macro">descriptor!</span>(sh(sortedmulti(<span class="number">1</span>, desc_key1.clone(), desc_key2.clone()))),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wsh</span>(<span class="ident">sortedmulti</span>(
+ check(
+ <span class="macro">descriptor!</span>(sh(wsh(sortedmulti(
<span class="number">1</span>,
- <span class="ident">desc_key1</span>.<span class="ident">clone</span>(),
- <span class="ident">desc_key2</span>.<span class="ident">clone</span>()
+ desc_key1.clone(),
+ desc_key2.clone()
)))),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
],
);
- <span class="ident">check</span>(
- <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">sortedmulti_vec</span>(<span class="number">1</span>, <span class="macro">vec!</span>[<span class="ident">desc_key1</span>, <span class="ident">desc_key2</span>]))),
+ check(
+ <span class="macro">descriptor!</span>(wsh(sortedmulti_vec(<span class="number">1</span>, <span class="macro">vec!</span>[desc_key1, desc_key2]))),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="comment">// - verify the valid_networks returned is correctly computed based on the keys present in the descriptor</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_valid_networks</span>() {
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
+ <span class="comment">// - verify the valid_networks returned is correctly computed based on the keys present in the descriptor
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_valid_networks() {
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key = (xprv, path).into_descriptor_key().unwrap();
- <span class="kw">let</span> (<span class="ident">_desc</span>, <span class="ident">_key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">pkh</span>(<span class="ident">desc_key</span>)).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(_desc, _key_map, valid_networks) = <span class="macro">descriptor!</span>(pkh(desc_key)).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">valid_networks</span>,
- [<span class="ident">Testnet</span>, <span class="ident">Regtest</span>, <span class="ident">Signet</span>].<span class="ident">iter</span>().<span class="ident">cloned</span>().<span class="ident">collect</span>()
+ valid_networks,
+ [Testnet, Regtest, Signet].iter().cloned().collect()
);
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/10/20/30/40"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="ident">_desc</span>, <span class="ident">_key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">desc_key</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">valid_networks</span>, [<span class="ident">Bitcoin</span>].<span class="ident">iter</span>().<span class="ident">cloned</span>().<span class="ident">collect</span>());
- }
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey::from_str(<span class="string">"xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"</span>).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/10/20/30/40"</span>).unwrap();
+ <span class="kw">let </span>desc_key = (xprv, path).into_descriptor_key().unwrap();
- <span class="comment">// - verify the key_maps are correctly merged together</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_key_maps_merged</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> <span class="ident">xprv1</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path1</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key1</span> <span class="op">=</span> (<span class="ident">xprv1</span>, <span class="ident">path1</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">xprv2</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path2</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/2147483647'/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key2</span> <span class="op">=</span> (<span class="ident">xprv2</span>, <span class="ident">path2</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">xprv3</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path3</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/10/20/30/40"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key3</span> <span class="op">=</span> (<span class="ident">xprv3</span>, <span class="ident">path3</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="ident">_desc</span>, <span class="ident">key_map</span>, <span class="ident">_valid_networks</span>) <span class="op">=</span>
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">desc_key1</span>, <span class="ident">desc_key2</span>, <span class="ident">desc_key3</span>)))).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">key_map</span>.<span class="ident">len</span>(), <span class="number">3</span>);
-
- <span class="kw">let</span> <span class="ident">desc_key1</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span> <span class="op">=</span> (<span class="ident">xprv1</span>, <span class="ident">path1</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key2</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span> <span class="op">=</span> (<span class="ident">xprv2</span>, <span class="ident">path2</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key3</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span> <span class="op">=</span> (<span class="ident">xprv3</span>, <span class="ident">path3</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="ident">key1</span>, <span class="ident">_key_map</span>, <span class="ident">_valid_networks</span>) <span class="op">=</span> <span class="ident">desc_key1</span>.<span class="ident">extract</span>(<span class="kw-2">&</span><span class="ident">secp</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">key2</span>, <span class="ident">_key_map</span>, <span class="ident">_valid_networks</span>) <span class="op">=</span> <span class="ident">desc_key2</span>.<span class="ident">extract</span>(<span class="kw-2">&</span><span class="ident">secp</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">key3</span>, <span class="ident">_key_map</span>, <span class="ident">_valid_networks</span>) <span class="op">=</span> <span class="ident">desc_key3</span>.<span class="ident">extract</span>(<span class="kw-2">&</span><span class="ident">secp</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">key_map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key1</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/0/*"</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">key_map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key2</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF/2147483647'/0/*"</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">key_map</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key3</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf/10/20/30/40/*"</span>);
+ <span class="kw">let </span>(_desc, _key_map, valid_networks) = <span class="macro">descriptor!</span>(wpkh(desc_key)).unwrap();
+ <span class="macro">assert_eq!</span>(valid_networks, [Bitcoin].iter().cloned().collect());
}
- <span class="comment">// - verify the ScriptContext is correctly validated (i.e. passing a type that only impl IntoDescriptorKey<Segwitv0> to a pkh() descriptor should throw a compilation error</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_script_context_validation</span>() {
- <span class="comment">// this compiles</span>
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">desc_key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="ident">desc</span>, <span class="ident">_key_map</span>, <span class="ident">_valid_networks</span>) <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">pkh</span>(<span class="ident">desc_key</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">desc</span>.<span class="ident">to_string</span>(), <span class="string">"pkh(tpubD6NzVbkrYhZ4WR7a4vY1VT3khMJMeAxVsfq9TBJyJWrNk247zCJtV7AWf6UJP7rAVsn8NNKdJi3gFyKPTmWZS9iukb91xbn2HbFSMQm2igY/0/*)#yrnz9pp2"</span>);
-
- <span class="comment">// as expected this does not compile due to invalid context</span>
- <span class="comment">//let desc_key:DescriptorKey<Segwitv0> = (xprv, path.clone()).into_descriptor_key().unwrap();</span>
- <span class="comment">//let (desc, _key_map, _valid_networks) = descriptor!(pkh(desc_key)).unwrap();</span>
+ <span class="comment">// - verify the key_maps are correctly merged together
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_key_maps_merged() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>xprv1 = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="kw">let </span>path1 = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key1 = (xprv1, path1.clone()).into_descriptor_key().unwrap();
+
+ <span class="kw">let </span>xprv2 = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF"</span>).unwrap();
+ <span class="kw">let </span>path2 = bip32::DerivationPath::from_str(<span class="string">"m/2147483647'/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key2 = (xprv2, path2.clone()).into_descriptor_key().unwrap();
+
+ <span class="kw">let </span>xprv3 = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf"</span>).unwrap();
+ <span class="kw">let </span>path3 = bip32::DerivationPath::from_str(<span class="string">"m/10/20/30/40"</span>).unwrap();
+ <span class="kw">let </span>desc_key3 = (xprv3, path3.clone()).into_descriptor_key().unwrap();
+
+ <span class="kw">let </span>(_desc, key_map, _valid_networks) =
+ <span class="macro">descriptor!</span>(sh(wsh(multi(<span class="number">2</span>, desc_key1, desc_key2, desc_key3)))).unwrap();
+ <span class="macro">assert_eq!</span>(key_map.len(), <span class="number">3</span>);
+
+ <span class="kw">let </span>desc_key1: DescriptorKey<Segwitv0> = (xprv1, path1).into_descriptor_key().unwrap();
+ <span class="kw">let </span>desc_key2: DescriptorKey<Segwitv0> = (xprv2, path2).into_descriptor_key().unwrap();
+ <span class="kw">let </span>desc_key3: DescriptorKey<Segwitv0> = (xprv3, path3).into_descriptor_key().unwrap();
+
+ <span class="kw">let </span>(key1, _key_map, _valid_networks) = desc_key1.extract(<span class="kw-2">&</span>secp).unwrap();
+ <span class="kw">let </span>(key2, _key_map, _valid_networks) = desc_key2.extract(<span class="kw-2">&</span>secp).unwrap();
+ <span class="kw">let </span>(key3, _key_map, _valid_networks) = desc_key3.extract(<span class="kw-2">&</span>secp).unwrap();
+ <span class="macro">assert_eq!</span>(key_map.get(<span class="kw-2">&</span>key1).unwrap().to_string(), <span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/0/*"</span>);
+ <span class="macro">assert_eq!</span>(key_map.get(<span class="kw-2">&</span>key2).unwrap().to_string(), <span class="string">"tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF/2147483647'/0/*"</span>);
+ <span class="macro">assert_eq!</span>(key_map.get(<span class="kw-2">&</span>key3).unwrap().to_string(), <span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf/10/20/30/40/*"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_dsl_modifiers</span>() {
- <span class="kw">let</span> <span class="ident">private_key</span> <span class="op">=</span>
- <span class="ident">PrivateKey::from_wif</span>(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">thresh</span>(<span class="number">2</span>,<span class="ident">n</span>:<span class="ident">d</span>:<span class="ident">v</span>:<span class="ident">older</span>(<span class="number">1</span>),<span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">private_key</span>),<span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">private_key</span>)))).<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">descriptor</span>.<span class="ident">to_string</span>(), <span class="string">"wsh(thresh(2,ndv:older(1),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)))#zzk3ux8g"</span>)
+ <span class="comment">// - verify the ScriptContext is correctly validated (i.e. passing a type that only impl IntoDescriptorKey<Segwitv0> to a pkh() descriptor should throw a compilation error
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_script_context_validation() {
+ <span class="comment">// this compiles
+ </span><span class="kw">let </span>xprv = bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
+ <span class="kw">let </span>desc_key: DescriptorKey<Legacy> = (xprv, path).into_descriptor_key().unwrap();
+
+ <span class="kw">let </span>(desc, _key_map, _valid_networks) = <span class="macro">descriptor!</span>(pkh(desc_key)).unwrap();
+ <span class="macro">assert_eq!</span>(desc.to_string(), <span class="string">"pkh(tpubD6NzVbkrYhZ4WR7a4vY1VT3khMJMeAxVsfq9TBJyJWrNk247zCJtV7AWf6UJP7rAVsn8NNKdJi3gFyKPTmWZS9iukb91xbn2HbFSMQm2igY/0/*)#yrnz9pp2"</span>);
+
+ <span class="comment">// as expected this does not compile due to invalid context
+ //let desc_key:DescriptorKey<Segwitv0> = (xprv, path.clone()).into_descriptor_key().unwrap();
+ //let (desc, _key_map, _valid_networks) = descriptor!(pkh(desc_key)).unwrap();
+ </span>}
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_dsl_modifiers() {
+ <span class="kw">let </span>private_key =
+ PrivateKey::from_wif(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).unwrap();
+ <span class="kw">let </span>(descriptor, <span class="kw">_</span>, <span class="kw">_</span>) =
+ <span class="macro">descriptor!</span>(wsh(thresh(<span class="number">2</span>,n:d:v:older(<span class="number">1</span>),s:pk(private_key),s:pk(private_key)))).unwrap();
+
+ <span class="macro">assert_eq!</span>(descriptor.to_string(), <span class="string">"wsh(thresh(2,ndv:older(1),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)))#zzk3ux8g"</span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(
- <span class="ident">expected</span> <span class="op">=</span> <span class="string">"Miniscript(ContextError(CompressedOnly(\"04b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a87378ec38ff91d43e8c2092ebda601780485263da089465619e0358a5c1be7ac91f4\")))"</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">test_dsl_miniscript_checks</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">uncompressed_pk</span> <span class="op">=</span>
- <span class="ident">PrivateKey::from_wif</span>(<span class="string">"L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6"</span>).<span class="ident">unwrap</span>();
- <span class="ident">uncompressed_pk</span>.<span class="ident">compressed</span> <span class="op">=</span> <span class="bool-val">false</span>;
+ <span class="attr">#[test]
+ #[should_panic(
+ expected = <span class="string">"Miniscript(ContextError(CompressedOnly(\"04b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a87378ec38ff91d43e8c2092ebda601780485263da089465619e0358a5c1be7ac91f4\")))"
+ </span>)]
+ </span><span class="kw">fn </span>test_dsl_miniscript_checks() {
+ <span class="kw">let </span><span class="kw-2">mut </span>uncompressed_pk =
+ PrivateKey::from_wif(<span class="string">"L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6"</span>).unwrap();
+ uncompressed_pk.compressed = <span class="bool-val">false</span>;
- <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">v</span>: <span class="ident">pk</span>(<span class="ident">uncompressed_pk</span>))).<span class="ident">unwrap</span>();
+ <span class="macro">descriptor!</span>(wsh(v: pk(uncompressed_pk))).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_dsl_tr_only_key</span>() {
- <span class="kw">let</span> <span class="ident">private_key</span> <span class="op">=</span>
- <span class="ident">PrivateKey::from_wif</span>(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">private_key</span>)).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_dsl_tr_only_key() {
+ <span class="kw">let </span>private_key =
+ PrivateKey::from_wif(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).unwrap();
+ <span class="kw">let </span>(descriptor, <span class="kw">_</span>, <span class="kw">_</span>) = <span class="macro">descriptor!</span>(tr(private_key)).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">descriptor</span>.<span class="ident">to_string</span>(),
- <span class="string">"tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#heq9m95v"</span>
- )
+ descriptor.to_string(),
+ <span class="string">"tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#heq9m95v"
+ </span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_dsl_tr_simple_tree</span>() {
- <span class="kw">let</span> <span class="ident">private_key</span> <span class="op">=</span>
- <span class="ident">PrivateKey::from_wif</span>(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">private_key</span>, { <span class="ident">pk</span>(<span class="ident">private_key</span>), <span class="ident">pk</span>(<span class="ident">private_key</span>) })).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_dsl_tr_simple_tree() {
+ <span class="kw">let </span>private_key =
+ PrivateKey::from_wif(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).unwrap();
+ <span class="kw">let </span>(descriptor, <span class="kw">_</span>, <span class="kw">_</span>) =
+ <span class="macro">descriptor!</span>(tr(private_key, { pk(private_key), pk(private_key) })).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">descriptor</span>.<span class="ident">to_string</span>(), <span class="string">"tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,{pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)})#xy5fjw6d"</span>)
+ <span class="macro">assert_eq!</span>(descriptor.to_string(), <span class="string">"tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,{pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)})#xy5fjw6d"</span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_dsl_tr_single_leaf</span>() {
- <span class="kw">let</span> <span class="ident">private_key</span> <span class="op">=</span>
- <span class="ident">PrivateKey::from_wif</span>(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">private_key</span>, <span class="ident">pk</span>(<span class="ident">private_key</span>))).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_dsl_tr_single_leaf() {
+ <span class="kw">let </span>private_key =
+ PrivateKey::from_wif(<span class="string">"cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR"</span>).unwrap();
+ <span class="kw">let </span>(descriptor, <span class="kw">_</span>, <span class="kw">_</span>) = <span class="macro">descriptor!</span>(tr(private_key, pk(private_key))).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">descriptor</span>.<span class="ident">to_string</span>(), <span class="string">"tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c))#lzl2vmc7"</span>)
+ <span class="macro">assert_eq!</span>(descriptor.to_string(), <span class="string">"tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c))#lzl2vmc7"</span>)
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/error.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10">10</span>
-<span id="11">11</span>
-<span id="12">12</span>
-<span id="13">13</span>
-<span id="14">14</span>
-<span id="15">15</span>
-<span id="16">16</span>
-<span id="17">17</span>
-<span id="18">18</span>
-<span id="19">19</span>
-<span id="20">20</span>
-<span id="21">21</span>
-<span id="22">22</span>
-<span id="23">23</span>
-<span id="24">24</span>
-<span id="25">25</span>
-<span id="26">26</span>
-<span id="27">27</span>
-<span id="28">28</span>
-<span id="29">29</span>
-<span id="30">30</span>
-<span id="31">31</span>
-<span id="32">32</span>
-<span id="33">33</span>
-<span id="34">34</span>
-<span id="35">35</span>
-<span id="36">36</span>
-<span id="37">37</span>
-<span id="38">38</span>
-<span id="39">39</span>
-<span id="40">40</span>
-<span id="41">41</span>
-<span id="42">42</span>
-<span id="43">43</span>
-<span id="44">44</span>
-<span id="45">45</span>
-<span id="46">46</span>
-<span id="47">47</span>
-<span id="48">48</span>
-<span id="49">49</span>
-<span id="50">50</span>
-<span id="51">51</span>
-<span id="52">52</span>
-<span id="53">53</span>
-<span id="54">54</span>
-<span id="55">55</span>
-<span id="56">56</span>
-<span id="57">57</span>
-<span id="58">58</span>
-<span id="59">59</span>
-<span id="60">60</span>
-<span id="61">61</span>
-<span id="62">62</span>
-<span id="63">63</span>
-<span id="64">64</span>
-<span id="65">65</span>
-<span id="66">66</span>
-<span id="67">67</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/error.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Descriptor errors</span>
+</span><span class="doccomment">//! Descriptor errors
-<span class="doccomment">/// Errors related to the parsing and usage of descriptors</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Error</span> {
- <span class="doccomment">/// Invalid HD Key path, such as having a wildcard but a length != 1</span>
- <span class="ident">InvalidHdKeyPath</span>,
- <span class="doccomment">/// The provided descriptor doesn't match its checksum</span>
- <span class="ident">InvalidDescriptorChecksum</span>,
- <span class="doccomment">/// The descriptor contains hardened derivation steps on public extended keys</span>
- <span class="ident">HardenedDerivationXpub</span>,
+/// Errors related to the parsing and usage of descriptors
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>Error {
+ <span class="doccomment">/// Invalid HD Key path, such as having a wildcard but a length != 1
+ </span>InvalidHdKeyPath,
+ <span class="doccomment">/// The provided descriptor doesn't match its checksum
+ </span>InvalidDescriptorChecksum,
+ <span class="doccomment">/// The descriptor contains hardened derivation steps on public extended keys
+ </span>HardenedDerivationXpub,
- <span class="doccomment">/// Error thrown while working with [`keys`](crate::keys)</span>
- <span class="ident">Key</span>(<span class="ident"><span class="kw">crate</span>::keys::KeyError</span>),
- <span class="doccomment">/// Error while extracting and manipulating policies</span>
- <span class="ident">Policy</span>(<span class="ident"><span class="kw">crate</span>::descriptor::policy::PolicyError</span>),
+ <span class="doccomment">/// Error thrown while working with [`keys`](crate::keys)
+ </span>Key(<span class="kw">crate</span>::keys::KeyError),
+ <span class="doccomment">/// Error while extracting and manipulating policies
+ </span>Policy(<span class="kw">crate</span>::descriptor::policy::PolicyError),
- <span class="doccomment">/// Invalid byte found in the descriptor checksum</span>
- <span class="ident">InvalidDescriptorCharacter</span>(<span class="ident">u8</span>),
+ <span class="doccomment">/// Invalid byte found in the descriptor checksum
+ </span>InvalidDescriptorCharacter(u8),
- <span class="doccomment">/// BIP32 error</span>
- <span class="ident">Bip32</span>(<span class="ident">bitcoin::util::bip32::Error</span>),
- <span class="doccomment">/// Error during base58 decoding</span>
- <span class="ident">Base58</span>(<span class="ident">bitcoin::util::base58::Error</span>),
- <span class="doccomment">/// Key-related error</span>
- <span class="ident">Pk</span>(<span class="ident">bitcoin::util::key::Error</span>),
- <span class="doccomment">/// Miniscript error</span>
- <span class="ident">Miniscript</span>(<span class="ident">miniscript::Error</span>),
- <span class="doccomment">/// Hex decoding error</span>
- <span class="ident">Hex</span>(<span class="ident">bitcoin::hashes::hex::Error</span>),
+ <span class="doccomment">/// BIP32 error
+ </span>Bip32(bitcoin::util::bip32::Error),
+ <span class="doccomment">/// Error during base58 decoding
+ </span>Base58(bitcoin::util::base58::Error),
+ <span class="doccomment">/// Key-related error
+ </span>Pk(bitcoin::util::key::Error),
+ <span class="doccomment">/// Miniscript error
+ </span>Miniscript(miniscript::Error),
+ <span class="doccomment">/// Hex decoding error
+ </span>Hex(bitcoin::hashes::hex::Error),
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::keys::KeyError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">key_error</span>: <span class="ident"><span class="kw">crate</span>::keys::KeyError</span>) -> <span class="ident">Error</span> {
- <span class="kw">match</span> <span class="ident">key_error</span> {
- <span class="ident"><span class="kw">crate</span>::keys::KeyError::Miniscript</span>(<span class="ident">inner</span>) => <span class="ident">Error::Miniscript</span>(<span class="ident">inner</span>),
- <span class="ident"><span class="kw">crate</span>::keys::KeyError::Bip32</span>(<span class="ident">inner</span>) => <span class="ident">Error::Bip32</span>(<span class="ident">inner</span>),
- <span class="ident">e</span> => <span class="ident">Error::Key</span>(<span class="ident">e</span>),
+<span class="kw">impl </span>From<<span class="kw">crate</span>::keys::KeyError> <span class="kw">for </span>Error {
+ <span class="kw">fn </span>from(key_error: <span class="kw">crate</span>::keys::KeyError) -> Error {
+ <span class="kw">match </span>key_error {
+ <span class="kw">crate</span>::keys::KeyError::Miniscript(inner) => Error::Miniscript(inner),
+ <span class="kw">crate</span>::keys::KeyError::Bip32(inner) => Error::Bip32(inner),
+ e => Error::Key(e),
}
}
}
-<span class="kw">impl</span> <span class="ident">std::fmt::Display</span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">std::fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">std::fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>Error {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>std::fmt::Formatter<<span class="lifetime">'_</span>>) -> std::fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">Error</span> {}
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>Error {}
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::bip32::Error</span>, <span class="ident">Bip32</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::base58::Error</span>, <span class="ident">Base58</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::key::Error</span>, <span class="ident">Pk</span>);
-<span class="macro">impl_error!</span>(<span class="ident">miniscript::Error</span>, <span class="ident">Miniscript</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::hashes::hex::Error</span>, <span class="ident">Hex</span>);
-<span class="macro">impl_error!</span>(<span class="ident"><span class="kw">crate</span>::descriptor::policy::PolicyError</span>, <span class="ident">Policy</span>);
+<span class="macro">impl_error!</span>(bitcoin::util::bip32::Error, Bip32);
+<span class="macro">impl_error!</span>(bitcoin::util::base58::Error, Base58);
+<span class="macro">impl_error!</span>(bitcoin::util::key::Error, Pk);
+<span class="macro">impl_error!</span>(miniscript::Error, Miniscript);
+<span class="macro">impl_error!</span>(bitcoin::hashes::hex::Error, Hex);
+<span class="macro">impl_error!</span>(<span class="kw">crate</span>::descriptor::policy::PolicyError, Policy);
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-<span id="658">658</span>
-<span id="659">659</span>
-<span id="660">660</span>
-<span id="661">661</span>
-<span id="662">662</span>
-<span id="663">663</span>
-<span id="664">664</span>
-<span id="665">665</span>
-<span id="666">666</span>
-<span id="667">667</span>
-<span id="668">668</span>
-<span id="669">669</span>
-<span id="670">670</span>
-<span id="671">671</span>
-<span id="672">672</span>
-<span id="673">673</span>
-<span id="674">674</span>
-<span id="675">675</span>
-<span id="676">676</span>
-<span id="677">677</span>
-<span id="678">678</span>
-<span id="679">679</span>
-<span id="680">680</span>
-<span id="681">681</span>
-<span id="682">682</span>
-<span id="683">683</span>
-<span id="684">684</span>
-<span id="685">685</span>
-<span id="686">686</span>
-<span id="687">687</span>
-<span id="688">688</span>
-<span id="689">689</span>
-<span id="690">690</span>
-<span id="691">691</span>
-<span id="692">692</span>
-<span id="693">693</span>
-<span id="694">694</span>
-<span id="695">695</span>
-<span id="696">696</span>
-<span id="697">697</span>
-<span id="698">698</span>
-<span id="699">699</span>
-<span id="700">700</span>
-<span id="701">701</span>
-<span id="702">702</span>
-<span id="703">703</span>
-<span id="704">704</span>
-<span id="705">705</span>
-<span id="706">706</span>
-<span id="707">707</span>
-<span id="708">708</span>
-<span id="709">709</span>
-<span id="710">710</span>
-<span id="711">711</span>
-<span id="712">712</span>
-<span id="713">713</span>
-<span id="714">714</span>
-<span id="715">715</span>
-<span id="716">716</span>
-<span id="717">717</span>
-<span id="718">718</span>
-<span id="719">719</span>
-<span id="720">720</span>
-<span id="721">721</span>
-<span id="722">722</span>
-<span id="723">723</span>
-<span id="724">724</span>
-<span id="725">725</span>
-<span id="726">726</span>
-<span id="727">727</span>
-<span id="728">728</span>
-<span id="729">729</span>
-<span id="730">730</span>
-<span id="731">731</span>
-<span id="732">732</span>
-<span id="733">733</span>
-<span id="734">734</span>
-<span id="735">735</span>
-<span id="736">736</span>
-<span id="737">737</span>
-<span id="738">738</span>
-<span id="739">739</span>
-<span id="740">740</span>
-<span id="741">741</span>
-<span id="742">742</span>
-<span id="743">743</span>
-<span id="744">744</span>
-<span id="745">745</span>
-<span id="746">746</span>
-<span id="747">747</span>
-<span id="748">748</span>
-<span id="749">749</span>
-<span id="750">750</span>
-<span id="751">751</span>
-<span id="752">752</span>
-<span id="753">753</span>
-<span id="754">754</span>
-<span id="755">755</span>
-<span id="756">756</span>
-<span id="757">757</span>
-<span id="758">758</span>
-<span id="759">759</span>
-<span id="760">760</span>
-<span id="761">761</span>
-<span id="762">762</span>
-<span id="763">763</span>
-<span id="764">764</span>
-<span id="765">765</span>
-<span id="766">766</span>
-<span id="767">767</span>
-<span id="768">768</span>
-<span id="769">769</span>
-<span id="770">770</span>
-<span id="771">771</span>
-<span id="772">772</span>
-<span id="773">773</span>
-<span id="774">774</span>
-<span id="775">775</span>
-<span id="776">776</span>
-<span id="777">777</span>
-<span id="778">778</span>
-<span id="779">779</span>
-<span id="780">780</span>
-<span id="781">781</span>
-<span id="782">782</span>
-<span id="783">783</span>
-<span id="784">784</span>
-<span id="785">785</span>
-<span id="786">786</span>
-<span id="787">787</span>
-<span id="788">788</span>
-<span id="789">789</span>
-<span id="790">790</span>
-<span id="791">791</span>
-<span id="792">792</span>
-<span id="793">793</span>
-<span id="794">794</span>
-<span id="795">795</span>
-<span id="796">796</span>
-<span id="797">797</span>
-<span id="798">798</span>
-<span id="799">799</span>
-<span id="800">800</span>
-<span id="801">801</span>
-<span id="802">802</span>
-<span id="803">803</span>
-<span id="804">804</span>
-<span id="805">805</span>
-<span id="806">806</span>
-<span id="807">807</span>
-<span id="808">808</span>
-<span id="809">809</span>
-<span id="810">810</span>
-<span id="811">811</span>
-<span id="812">812</span>
-<span id="813">813</span>
-<span id="814">814</span>
-<span id="815">815</span>
-<span id="816">816</span>
-<span id="817">817</span>
-<span id="818">818</span>
-<span id="819">819</span>
-<span id="820">820</span>
-<span id="821">821</span>
-<span id="822">822</span>
-<span id="823">823</span>
-<span id="824">824</span>
-<span id="825">825</span>
-<span id="826">826</span>
-<span id="827">827</span>
-<span id="828">828</span>
-<span id="829">829</span>
-<span id="830">830</span>
-<span id="831">831</span>
-<span id="832">832</span>
-<span id="833">833</span>
-<span id="834">834</span>
-<span id="835">835</span>
-<span id="836">836</span>
-<span id="837">837</span>
-<span id="838">838</span>
-<span id="839">839</span>
-<span id="840">840</span>
-<span id="841">841</span>
-<span id="842">842</span>
-<span id="843">843</span>
-<span id="844">844</span>
-<span id="845">845</span>
-<span id="846">846</span>
-<span id="847">847</span>
-<span id="848">848</span>
-<span id="849">849</span>
-<span id="850">850</span>
-<span id="851">851</span>
-<span id="852">852</span>
-<span id="853">853</span>
-<span id="854">854</span>
-<span id="855">855</span>
-<span id="856">856</span>
-<span id="857">857</span>
-<span id="858">858</span>
-<span id="859">859</span>
-<span id="860">860</span>
-<span id="861">861</span>
-<span id="862">862</span>
-<span id="863">863</span>
-<span id="864">864</span>
-<span id="865">865</span>
-<span id="866">866</span>
-<span id="867">867</span>
-<span id="868">868</span>
-<span id="869">869</span>
-<span id="870">870</span>
-<span id="871">871</span>
-<span id="872">872</span>
-<span id="873">873</span>
-<span id="874">874</span>
-<span id="875">875</span>
-<span id="876">876</span>
-<span id="877">877</span>
-<span id="878">878</span>
-<span id="879">879</span>
-<span id="880">880</span>
-<span id="881">881</span>
-<span id="882">882</span>
-<span id="883">883</span>
-<span id="884">884</span>
-<span id="885">885</span>
-<span id="886">886</span>
-<span id="887">887</span>
-<span id="888">888</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Descriptors</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module contains generic utilities to work with descriptors, plus some re-exported types</span>
-<span class="doccomment">//! from [`miniscript`].</span>
-
-<span class="kw">use</span> <span class="ident">std::collections::BTreeMap</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>::{<span class="ident">ChildNumber</span>, <span class="ident">DerivationPath</span>, <span class="ident">ExtendedPubKey</span>, <span class="ident">Fingerprint</span>, <span class="ident">KeySource</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::util</span>::{<span class="ident">psbt</span>, <span class="ident">taproot</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">secp256k1</span>, <span class="ident">PublicKey</span>, <span class="ident">XOnlyPublicKey</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Network</span>, <span class="ident">TxOut</span>};
-
-<span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{
- <span class="ident">DefiniteDescriptorKey</span>, <span class="ident">DescriptorSecretKey</span>, <span class="ident">DescriptorType</span>, <span class="ident">InnerXKey</span>, <span class="ident">SinglePubKey</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Descriptors
+//!
+//! This module contains generic utilities to work with descriptors, plus some re-exported types
+//! from [`miniscript`].
+
+</span><span class="kw">use </span>std::collections::BTreeMap;
+
+<span class="kw">use </span>bitcoin::util::bip32::{ChildNumber, DerivationPath, ExtendedPubKey, Fingerprint, KeySource};
+<span class="kw">use </span>bitcoin::util::{psbt, taproot};
+<span class="kw">use </span>bitcoin::{secp256k1, PublicKey, XOnlyPublicKey};
+<span class="kw">use </span>bitcoin::{Network, TxOut};
+
+<span class="kw">use </span>miniscript::descriptor::{
+ DefiniteDescriptorKey, DescriptorSecretKey, DescriptorType, InnerXKey, SinglePubKey,
};
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">miniscript</span>::{
- <span class="ident">descriptor::DescriptorXKey</span>, <span class="ident">descriptor::KeyMap</span>, <span class="ident">descriptor::Wildcard</span>, <span class="ident">Descriptor</span>,
- <span class="ident">DescriptorPublicKey</span>, <span class="ident">Legacy</span>, <span class="ident">Miniscript</span>, <span class="ident">ScriptContext</span>, <span class="ident">Segwitv0</span>,
+<span class="kw">pub use </span>miniscript::{
+ descriptor::DescriptorXKey, descriptor::KeyMap, descriptor::Wildcard, Descriptor,
+ DescriptorPublicKey, Legacy, Miniscript, ScriptContext, Segwitv0,
};
-<span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">ForEachKey</span>, <span class="ident">MiniscriptKey</span>, <span class="ident">TranslatePk</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::policy::BuildSatisfaction</span>;
-
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">checksum</span>;
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">dsl</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">error</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">policy</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">template</span>;
-
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::checksum::calc_checksum</span>;
-<span class="kw">use</span> <span class="ident"><span class="self">self</span>::checksum::calc_checksum_bytes</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::error::Error</span> <span class="kw">as</span> <span class="ident">DescriptorError</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="self">self</span>::policy::Policy</span>;
-<span class="kw">use</span> <span class="ident"><span class="self">self</span>::template::DescriptorTemplateOut</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">IntoDescriptorKey</span>, <span class="ident">KeyError</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::signer::SignersContainer</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::utils::SecpCtx</span>;
-
-<span class="doccomment">/// Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">ExtendedDescriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>;
-
-<span class="doccomment">/// Alias for a [`Descriptor`] that contains extended **derived** keys</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">DerivedDescriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DefiniteDescriptorKey</span><span class="op">></span>;
-
-<span class="doccomment">/// Alias for the type of maps that represent derivation paths in a [`psbt::Input`] or</span>
-<span class="doccomment">/// [`psbt::Output`]</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`psbt::Input`]: bitcoin::util::psbt::Input</span>
-<span class="doccomment">/// [`psbt::Output`]: bitcoin::util::psbt::Output</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">HdKeyPaths</span> <span class="op">=</span> <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">secp256k1::PublicKey</span>, <span class="ident">KeySource</span><span class="op">></span>;
-
-<span class="doccomment">/// Alias for the type of maps that represent taproot key origins in a [`psbt::Input`] or</span>
-<span class="doccomment">/// [`psbt::Output`]</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`psbt::Input`]: bitcoin::util::psbt::Input</span>
-<span class="doccomment">/// [`psbt::Output`]: bitcoin::util::psbt::Output</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">TapKeyOrigins</span> <span class="op">=</span> <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">bitcoin::XOnlyPublicKey</span>, (<span class="ident">Vec</span><span class="op"><</span><span class="ident">taproot::TapLeafHash</span><span class="op">></span>, <span class="ident">KeySource</span>)<span class="op">></span>;
-
-<span class="doccomment">/// Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">IntoWalletDescriptor</span> {
- <span class="doccomment">/// Convert to wallet descriptor</span>
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="kw">use </span>miniscript::{ForEachKey, MiniscriptKey, TranslatePk};
+
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::policy::BuildSatisfaction;
+
+<span class="kw">pub mod </span>checksum;
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub mod </span>dsl;
+<span class="kw">pub mod </span>error;
+<span class="kw">pub mod </span>policy;
+<span class="kw">pub mod </span>template;
+
+<span class="kw">pub use </span><span class="self">self</span>::checksum::calc_checksum;
+<span class="kw">use </span><span class="self">self</span>::checksum::calc_checksum_bytes;
+<span class="kw">pub use </span><span class="self">self</span>::error::Error <span class="kw">as </span>DescriptorError;
+<span class="kw">pub use </span><span class="self">self</span>::policy::Policy;
+<span class="kw">use </span><span class="self">self</span>::template::DescriptorTemplateOut;
+<span class="kw">use </span><span class="kw">crate</span>::keys::{IntoDescriptorKey, KeyError};
+<span class="kw">use </span><span class="kw">crate</span>::wallet::signer::SignersContainer;
+<span class="kw">use </span><span class="kw">crate</span>::wallet::utils::SecpCtx;
+
+<span class="doccomment">/// Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]
+</span><span class="kw">pub type </span>ExtendedDescriptor = Descriptor<DescriptorPublicKey>;
+
+<span class="doccomment">/// Alias for a [`Descriptor`] that contains extended **derived** keys
+</span><span class="kw">pub type </span>DerivedDescriptor = Descriptor<DefiniteDescriptorKey>;
+
+<span class="doccomment">/// Alias for the type of maps that represent derivation paths in a [`psbt::Input`] or
+/// [`psbt::Output`]
+///
+/// [`psbt::Input`]: bitcoin::util::psbt::Input
+/// [`psbt::Output`]: bitcoin::util::psbt::Output
+</span><span class="kw">pub type </span>HdKeyPaths = BTreeMap<secp256k1::PublicKey, KeySource>;
+
+<span class="doccomment">/// Alias for the type of maps that represent taproot key origins in a [`psbt::Input`] or
+/// [`psbt::Output`]
+///
+/// [`psbt::Input`]: bitcoin::util::psbt::Input
+/// [`psbt::Output`]: bitcoin::util::psbt::Output
+</span><span class="kw">pub type </span>TapKeyOrigins = BTreeMap<bitcoin::XOnlyPublicKey, (Vec<taproot::TapLeafHash>, KeySource)>;
+
+<span class="doccomment">/// Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]
+</span><span class="kw">pub trait </span>IntoWalletDescriptor {
+ <span class="doccomment">/// Convert to wallet descriptor
+ </span><span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span>;
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError>;
}
-<span class="kw">impl</span> <span class="ident">IntoWalletDescriptor</span> <span class="kw">for</span> <span class="kw-2">&</span><span class="ident">str</span> {
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="kw">impl </span>IntoWalletDescriptor <span class="kw">for </span><span class="kw-2">&</span>str {
+ <span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">split_once</span>(<span class="string">'#'</span>) {
- <span class="prelude-val">Some</span>((<span class="ident">desc</span>, <span class="ident">original_checksum</span>)) => {
- <span class="kw">let</span> <span class="ident">checksum</span> <span class="op">=</span> <span class="ident">calc_checksum_bytes</span>(<span class="ident">desc</span>)<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">original_checksum</span>.<span class="ident">as_bytes</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">checksum</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">DescriptorError::InvalidDescriptorChecksum</span>);
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ <span class="kw">let </span>descriptor = <span class="kw">match </span><span class="self">self</span>.split_once(<span class="string">'#'</span>) {
+ <span class="prelude-val">Some</span>((desc, original_checksum)) => {
+ <span class="kw">let </span>checksum = calc_checksum_bytes(desc)<span class="question-mark">?</span>;
+ <span class="kw">if </span>original_checksum.as_bytes() != checksum {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(DescriptorError::InvalidDescriptorChecksum);
}
- <span class="ident">desc</span>
+ desc
}
- <span class="prelude-val">None</span> => <span class="self">self</span>,
+ <span class="prelude-val">None </span>=> <span class="self">self</span>,
};
- <span class="ident">ExtendedDescriptor::parse_descriptor</span>(<span class="ident">secp</span>, <span class="ident">descriptor</span>)<span class="question-mark">?</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)
+ ExtendedDescriptor::parse_descriptor(secp, descriptor)<span class="question-mark">?
+ </span>.into_wallet_descriptor(secp, network)
}
}
-<span class="kw">impl</span> <span class="ident">IntoWalletDescriptor</span> <span class="kw">for</span> <span class="kw-2">&</span><span class="ident">String</span> {
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="kw">impl </span>IntoWalletDescriptor <span class="kw">for </span><span class="kw-2">&</span>String {
+ <span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">as_str</span>().<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ <span class="self">self</span>.as_str().into_wallet_descriptor(secp, network)
}
}
-<span class="kw">impl</span> <span class="ident">IntoWalletDescriptor</span> <span class="kw">for</span> <span class="ident">ExtendedDescriptor</span> {
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="kw">impl </span>IntoWalletDescriptor <span class="kw">for </span>ExtendedDescriptor {
+ <span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- (<span class="self">self</span>, <span class="ident">KeyMap::default</span>()).<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ (<span class="self">self</span>, KeyMap::default()).into_wallet_descriptor(secp, network)
}
}
-<span class="kw">impl</span> <span class="ident">IntoWalletDescriptor</span> <span class="kw">for</span> (<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>) {
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="kw">impl </span>IntoWalletDescriptor <span class="kw">for </span>(ExtendedDescriptor, KeyMap) {
+ <span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys::DescriptorKey</span>;
-
- <span class="kw">struct</span> <span class="ident">Translator</span><span class="op"><</span><span class="lifetime">'s</span>, <span class="lifetime">'d</span><span class="op">></span> {
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- <span class="ident">descriptor</span>: <span class="kw-2">&</span><span class="lifetime">'d</span> <span class="ident">ExtendedDescriptor</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ <span class="kw">use </span><span class="kw">crate</span>::keys::DescriptorKey;
+
+ <span class="kw">struct </span>Translator<<span class="lifetime">'s</span>, <span class="lifetime">'d</span>> {
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ descriptor: <span class="kw-2">&</span><span class="lifetime">'d </span>ExtendedDescriptor,
+ network: Network,
}
- <span class="kw">impl</span><span class="op"><</span><span class="lifetime">'s</span>, <span class="lifetime">'d</span><span class="op">></span>
- <span class="ident">miniscript::Translator</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">miniscript::DummyKey</span>, <span class="ident">DescriptorError</span><span class="op">></span>
- <span class="kw">for</span> <span class="ident">Translator</span><span class="op"><</span><span class="lifetime">'s</span>, <span class="lifetime">'d</span><span class="op">></span>
+ <span class="kw">impl</span><<span class="lifetime">'s</span>, <span class="lifetime">'d</span>>
+ miniscript::Translator<DescriptorPublicKey, miniscript::DummyKey, DescriptorError>
+ <span class="kw">for </span>Translator<<span class="lifetime">'s</span>, <span class="lifetime">'d</span>>
{
- <span class="kw">fn</span> <span class="ident">pk</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">pk</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">miniscript::DummyKey</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>;
-
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="kw">_</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">is_taproot</span>() {
- <span class="kw">let</span> <span class="ident">descriptor_key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">miniscript::Tap</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">pk</span>.<span class="ident">clone</span>().<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>;
- <span class="ident">descriptor_key</span>.<span class="ident">extract</span>(<span class="ident">secp</span>)<span class="question-mark">?</span>
- } <span class="kw">else</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">is_witness</span>() {
- <span class="kw">let</span> <span class="ident">descriptor_key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">pk</span>.<span class="ident">clone</span>().<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>;
- <span class="ident">descriptor_key</span>.<span class="ident">extract</span>(<span class="ident">secp</span>)<span class="question-mark">?</span>
- } <span class="kw">else</span> {
- <span class="kw">let</span> <span class="ident">descriptor_key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">miniscript::Legacy</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">pk</span>.<span class="ident">clone</span>().<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>;
- <span class="ident">descriptor_key</span>.<span class="ident">extract</span>(<span class="ident">secp</span>)<span class="question-mark">?</span>
- };
-
- <span class="kw">if</span> <span class="ident">networks</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">network</span>) {
- <span class="prelude-val">Ok</span>(<span class="ident">miniscript::DummyKey</span>)
- } <span class="kw">else</span> {
- <span class="prelude-val">Err</span>(<span class="ident">DescriptorError::Key</span>(<span class="ident">KeyError::InvalidNetwork</span>))
+ <span class="kw">fn </span>pk(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ pk: <span class="kw-2">&</span>DescriptorPublicKey,
+ ) -> <span class="prelude-ty">Result</span><miniscript::DummyKey, DescriptorError> {
+ <span class="kw">let </span>secp = <span class="kw-2">&</span><span class="self">self</span>.secp;
+
+ <span class="kw">let </span>(<span class="kw">_</span>, <span class="kw">_</span>, networks) = <span class="kw">if </span><span class="self">self</span>.descriptor.is_taproot() {
+ <span class="kw">let </span>descriptor_key: DescriptorKey<miniscript::Tap> =
+ pk.clone().into_descriptor_key()<span class="question-mark">?</span>;
+ descriptor_key.extract(secp)<span class="question-mark">?
+ </span>} <span class="kw">else if </span><span class="self">self</span>.descriptor.is_witness() {
+ <span class="kw">let </span>descriptor_key: DescriptorKey<miniscript::Segwitv0> =
+ pk.clone().into_descriptor_key()<span class="question-mark">?</span>;
+ descriptor_key.extract(secp)<span class="question-mark">?
+ </span>} <span class="kw">else </span>{
+ <span class="kw">let </span>descriptor_key: DescriptorKey<miniscript::Legacy> =
+ pk.clone().into_descriptor_key()<span class="question-mark">?</span>;
+ descriptor_key.extract(secp)<span class="question-mark">?
+ </span>};
+
+ <span class="kw">if </span>networks.contains(<span class="kw-2">&</span><span class="self">self</span>.network) {
+ <span class="prelude-val">Ok</span>(miniscript::DummyKey)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(DescriptorError::Key(KeyError::InvalidNetwork))
}
}
- <span class="kw">fn</span> <span class="ident">sha256</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">_sha256</span>: <span class="kw-2">&</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span> <span class="kw">as</span> <span class="ident">MiniscriptKey</span><span class="op">></span><span class="ident">::Sha256</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">miniscript::DummySha256Hash</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Default::default</span>())
+ <span class="kw">fn </span>sha256(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ _sha256: <span class="kw-2">&</span><DescriptorPublicKey <span class="kw">as </span>MiniscriptKey>::Sha256,
+ ) -> <span class="prelude-ty">Result</span><miniscript::DummySha256Hash, DescriptorError> {
+ <span class="prelude-val">Ok</span>(Default::default())
}
- <span class="kw">fn</span> <span class="ident">hash256</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">_hash256</span>: <span class="kw-2">&</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span> <span class="kw">as</span> <span class="ident">MiniscriptKey</span><span class="op">></span><span class="ident">::Hash256</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">miniscript::DummyHash256Hash</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Default::default</span>())
+ <span class="kw">fn </span>hash256(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ _hash256: <span class="kw-2">&</span><DescriptorPublicKey <span class="kw">as </span>MiniscriptKey>::Hash256,
+ ) -> <span class="prelude-ty">Result</span><miniscript::DummyHash256Hash, DescriptorError> {
+ <span class="prelude-val">Ok</span>(Default::default())
}
- <span class="kw">fn</span> <span class="ident">ripemd160</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">_ripemd160</span>: <span class="kw-2">&</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span> <span class="kw">as</span> <span class="ident">MiniscriptKey</span><span class="op">></span><span class="ident">::Ripemd160</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">miniscript::DummyRipemd160Hash</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Default::default</span>())
+ <span class="kw">fn </span>ripemd160(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ _ripemd160: <span class="kw-2">&</span><DescriptorPublicKey <span class="kw">as </span>MiniscriptKey>::Ripemd160,
+ ) -> <span class="prelude-ty">Result</span><miniscript::DummyRipemd160Hash, DescriptorError> {
+ <span class="prelude-val">Ok</span>(Default::default())
}
- <span class="kw">fn</span> <span class="ident">hash160</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">_hash160</span>: <span class="kw-2">&</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span> <span class="kw">as</span> <span class="ident">MiniscriptKey</span><span class="op">></span><span class="ident">::Hash160</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">miniscript::DummyHash160Hash</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Default::default</span>())
+ <span class="kw">fn </span>hash160(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ _hash160: <span class="kw-2">&</span><DescriptorPublicKey <span class="kw">as </span>MiniscriptKey>::Hash160,
+ ) -> <span class="prelude-ty">Result</span><miniscript::DummyHash160Hash, DescriptorError> {
+ <span class="prelude-val">Ok</span>(Default::default())
}
}
- <span class="comment">// check the network for the keys</span>
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">translate_pk</span>(<span class="kw-2">&mut</span> <span class="ident">Translator</span> {
- <span class="ident">secp</span>,
- <span class="ident">network</span>,
- <span class="ident">descriptor</span>: <span class="kw-2">&</span><span class="self">self</span>.<span class="number">0</span>,
+ <span class="comment">// check the network for the keys
+ </span><span class="self">self</span>.<span class="number">0</span>.translate_pk(<span class="kw-2">&mut </span>Translator {
+ secp,
+ network,
+ descriptor: <span class="kw-2">&</span><span class="self">self</span>.<span class="number">0</span>,
})<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">IntoWalletDescriptor</span> <span class="kw">for</span> <span class="ident">DescriptorTemplateOut</span> {
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="kw">impl </span>IntoWalletDescriptor <span class="kw">for </span>DescriptorTemplateOut {
+ <span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">struct</span> <span class="ident">Translator</span> {
- <span class="ident">network</span>: <span class="ident">Network</span>,
+ _secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ <span class="kw">struct </span>Translator {
+ network: Network,
}
- <span class="kw">impl</span> <span class="ident">miniscript::Translator</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">DescriptorPublicKey</span>, <span class="ident">DescriptorError</span><span class="op">></span>
- <span class="kw">for</span> <span class="ident">Translator</span>
+ <span class="kw">impl </span>miniscript::Translator<DescriptorPublicKey, DescriptorPublicKey, DescriptorError>
+ <span class="kw">for </span>Translator
{
- <span class="kw">fn</span> <span class="ident">pk</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">pk</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="comment">// workaround for xpubs generated by other key types, like bip39: since when the</span>
- <span class="comment">// conversion is made one network has to be chosen, what we generally choose</span>
- <span class="comment">// "mainnet", but then override the set of valid networks to specify that all of</span>
- <span class="comment">// them are valid. here we reset the network to make sure the wallet struct gets a</span>
- <span class="comment">// descriptor with the right network everywhere.</span>
- <span class="kw">let</span> <span class="ident">pk</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">pk</span> {
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="kw-2">ref</span> <span class="ident">xpub</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">xpub</span> <span class="op">=</span> <span class="ident">xpub</span>.<span class="ident">clone</span>();
- <span class="ident">xpub</span>.<span class="ident">xkey</span>.<span class="ident">network</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">network</span>;
-
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>)
+ <span class="kw">fn </span>pk(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ pk: <span class="kw-2">&</span>DescriptorPublicKey,
+ ) -> <span class="prelude-ty">Result</span><DescriptorPublicKey, DescriptorError> {
+ <span class="comment">// workaround for xpubs generated by other key types, like bip39: since when the
+ // conversion is made one network has to be chosen, what we generally choose
+ // "mainnet", but then override the set of valid networks to specify that all of
+ // them are valid. here we reset the network to make sure the wallet struct gets a
+ // descriptor with the right network everywhere.
+ </span><span class="kw">let </span>pk = <span class="kw">match </span>pk {
+ DescriptorPublicKey::XPub(<span class="kw-2">ref </span>xpub) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>xpub = xpub.clone();
+ xpub.xkey.network = <span class="self">self</span>.network;
+
+ DescriptorPublicKey::XPub(xpub)
}
- <span class="ident">other</span> => <span class="ident">other</span>.<span class="ident">clone</span>(),
+ other => other.clone(),
};
- <span class="prelude-val">Ok</span>(<span class="ident">pk</span>)
+ <span class="prelude-val">Ok</span>(pk)
}
<span class="macro">miniscript::translate_hash_clone!</span>(
- <span class="ident">DescriptorPublicKey</span>,
- <span class="ident">DescriptorPublicKey</span>,
- <span class="ident">DescriptorError</span>
+ DescriptorPublicKey,
+ DescriptorPublicKey,
+ DescriptorError
);
}
- <span class="kw">let</span> (<span class="ident">desc</span>, <span class="ident">keymap</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="self">self</span>;
+ <span class="kw">let </span>(desc, keymap, networks) = <span class="self">self</span>;
- <span class="kw">if</span> <span class="op">!</span><span class="ident">networks</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">network</span>) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">DescriptorError::Key</span>(<span class="ident">KeyError::InvalidNetwork</span>));
+ <span class="kw">if </span>!networks.contains(<span class="kw-2">&</span>network) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(DescriptorError::Key(KeyError::InvalidNetwork));
}
- <span class="comment">// fixup the network for keys that need it in the descriptor</span>
- <span class="kw">let</span> <span class="ident">translated</span> <span class="op">=</span> <span class="ident">desc</span>.<span class="ident">translate_pk</span>(<span class="kw-2">&mut</span> <span class="ident">Translator</span> { <span class="ident">network</span> })<span class="question-mark">?</span>;
- <span class="comment">// ...and in the key map</span>
- <span class="kw">let</span> <span class="ident">fixed_keymap</span> <span class="op">=</span> <span class="ident">keymap</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw-2">mut</span> <span class="ident">k</span>, <span class="kw-2">mut</span> <span class="ident">v</span>)<span class="op">|</span> {
- <span class="kw">match</span> (<span class="kw-2">&mut</span> <span class="ident">k</span>, <span class="kw-2">&mut</span> <span class="ident">v</span>) {
- (<span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>), <span class="ident">DescriptorSecretKey::XPrv</span>(<span class="ident">xprv</span>)) => {
- <span class="ident">xpub</span>.<span class="ident">xkey</span>.<span class="ident">network</span> <span class="op">=</span> <span class="ident">network</span>;
- <span class="ident">xprv</span>.<span class="ident">xkey</span>.<span class="ident">network</span> <span class="op">=</span> <span class="ident">network</span>;
+ <span class="comment">// fixup the network for keys that need it in the descriptor
+ </span><span class="kw">let </span>translated = desc.translate_pk(<span class="kw-2">&mut </span>Translator { network })<span class="question-mark">?</span>;
+ <span class="comment">// ...and in the key map
+ </span><span class="kw">let </span>fixed_keymap = keymap
+ .into_iter()
+ .map(|(<span class="kw-2">mut </span>k, <span class="kw-2">mut </span>v)| {
+ <span class="kw">match </span>(<span class="kw-2">&mut </span>k, <span class="kw-2">&mut </span>v) {
+ (DescriptorPublicKey::XPub(xpub), DescriptorSecretKey::XPrv(xprv)) => {
+ xpub.xkey.network = network;
+ xprv.xkey.network = network;
}
- (<span class="kw">_</span>, <span class="ident">DescriptorSecretKey::Single</span>(<span class="ident">key</span>)) => {
- <span class="ident">key</span>.<span class="ident">key</span>.<span class="ident">network</span> <span class="op">=</span> <span class="ident">network</span>;
+ (<span class="kw">_</span>, DescriptorSecretKey::Single(key)) => {
+ key.key.network = network;
}
- <span class="kw">_</span> => {}
+ <span class="kw">_ </span>=> {}
}
- (<span class="ident">k</span>, <span class="ident">v</span>)
+ (k, v)
})
- .<span class="ident">collect</span>();
+ .collect();
- <span class="prelude-val">Ok</span>((<span class="ident">translated</span>, <span class="ident">fixed_keymap</span>))
+ <span class="prelude-val">Ok</span>((translated, fixed_keymap))
}
}
-<span class="doccomment">/// Wrapper for `IntoWalletDescriptor` that performs additional checks on the keys contained in the</span>
-<span class="doccomment">/// descriptor</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">into_wallet_descriptor_checked</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">IntoWalletDescriptor</span><span class="op">></span>(
- <span class="ident">inner</span>: <span class="ident">T</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)<span class="question-mark">?</span>;
-
- <span class="comment">// Ensure the keys don't contain any hardened derivation steps or hardened wildcards</span>
- <span class="kw">let</span> <span class="ident">descriptor_contains_hardened_steps</span> <span class="op">=</span> <span class="ident">descriptor</span>.<span class="ident">for_any_key</span>(<span class="op">|</span><span class="ident">k</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">DescriptorXKey</span> {
- <span class="ident">derivation_path</span>,
- <span class="ident">wildcard</span>,
+<span class="doccomment">/// Wrapper for `IntoWalletDescriptor` that performs additional checks on the keys contained in the
+/// descriptor
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>into_wallet_descriptor_checked<T: IntoWalletDescriptor>(
+ inner: T,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ <span class="kw">let </span>(descriptor, keymap) = inner.into_wallet_descriptor(secp, network)<span class="question-mark">?</span>;
+
+ <span class="comment">// Ensure the keys don't contain any hardened derivation steps or hardened wildcards
+ </span><span class="kw">let </span>descriptor_contains_hardened_steps = descriptor.for_any_key(|k| {
+ <span class="kw">if let </span>DescriptorPublicKey::XPub(DescriptorXKey {
+ derivation_path,
+ wildcard,
..
- }) <span class="op">=</span> <span class="ident">k</span>
+ }) = k
{
- <span class="kw">return</span> <span class="kw-2">*</span><span class="ident">wildcard</span> <span class="op">==</span> <span class="ident">Wildcard::Hardened</span>
- <span class="op">|</span><span class="op">|</span> <span class="ident">derivation_path</span>.<span class="ident">into_iter</span>().<span class="ident">any</span>(<span class="ident">ChildNumber::is_hardened</span>);
+ <span class="kw">return </span><span class="kw-2">*</span>wildcard == Wildcard::Hardened
+ || derivation_path.into_iter().any(ChildNumber::is_hardened);
}
- <span class="bool-val">false</span>
- });
- <span class="kw">if</span> <span class="ident">descriptor_contains_hardened_steps</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">DescriptorError::HardenedDerivationXpub</span>);
+ <span class="bool-val">false
+ </span>});
+ <span class="kw">if </span>descriptor_contains_hardened_steps {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(DescriptorError::HardenedDerivationXpub);
}
- <span class="comment">// Run miniscript's sanity check, which will look for duplicated keys and other potential</span>
- <span class="comment">// issues</span>
- <span class="ident">descriptor</span>.<span class="ident">sanity_check</span>()<span class="question-mark">?</span>;
+ <span class="comment">// Run miniscript's sanity check, which will look for duplicated keys and other potential
+ // issues
+ </span>descriptor.sanity_check()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">descriptor</span>, <span class="ident">keymap</span>))
+ <span class="prelude-val">Ok</span>((descriptor, keymap))
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="doccomment">/// Used internally mainly by the `descriptor!()` and `fragment!()` macros</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CheckMiniscript</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">miniscript::ScriptContext</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">check_miniscript</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">miniscript::Error</span><span class="op">></span>;
+<span class="attr">#[doc(hidden)]
+</span><span class="doccomment">/// Used internally mainly by the `descriptor!()` and `fragment!()` macros
+</span><span class="kw">pub trait </span>CheckMiniscript<Ctx: miniscript::ScriptContext> {
+ <span class="kw">fn </span>check_miniscript(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><(), miniscript::Error>;
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">miniscript::ScriptContext</span>, <span class="ident">Pk</span>: <span class="ident">miniscript::MiniscriptKey</span><span class="op">></span> <span class="ident">CheckMiniscript</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>
- <span class="kw">for</span> <span class="ident">miniscript::Miniscript</span><span class="op"><</span><span class="ident">Pk</span>, <span class="ident">Ctx</span><span class="op">></span>
+<span class="kw">impl</span><Ctx: miniscript::ScriptContext, Pk: miniscript::MiniscriptKey> CheckMiniscript<Ctx>
+ <span class="kw">for </span>miniscript::Miniscript<Pk, Ctx>
{
- <span class="kw">fn</span> <span class="ident">check_miniscript</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">miniscript::Error</span><span class="op">></span> {
- <span class="ident">Ctx::check_global_validity</span>(<span class="self">self</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>check_miniscript(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><(), miniscript::Error> {
+ Ctx::check_global_validity(<span class="self">self</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
}
-<span class="doccomment">/// Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">ExtractPolicy</span> {
- <span class="doccomment">/// Extract the spending [`policy`]</span>
- <span class="kw">fn</span> <span class="ident">extract_policy</span>(
+<span class="doccomment">/// Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]
+</span><span class="kw">pub trait </span>ExtractPolicy {
+ <span class="doccomment">/// Extract the spending [`policy`]
+ </span><span class="kw">fn </span>extract_policy(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">psbt</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">DescriptorError</span><span class="op">></span>;
+ signers: <span class="kw-2">&</span>SignersContainer,
+ psbt: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, DescriptorError>;
}
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait</span> <span class="ident">XKeyUtils</span> {
- <span class="kw">fn</span> <span class="ident">root_fingerprint</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">Fingerprint</span>;
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait </span>XKeyUtils {
+ <span class="kw">fn </span>root_fingerprint(<span class="kw-2">&</span><span class="self">self</span>, secp: <span class="kw-2">&</span>SecpCtx) -> Fingerprint;
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span><span class="op">></span> <span class="ident">XKeyUtils</span> <span class="kw">for</span> <span class="ident">DescriptorXKey</span><span class="op"><</span><span class="ident">T</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">T</span>: <span class="ident">InnerXKey</span>,
+<span class="kw">impl</span><T> XKeyUtils <span class="kw">for </span>DescriptorXKey<T>
+<span class="kw">where
+ </span>T: InnerXKey,
{
- <span class="kw">fn</span> <span class="ident">root_fingerprint</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">Fingerprint</span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">origin</span> {
- <span class="prelude-val">Some</span>((<span class="ident">fingerprint</span>, <span class="kw">_</span>)) => <span class="ident">fingerprint</span>,
- <span class="prelude-val">None</span> => <span class="self">self</span>.<span class="ident">xkey</span>.<span class="ident">xkey_fingerprint</span>(<span class="ident">secp</span>),
+ <span class="kw">fn </span>root_fingerprint(<span class="kw-2">&</span><span class="self">self</span>, secp: <span class="kw-2">&</span>SecpCtx) -> Fingerprint {
+ <span class="kw">match </span><span class="self">self</span>.origin {
+ <span class="prelude-val">Some</span>((fingerprint, <span class="kw">_</span>)) => fingerprint,
+ <span class="prelude-val">None </span>=> <span class="self">self</span>.xkey.xkey_fingerprint(secp),
}
}
}
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait</span> <span class="ident">DescriptorMeta</span> {
- <span class="kw">fn</span> <span class="ident">is_witness</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span>;
- <span class="kw">fn</span> <span class="ident">is_taproot</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span>;
- <span class="kw">fn</span> <span class="ident">get_extended_keys</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">DescriptorXKey</span><span class="op"><</span><span class="ident">ExtendedPubKey</span><span class="op">></span><span class="op">></span>, <span class="ident">DescriptorError</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">derive_from_hd_keypaths</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait </span>DescriptorMeta {
+ <span class="kw">fn </span>is_witness(<span class="kw-2">&</span><span class="self">self</span>) -> bool;
+ <span class="kw">fn </span>is_taproot(<span class="kw-2">&</span><span class="self">self</span>) -> bool;
+ <span class="kw">fn </span>get_extended_keys(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<DescriptorXKey<ExtendedPubKey>>, DescriptorError>;
+ <span class="kw">fn </span>derive_from_hd_keypaths<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">hd_keypaths</span>: <span class="kw-2">&</span><span class="ident">HdKeyPaths</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">derive_from_tap_key_origins</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ hd_keypaths: <span class="kw-2">&</span>HdKeyPaths,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor>;
+ <span class="kw">fn </span>derive_from_tap_key_origins<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">tap_key_origins</span>: <span class="kw-2">&</span><span class="ident">TapKeyOrigins</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">derive_from_psbt_key_origins</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ tap_key_origins: <span class="kw-2">&</span>TapKeyOrigins,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor>;
+ <span class="kw">fn </span>derive_from_psbt_key_origins<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">key_origins</span>: <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">Fingerprint</span>, (<span class="kw-2">&</span><span class="ident">DerivationPath</span>, <span class="ident">SinglePubKey</span>)<span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span>;
- <span class="kw">fn</span> <span class="ident">derive_from_psbt_input</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ key_origins: BTreeMap<Fingerprint, (<span class="kw-2">&</span>DerivationPath, SinglePubKey)>,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor>;
+ <span class="kw">fn </span>derive_from_psbt_input<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt_input</span>: <span class="kw-2">&</span><span class="ident">psbt::Input</span>,
- <span class="ident">utxo</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span>;
+ psbt_input: <span class="kw-2">&</span>psbt::Input,
+ utxo: <span class="prelude-ty">Option</span><TxOut>,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor>;
}
-<span class="kw">impl</span> <span class="ident">DescriptorMeta</span> <span class="kw">for</span> <span class="ident">ExtendedDescriptor</span> {
- <span class="kw">fn</span> <span class="ident">is_witness</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
+<span class="kw">impl </span>DescriptorMeta <span class="kw">for </span>ExtendedDescriptor {
+ <span class="kw">fn </span>is_witness(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
<span class="macro">matches!</span>(
- <span class="self">self</span>.<span class="ident">desc_type</span>(),
- <span class="ident">DescriptorType::Wpkh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::ShWpkh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::Wsh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::ShWsh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::ShWshSortedMulti</span>
- <span class="op">|</span> <span class="ident">DescriptorType::WshSortedMulti</span>
+ <span class="self">self</span>.desc_type(),
+ DescriptorType::Wpkh
+ | DescriptorType::ShWpkh
+ | DescriptorType::Wsh
+ | DescriptorType::ShWsh
+ | DescriptorType::ShWshSortedMulti
+ | DescriptorType::WshSortedMulti
)
}
- <span class="kw">fn</span> <span class="ident">is_taproot</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span>.<span class="ident">desc_type</span>() <span class="op">==</span> <span class="ident">DescriptorType::Tr</span>
+ <span class="kw">fn </span>is_taproot(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="self">self</span>.desc_type() == DescriptorType::Tr
}
- <span class="kw">fn</span> <span class="ident">get_extended_keys</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">DescriptorXKey</span><span class="op"><</span><span class="ident">ExtendedPubKey</span><span class="op">></span><span class="op">></span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">answer</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
+ <span class="kw">fn </span>get_extended_keys(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<DescriptorXKey<ExtendedPubKey>>, DescriptorError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>answer = Vec::new();
- <span class="self">self</span>.<span class="ident">for_each_key</span>(<span class="op">|</span><span class="ident">pk</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>) <span class="op">=</span> <span class="ident">pk</span> {
- <span class="ident">answer</span>.<span class="ident">push</span>(<span class="ident">xpub</span>.<span class="ident">clone</span>());
+ <span class="self">self</span>.for_each_key(|pk| {
+ <span class="kw">if let </span>DescriptorPublicKey::XPub(xpub) = pk {
+ answer.push(xpub.clone());
}
- <span class="bool-val">true</span>
- });
+ <span class="bool-val">true
+ </span>});
- <span class="prelude-val">Ok</span>(<span class="ident">answer</span>)
+ <span class="prelude-val">Ok</span>(answer)
}
- <span class="kw">fn</span> <span class="ident">derive_from_psbt_key_origins</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ <span class="kw">fn </span>derive_from_psbt_key_origins<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">key_origins</span>: <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">Fingerprint</span>, (<span class="kw-2">&</span><span class="ident">DerivationPath</span>, <span class="ident">SinglePubKey</span>)<span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span> {
- <span class="comment">// Ensure that deriving `xpub` with `path` yields `expected`</span>
- <span class="kw">let</span> <span class="ident">verify_key</span> <span class="op">=</span> <span class="op">|</span><span class="ident">xpub</span>: <span class="kw-2">&</span><span class="ident">DescriptorXKey</span><span class="op"><</span><span class="ident">ExtendedPubKey</span><span class="op">></span>,
- <span class="ident">path</span>: <span class="kw-2">&</span><span class="ident">DerivationPath</span>,
- <span class="ident">expected</span>: <span class="kw-2">&</span><span class="ident">SinglePubKey</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">derived</span> <span class="op">=</span> <span class="ident">xpub</span>
- .<span class="ident">xkey</span>
- .<span class="ident">derive_pub</span>(<span class="ident">secp</span>, <span class="ident">path</span>)
- .<span class="ident">expect</span>(<span class="string">"The path should never contain hardened derivation steps"</span>)
- .<span class="ident">public_key</span>;
-
- <span class="kw">match</span> <span class="ident">expected</span> {
- <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">pk</span>) <span class="kw">if</span> <span class="kw-2">&</span><span class="ident">PublicKey::new</span>(<span class="ident">derived</span>) <span class="op">==</span> <span class="ident">pk</span> => <span class="bool-val">true</span>,
- <span class="ident">SinglePubKey::XOnly</span>(<span class="ident">pk</span>) <span class="kw">if</span> <span class="kw-2">&</span><span class="ident">XOnlyPublicKey::from</span>(<span class="ident">derived</span>) <span class="op">==</span> <span class="ident">pk</span> => <span class="bool-val">true</span>,
- <span class="kw">_</span> => <span class="bool-val">false</span>,
+ key_origins: BTreeMap<Fingerprint, (<span class="kw-2">&</span>DerivationPath, SinglePubKey)>,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor> {
+ <span class="comment">// Ensure that deriving `xpub` with `path` yields `expected`
+ </span><span class="kw">let </span>verify_key = |xpub: <span class="kw-2">&</span>DescriptorXKey<ExtendedPubKey>,
+ path: <span class="kw-2">&</span>DerivationPath,
+ expected: <span class="kw-2">&</span>SinglePubKey| {
+ <span class="kw">let </span>derived = xpub
+ .xkey
+ .derive_pub(secp, path)
+ .expect(<span class="string">"The path should never contain hardened derivation steps"</span>)
+ .public_key;
+
+ <span class="kw">match </span>expected {
+ SinglePubKey::FullKey(pk) <span class="kw">if </span><span class="kw-2">&</span>PublicKey::new(derived) == pk => <span class="bool-val">true</span>,
+ SinglePubKey::XOnly(pk) <span class="kw">if </span><span class="kw-2">&</span>XOnlyPublicKey::from(derived) == pk => <span class="bool-val">true</span>,
+ <span class="kw">_ </span>=> <span class="bool-val">false</span>,
}
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">path_found</span> <span class="op">=</span> <span class="prelude-val">None</span>;
-
- <span class="comment">// using `for_any_key` should make this stop as soon as we return `true`</span>
- <span class="self">self</span>.<span class="ident">for_any_key</span>(<span class="op">|</span><span class="ident">key</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>) <span class="op">=</span> <span class="ident">key</span> {
- <span class="comment">// Check if the key matches one entry in our `key_origins`. If it does, `matches()` will</span>
- <span class="comment">// return the "prefix" that matched, so we remove that prefix from the full path</span>
- <span class="comment">// found in `key_origins` and save it in `derive_path`. We expect this to be a derivation</span>
- <span class="comment">// path of length 1 if the key is `wildcard` and an empty path otherwise.</span>
- <span class="kw">let</span> <span class="ident">root_fingerprint</span> <span class="op">=</span> <span class="ident">xpub</span>.<span class="ident">root_fingerprint</span>(<span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">derive_path</span> <span class="op">=</span> <span class="ident">key_origins</span>
- .<span class="ident">get_key_value</span>(<span class="kw-2">&</span><span class="ident">root_fingerprint</span>)
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">fingerprint</span>, (<span class="ident">path</span>, <span class="ident">expected</span>))<span class="op">|</span> {
- <span class="ident">xpub</span>.<span class="ident">matches</span>(<span class="kw-2">&</span>(<span class="kw-2">*</span><span class="ident">fingerprint</span>, (<span class="kw-2">*</span><span class="ident">path</span>).<span class="ident">clone</span>()), <span class="ident">secp</span>)
- .<span class="ident">zip</span>(<span class="prelude-val">Some</span>((<span class="ident">path</span>, <span class="ident">expected</span>)))
+ <span class="kw">let </span><span class="kw-2">mut </span>path_found = <span class="prelude-val">None</span>;
+
+ <span class="comment">// using `for_any_key` should make this stop as soon as we return `true`
+ </span><span class="self">self</span>.for_any_key(|key| {
+ <span class="kw">if let </span>DescriptorPublicKey::XPub(xpub) = key {
+ <span class="comment">// Check if the key matches one entry in our `key_origins`. If it does, `matches()` will
+ // return the "prefix" that matched, so we remove that prefix from the full path
+ // found in `key_origins` and save it in `derive_path`. We expect this to be a derivation
+ // path of length 1 if the key is `wildcard` and an empty path otherwise.
+ </span><span class="kw">let </span>root_fingerprint = xpub.root_fingerprint(secp);
+ <span class="kw">let </span>derive_path = key_origins
+ .get_key_value(<span class="kw-2">&</span>root_fingerprint)
+ .and_then(|(fingerprint, (path, expected))| {
+ xpub.matches(<span class="kw-2">&</span>(<span class="kw-2">*</span>fingerprint, (<span class="kw-2">*</span>path).clone()), secp)
+ .zip(<span class="prelude-val">Some</span>((path, expected)))
})
- .<span class="ident">and_then</span>(<span class="op">|</span>(<span class="ident">prefix</span>, (<span class="ident">full_path</span>, <span class="ident">expected</span>))<span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">derive_path</span> <span class="op">=</span> <span class="ident">full_path</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">skip</span>(<span class="ident">prefix</span>.<span class="ident">into_iter</span>().<span class="ident">count</span>())
- .<span class="ident">cloned</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">DerivationPath</span><span class="op">></span>();
-
- <span class="comment">// `derive_path` only contains the replacement index for the wildcard, if present, or</span>
- <span class="comment">// an empty path for fixed descriptors. To verify the key we also need the normal steps</span>
- <span class="comment">// that come before the wildcard, so we take them directly from `xpub` and then append</span>
- <span class="comment">// the final index</span>
- <span class="kw">if</span> <span class="ident">verify_key</span>(
- <span class="ident">xpub</span>,
- <span class="kw-2">&</span><span class="ident">xpub</span>.<span class="ident">derivation_path</span>.<span class="ident">extend</span>(<span class="ident">derive_path</span>.<span class="ident">clone</span>()),
- <span class="ident">expected</span>,
+ .and_then(|(prefix, (full_path, expected))| {
+ <span class="kw">let </span>derive_path = full_path
+ .into_iter()
+ .skip(prefix.into_iter().count())
+ .cloned()
+ .collect::<DerivationPath>();
+
+ <span class="comment">// `derive_path` only contains the replacement index for the wildcard, if present, or
+ // an empty path for fixed descriptors. To verify the key we also need the normal steps
+ // that come before the wildcard, so we take them directly from `xpub` and then append
+ // the final index
+ </span><span class="kw">if </span>verify_key(
+ xpub,
+ <span class="kw-2">&</span>xpub.derivation_path.extend(derive_path.clone()),
+ expected,
) {
- <span class="prelude-val">Some</span>(<span class="ident">derive_path</span>)
- } <span class="kw">else</span> {
+ <span class="prelude-val">Some</span>(derive_path)
+ } <span class="kw">else </span>{
<span class="macro">log::debug!</span>(
<span class="string">"Key `{}` derived with {} yields an unexpected key"</span>,
- <span class="ident">root_fingerprint</span>,
- <span class="ident">derive_path</span>
+ root_fingerprint,
+ derive_path
);
- <span class="prelude-val">None</span>
- }
+ <span class="prelude-val">None
+ </span>}
});
- <span class="kw">match</span> <span class="ident">derive_path</span> {
- <span class="prelude-val">Some</span>(<span class="ident">path</span>) <span class="kw">if</span> <span class="ident">xpub</span>.<span class="ident">wildcard</span> <span class="op">!</span><span class="op">=</span> <span class="ident">Wildcard::None</span> <span class="op">&&</span> <span class="ident">path</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">1</span> => {
- <span class="comment">// Ignore hardened wildcards</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">ChildNumber::Normal</span> { <span class="ident">index</span> } <span class="op">=</span> <span class="ident">path</span>[<span class="number">0</span>] {
- <span class="ident">path_found</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">index</span>);
- <span class="kw">return</span> <span class="bool-val">true</span>;
+ <span class="kw">match </span>derive_path {
+ <span class="prelude-val">Some</span>(path) <span class="kw">if </span>xpub.wildcard != Wildcard::None && path.len() == <span class="number">1 </span>=> {
+ <span class="comment">// Ignore hardened wildcards
+ </span><span class="kw">if let </span>ChildNumber::Normal { index } = path[<span class="number">0</span>] {
+ path_found = <span class="prelude-val">Some</span>(index);
+ <span class="kw">return </span><span class="bool-val">true</span>;
}
}
- <span class="prelude-val">Some</span>(<span class="ident">path</span>) <span class="kw">if</span> <span class="ident">xpub</span>.<span class="ident">wildcard</span> <span class="op">==</span> <span class="ident">Wildcard::None</span> <span class="op">&&</span> <span class="ident">path</span>.<span class="ident">is_empty</span>() => {
- <span class="ident">path_found</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="number">0</span>);
- <span class="kw">return</span> <span class="bool-val">true</span>;
+ <span class="prelude-val">Some</span>(path) <span class="kw">if </span>xpub.wildcard == Wildcard::None && path.is_empty() => {
+ path_found = <span class="prelude-val">Some</span>(<span class="number">0</span>);
+ <span class="kw">return </span><span class="bool-val">true</span>;
}
- <span class="kw">_</span> => {}
+ <span class="kw">_ </span>=> {}
}
}
- <span class="bool-val">false</span>
- });
+ <span class="bool-val">false
+ </span>});
- <span class="ident">path_found</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">path</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">at_derivation_index</span>(<span class="ident">path</span>))
+ path_found.map(|path| <span class="self">self</span>.at_derivation_index(path))
}
- <span class="kw">fn</span> <span class="ident">derive_from_hd_keypaths</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ <span class="kw">fn </span>derive_from_hd_keypaths<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">hd_keypaths</span>: <span class="kw-2">&</span><span class="ident">HdKeyPaths</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span> {
- <span class="comment">// "Convert" an hd_keypaths map to the format required by `derive_from_psbt_key_origins`</span>
- <span class="kw">let</span> <span class="ident">key_origins</span> <span class="op">=</span> <span class="ident">hd_keypaths</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, (<span class="ident">fingerprint</span>, <span class="ident">path</span>))<span class="op">|</span> {
+ hd_keypaths: <span class="kw-2">&</span>HdKeyPaths,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor> {
+ <span class="comment">// "Convert" an hd_keypaths map to the format required by `derive_from_psbt_key_origins`
+ </span><span class="kw">let </span>key_origins = hd_keypaths
+ .iter()
+ .map(|(pk, (fingerprint, path))| {
(
- <span class="kw-2">*</span><span class="ident">fingerprint</span>,
- (<span class="ident">path</span>, <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">PublicKey::new</span>(<span class="kw-2">*</span><span class="ident">pk</span>))),
+ <span class="kw-2">*</span>fingerprint,
+ (path, SinglePubKey::FullKey(PublicKey::new(<span class="kw-2">*</span>pk))),
)
})
- .<span class="ident">collect</span>();
- <span class="self">self</span>.<span class="ident">derive_from_psbt_key_origins</span>(<span class="ident">key_origins</span>, <span class="ident">secp</span>)
+ .collect();
+ <span class="self">self</span>.derive_from_psbt_key_origins(key_origins, secp)
}
- <span class="kw">fn</span> <span class="ident">derive_from_tap_key_origins</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ <span class="kw">fn </span>derive_from_tap_key_origins<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">tap_key_origins</span>: <span class="kw-2">&</span><span class="ident">TapKeyOrigins</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span> {
- <span class="comment">// "Convert" a tap_key_origins map to the format required by `derive_from_psbt_key_origins`</span>
- <span class="kw">let</span> <span class="ident">key_origins</span> <span class="op">=</span> <span class="ident">tap_key_origins</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, (<span class="kw">_</span>, (<span class="ident">fingerprint</span>, <span class="ident">path</span>)))<span class="op">|</span> (<span class="kw-2">*</span><span class="ident">fingerprint</span>, (<span class="ident">path</span>, <span class="ident">SinglePubKey::XOnly</span>(<span class="kw-2">*</span><span class="ident">pk</span>))))
- .<span class="ident">collect</span>();
- <span class="self">self</span>.<span class="ident">derive_from_psbt_key_origins</span>(<span class="ident">key_origins</span>, <span class="ident">secp</span>)
+ tap_key_origins: <span class="kw-2">&</span>TapKeyOrigins,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor> {
+ <span class="comment">// "Convert" a tap_key_origins map to the format required by `derive_from_psbt_key_origins`
+ </span><span class="kw">let </span>key_origins = tap_key_origins
+ .iter()
+ .map(|(pk, (<span class="kw">_</span>, (fingerprint, path)))| (<span class="kw-2">*</span>fingerprint, (path, SinglePubKey::XOnly(<span class="kw-2">*</span>pk))))
+ .collect();
+ <span class="self">self</span>.derive_from_psbt_key_origins(key_origins, secp)
}
- <span class="kw">fn</span> <span class="ident">derive_from_psbt_input</span><span class="op"><</span><span class="lifetime">'s</span><span class="op">></span>(
+ <span class="kw">fn </span>derive_from_psbt_input<<span class="lifetime">'s</span>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt_input</span>: <span class="kw-2">&</span><span class="ident">psbt::Input</span>,
- <span class="ident">utxo</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="lifetime">'s</span> <span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">derived</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">derive_from_hd_keypaths</span>(<span class="kw-2">&</span><span class="ident">psbt_input</span>.<span class="ident">bip32_derivation</span>, <span class="ident">secp</span>) {
- <span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="ident">derived</span>);
+ psbt_input: <span class="kw-2">&</span>psbt::Input,
+ utxo: <span class="prelude-ty">Option</span><TxOut>,
+ secp: <span class="kw-2">&</span><span class="lifetime">'s </span>SecpCtx,
+ ) -> <span class="prelude-ty">Option</span><DerivedDescriptor> {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(derived) = <span class="self">self</span>.derive_from_hd_keypaths(<span class="kw-2">&</span>psbt_input.bip32_derivation, secp) {
+ <span class="kw">return </span><span class="prelude-val">Some</span>(derived);
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">derived</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">derive_from_tap_key_origins</span>(<span class="kw-2">&</span><span class="ident">psbt_input</span>.<span class="ident">tap_key_origins</span>, <span class="ident">secp</span>) {
- <span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="ident">derived</span>);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(derived) = <span class="self">self</span>.derive_from_tap_key_origins(<span class="kw-2">&</span>psbt_input.tap_key_origins, secp) {
+ <span class="kw">return </span><span class="prelude-val">Some</span>(derived);
}
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">has_wildcard</span>() {
- <span class="comment">// We can't try to bruteforce the derivation index, exit here</span>
- <span class="kw">return</span> <span class="prelude-val">None</span>;
+ <span class="kw">if </span><span class="self">self</span>.has_wildcard() {
+ <span class="comment">// We can't try to bruteforce the derivation index, exit here
+ </span><span class="kw">return </span><span class="prelude-val">None</span>;
}
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">at_derivation_index</span>(<span class="number">0</span>);
- <span class="kw">match</span> <span class="ident">descriptor</span>.<span class="ident">desc_type</span>() {
- <span class="comment">// TODO: add pk() here</span>
- <span class="ident">DescriptorType::Pkh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::Wpkh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::ShWpkh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::Tr</span>
- <span class="kw">if</span> <span class="ident">utxo</span>.<span class="ident">is_some</span>()
- <span class="op">&&</span> <span class="ident">descriptor</span>.<span class="ident">script_pubkey</span>() <span class="op">==</span> <span class="ident">utxo</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>().<span class="ident">script_pubkey</span> =>
+ <span class="kw">let </span>descriptor = <span class="self">self</span>.at_derivation_index(<span class="number">0</span>);
+ <span class="kw">match </span>descriptor.desc_type() {
+ <span class="comment">// TODO: add pk() here
+ </span>DescriptorType::Pkh
+ | DescriptorType::Wpkh
+ | DescriptorType::ShWpkh
+ | DescriptorType::Tr
+ <span class="kw">if </span>utxo.is_some()
+ && descriptor.script_pubkey() == utxo.as_ref().unwrap().script_pubkey =>
{
- <span class="prelude-val">Some</span>(<span class="ident">descriptor</span>)
+ <span class="prelude-val">Some</span>(descriptor)
}
- <span class="ident">DescriptorType::Bare</span> <span class="op">|</span> <span class="ident">DescriptorType::Sh</span> <span class="op">|</span> <span class="ident">DescriptorType::ShSortedMulti</span>
- <span class="kw">if</span> <span class="ident">psbt_input</span>.<span class="ident">redeem_script</span>.<span class="ident">is_some</span>()
- <span class="op">&&</span> <span class="kw-2">&</span><span class="ident">descriptor</span>.<span class="ident">explicit_script</span>().<span class="ident">unwrap</span>()
- <span class="op">==</span> <span class="ident">psbt_input</span>.<span class="ident">redeem_script</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>() =>
+ DescriptorType::Bare | DescriptorType::Sh | DescriptorType::ShSortedMulti
+ <span class="kw">if </span>psbt_input.redeem_script.is_some()
+ && <span class="kw-2">&</span>descriptor.explicit_script().unwrap()
+ == psbt_input.redeem_script.as_ref().unwrap() =>
{
- <span class="prelude-val">Some</span>(<span class="ident">descriptor</span>)
+ <span class="prelude-val">Some</span>(descriptor)
}
- <span class="ident">DescriptorType::Wsh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::ShWsh</span>
- <span class="op">|</span> <span class="ident">DescriptorType::ShWshSortedMulti</span>
- <span class="op">|</span> <span class="ident">DescriptorType::WshSortedMulti</span>
- <span class="kw">if</span> <span class="ident">psbt_input</span>.<span class="ident">witness_script</span>.<span class="ident">is_some</span>()
- <span class="op">&&</span> <span class="kw-2">&</span><span class="ident">descriptor</span>.<span class="ident">explicit_script</span>().<span class="ident">unwrap</span>()
- <span class="op">==</span> <span class="ident">psbt_input</span>.<span class="ident">witness_script</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>() =>
+ DescriptorType::Wsh
+ | DescriptorType::ShWsh
+ | DescriptorType::ShWshSortedMulti
+ | DescriptorType::WshSortedMulti
+ <span class="kw">if </span>psbt_input.witness_script.is_some()
+ && <span class="kw-2">&</span>descriptor.explicit_script().unwrap()
+ == psbt_input.witness_script.as_ref().unwrap() =>
{
- <span class="prelude-val">Some</span>(<span class="ident">descriptor</span>)
+ <span class="prelude-val">Some</span>(descriptor)
}
- <span class="kw">_</span> => <span class="prelude-val">None</span>,
+ <span class="kw">_ </span>=> <span class="prelude-val">None</span>,
}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">use</span> <span class="ident">bitcoin::consensus::encode::deserialize</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::secp256k1::Secp256k1</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util</span>::{<span class="ident">bip32</span>, <span class="ident">psbt</span>};
- <span class="kw">use</span> <span class="ident">bitcoin::Script</span>;
+ <span class="kw">use </span>bitcoin::consensus::encode::deserialize;
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
+ <span class="kw">use </span>bitcoin::secp256k1::Secp256k1;
+ <span class="kw">use </span>bitcoin::util::{bip32, psbt};
+ <span class="kw">use </span>bitcoin::Script;
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::psbt::PsbtUtils</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::psbt::PsbtUtils;
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_derive_from_psbt_input_wpkh_wif</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_derive_from_psbt_input_wpkh_wif() {
+ <span class="kw">let </span>descriptor = Descriptor::<DescriptorPublicKey>::from_str(
<span class="string">"wpkh(02b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a8737)"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">psbt</span>: <span class="ident">psbt::PartiallySignedTransaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(
- <span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+ .unwrap();
+ <span class="kw">let </span>psbt: psbt::PartiallySignedTransaction = deserialize(
+ <span class="kw-2">&</span>Vec::<u8>::from_hex(
<span class="string">"70736274ff010052010000000162307be8e431fbaff807cdf9cdc3fde44d7402\
11bc8342c31ffd6ec11fe35bcc0100000000ffffffff01328601000000000016\
001493ce48570b55c42c2af816aeaba06cfee1224fae000000000001011fa086\
01000000000016001493ce48570b55c42c2af816aeaba06cfee1224fae010304\
010000000000"</span>,
)
- .<span class="ident">unwrap</span>(),
+ .unwrap(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert!</span>(<span class="ident">descriptor</span>
- .<span class="ident">derive_from_psbt_input</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>], <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="number">0</span>), <span class="kw-2">&</span><span class="ident">Secp256k1::new</span>())
- .<span class="ident">is_some</span>());
+ <span class="macro">assert!</span>(descriptor
+ .derive_from_psbt_input(<span class="kw-2">&</span>psbt.inputs[<span class="number">0</span>], psbt.get_utxo_for(<span class="number">0</span>), <span class="kw-2">&</span>Secp256k1::new())
+ .is_some());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_derive_from_psbt_input_pkh_tpub</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_derive_from_psbt_input_pkh_tpub() {
+ <span class="kw">let </span>descriptor = Descriptor::<DescriptorPublicKey>::from_str(
<span class="string">"pkh([0f056943/44h/0h/0h]tpubDDpWvmUrPZrhSPmUzCMBHffvC3HyMAPnWDSAQNBTnj1iZeJa7BZQEttFiP4DS4GCcXQHezdXhn86Hj6LHX5EDstXPWrMaSneRWM8yUf6NFd/10/*)"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">psbt</span>: <span class="ident">psbt::PartiallySignedTransaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(
- <span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+ .unwrap();
+ <span class="kw">let </span>psbt: psbt::PartiallySignedTransaction = deserialize(
+ <span class="kw-2">&</span>Vec::<u8>::from_hex(
<span class="string">"70736274ff010053010000000145843b86be54a3cd8c9e38444e1162676c00df\
e7964122a70df491ea12fd67090100000000ffffffff01c19598000000000017\
a91432bb94283282f72b2e034709e348c44d5a4db0ef8700000000000100f902\
0603433b83583f8c4879b329dd08bbc7da935e4cc02f637ff746e05f0466ffb2\
a6a2180f0569432c00008000000080000000800a000000000000000000"</span>,
)
- .<span class="ident">unwrap</span>(),
+ .unwrap(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert!</span>(<span class="ident">descriptor</span>
- .<span class="ident">derive_from_psbt_input</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>], <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="number">0</span>), <span class="kw-2">&</span><span class="ident">Secp256k1::new</span>())
- .<span class="ident">is_some</span>());
+ <span class="macro">assert!</span>(descriptor
+ .derive_from_psbt_input(<span class="kw-2">&</span>psbt.inputs[<span class="number">0</span>], psbt.get_utxo_for(<span class="number">0</span>), <span class="kw-2">&</span>Secp256k1::new())
+ .is_some());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_derive_from_psbt_input_wsh</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_derive_from_psbt_input_wsh() {
+ <span class="kw">let </span>descriptor = Descriptor::<DescriptorPublicKey>::from_str(
<span class="string">"wsh(and_v(v:pk(03b6633fef2397a0a9de9d7b6f23aef8368a6e362b0581f0f0af70d5ecfd254b14),older(6)))"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">psbt</span>: <span class="ident">psbt::PartiallySignedTransaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(
- <span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+ .unwrap();
+ <span class="kw">let </span>psbt: psbt::PartiallySignedTransaction = deserialize(
+ <span class="kw-2">&</span>Vec::<u8>::from_hex(
<span class="string">"70736274ff01005302000000011c8116eea34408ab6529223c9a176606742207\
67a1ff1d46a6e3c4a88243ea6e01000000000600000001109698000000000017\
a914ad105f61102e0d01d7af40d06d6a5c3ae2f7fde387000000000001012b80\
336030f9059345091044010304010000000105252103b6633fef2397a0a9de9d\
7b6f23aef8368a6e362b0581f0f0af70d5ecfd254b14ad56b20000"</span>,
)
- .<span class="ident">unwrap</span>(),
+ .unwrap(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert!</span>(<span class="ident">descriptor</span>
- .<span class="ident">derive_from_psbt_input</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>], <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="number">0</span>), <span class="kw-2">&</span><span class="ident">Secp256k1::new</span>())
- .<span class="ident">is_some</span>());
+ <span class="macro">assert!</span>(descriptor
+ .derive_from_psbt_input(<span class="kw-2">&</span>psbt.inputs[<span class="number">0</span>], psbt.get_utxo_for(<span class="number">0</span>), <span class="kw-2">&</span>Secp256k1::new())
+ .is_some());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_derive_from_psbt_input_sh</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_derive_from_psbt_input_sh() {
+ <span class="kw">let </span>descriptor = Descriptor::<DescriptorPublicKey>::from_str(
<span class="string">"sh(and_v(v:pk(021403881a5587297818fcaf17d239cefca22fce84a45b3b1d23e836c4af671dbb),after(630000)))"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">psbt</span>: <span class="ident">psbt::PartiallySignedTransaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(
- <span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+ .unwrap();
+ <span class="kw">let </span>psbt: psbt::PartiallySignedTransaction = deserialize(
+ <span class="kw-2">&</span>Vec::<u8>::from_hex(
<span class="string">"70736274ff0100530100000001bc8c13df445dfadcc42afa6dc841f85d22b01d\
a6270ebf981740f4b7b1d800390000000000feffffff01ba9598000000000017\
a91457b148ba4d3e5fa8608a8657875124e3d1c9390887f09c0900000100e002\
03040100000001042821021403881a5587297818fcaf17d239cefca22fce84a4\
5b3b1d23e836c4af671dbbad03f09c09b10000"</span>,
)
- .<span class="ident">unwrap</span>(),
+ .unwrap(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert!</span>(<span class="ident">descriptor</span>
- .<span class="ident">derive_from_psbt_input</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>], <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="number">0</span>), <span class="kw-2">&</span><span class="ident">Secp256k1::new</span>())
- .<span class="ident">is_some</span>());
+ <span class="macro">assert!</span>(descriptor
+ .derive_from_psbt_input(<span class="kw-2">&</span>psbt.inputs[<span class="number">0</span>], psbt.get_utxo_for(<span class="number">0</span>), <span class="kw-2">&</span>Secp256k1::new())
+ .is_some());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_to_wallet_descriptor_fixup_networks</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">any_network</span>, <span class="ident">IntoDescriptorKey</span>};
-
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="string">"xprv9s21ZrQH143K3c3gF1DUWpWNr2SG2XrG8oYPpqYh7hoWsJy9NjabErnzriJPpnGHyKz5NgdXmq1KVbqS1r4NXdCoKitWg5e86zqXHa8kxyB"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/0"</span>).<span class="ident">unwrap</span>();
-
- <span class="comment">// here `to_descriptor_key` will set the valid networks for the key to only mainnet, since</span>
- <span class="comment">// we are using an "xpub"</span>
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> (<span class="ident">xprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="comment">// override it with any. this happens in some key conversions, like bip39</span>
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">key</span>.<span class="ident">override_valid_networks</span>(<span class="ident">any_network</span>());
-
- <span class="comment">// make a descriptor out of it</span>
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">crate::descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">key</span>)).<span class="ident">unwrap</span>();
- <span class="comment">// this should convert the key that supports "any_network" to the right network (testnet)</span>
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">xprv_testnet</span> <span class="op">=</span> <span class="ident">xprv</span>;
- <span class="ident">xprv_testnet</span>.<span class="ident">network</span> <span class="op">=</span> <span class="ident">Network::Testnet</span>;
-
- <span class="kw">let</span> <span class="ident">xpub_testnet</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPubKey::from_priv</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">xprv_testnet</span>);
- <span class="kw">let</span> <span class="ident">desc_pubkey</span> <span class="op">=</span> <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">DescriptorXKey</span> {
- <span class="ident">xkey</span>: <span class="ident">xpub_testnet</span>,
- <span class="ident">origin</span>: <span class="prelude-val">None</span>,
- <span class="ident">derivation_path</span>: <span class="ident">path</span>,
- <span class="ident">wildcard</span>: <span class="ident">Wildcard::Unhardened</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_to_wallet_descriptor_fixup_networks() {
+ <span class="kw">use </span><span class="kw">crate</span>::keys::{any_network, IntoDescriptorKey};
+
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>xprv = bip32::ExtendedPrivKey::from_str(<span class="string">"xprv9s21ZrQH143K3c3gF1DUWpWNr2SG2XrG8oYPpqYh7hoWsJy9NjabErnzriJPpnGHyKz5NgdXmq1KVbqS1r4NXdCoKitWg5e86zqXHa8kxyB"</span>).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/0"</span>).unwrap();
+
+ <span class="comment">// here `to_descriptor_key` will set the valid networks for the key to only mainnet, since
+ // we are using an "xpub"
+ </span><span class="kw">let </span>key = (xprv, path.clone()).into_descriptor_key().unwrap();
+ <span class="comment">// override it with any. this happens in some key conversions, like bip39
+ </span><span class="kw">let </span>key = key.override_valid_networks(any_network());
+
+ <span class="comment">// make a descriptor out of it
+ </span><span class="kw">let </span>desc = <span class="macro">crate::descriptor!</span>(wpkh(key)).unwrap();
+ <span class="comment">// this should convert the key that supports "any_network" to the right network (testnet)
+ </span><span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>xprv_testnet = xprv;
+ xprv_testnet.network = Network::Testnet;
+
+ <span class="kw">let </span>xpub_testnet = bip32::ExtendedPubKey::from_priv(<span class="kw-2">&</span>secp, <span class="kw-2">&</span>xprv_testnet);
+ <span class="kw">let </span>desc_pubkey = DescriptorPublicKey::XPub(DescriptorXKey {
+ xkey: xpub_testnet,
+ origin: <span class="prelude-val">None</span>,
+ derivation_path: path,
+ wildcard: Wildcard::Unhardened,
});
- <span class="macro">assert_eq!</span>(<span class="ident">wallet_desc</span>.<span class="ident">to_string</span>(), <span class="string">"wpkh(tpubD6NzVbkrYhZ4XtJzoDja5snUjBNQRP5B3f4Hyn1T1x6PVPxzzVjvw6nJx2D8RBCxog9GEVjZoyStfepTz7TtKoBVdkCtnc7VCJh9dD4RAU9/0/*)#a3svx0ha"</span>);
+ <span class="macro">assert_eq!</span>(wallet_desc.to_string(), <span class="string">"wpkh(tpubD6NzVbkrYhZ4XtJzoDja5snUjBNQRP5B3f4Hyn1T1x6PVPxzzVjvw6nJx2D8RBCxog9GEVjZoyStfepTz7TtKoBVdkCtnc7VCJh9dD4RAU9/0/*)#a3svx0ha"</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">keymap</span>
- .<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">desc_pubkey</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">key</span><span class="op">|</span> <span class="ident">key</span>.<span class="ident">to_public</span>(<span class="kw-2">&</span><span class="ident">secp</span>).<span class="ident">unwrap</span>()),
- <span class="prelude-val">Some</span>(<span class="ident">desc_pubkey</span>)
+ keymap
+ .get(<span class="kw-2">&</span>desc_pubkey)
+ .map(|key| key.to_public(<span class="kw-2">&</span>secp).unwrap()),
+ <span class="prelude-val">Some</span>(desc_pubkey)
);
}
- <span class="comment">// test IntoWalletDescriptor trait from &str with and without checksum appended</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_descriptor_from_str_with_checksum</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="comment">// test IntoWalletDescriptor trait from &str with and without checksum appended
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_descriptor_from_str_with_checksum() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">desc</span>.<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::InvalidDescriptorChecksum</span>)
+ desc.err(),
+ <span class="prelude-val">Some</span>(DescriptorError::InvalidDescriptorChecksum)
));
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">desc</span>.<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::InvalidDescriptorChecksum</span>)
+ desc.err(),
+ <span class="prelude-val">Some</span>(DescriptorError::InvalidDescriptorChecksum)
));
}
- <span class="comment">// test IntoWalletDescriptor trait from &str with keys from right and wrong network</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_descriptor_from_str_with_keys_network</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="comment">// test IntoWalletDescriptor trait from &str with keys from right and wrong network
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_descriptor_from_str_with_keys_network() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Regtest</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Regtest);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Regtest</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Regtest);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Bitcoin</span>);
- <span class="macro">assert!</span>(<span class="ident">desc</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>desc = <span class="string">"sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Bitcoin);
+ <span class="macro">assert!</span>(desc.is_ok());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Bitcoin</span>);
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Bitcoin);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">desc</span>.<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::Key</span>(<span class="ident">KeyError::InvalidNetwork</span>))
+ desc.err(),
+ <span class="prelude-val">Some</span>(DescriptorError::Key(KeyError::InvalidNetwork))
));
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Bitcoin</span>);
+ <span class="kw">let </span>desc = <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
+ </span>.into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Bitcoin);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">desc</span>.<span class="ident">err</span>(),
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorError::Key</span>(<span class="ident">KeyError::InvalidNetwork</span>))
+ desc.err(),
+ <span class="prelude-val">Some</span>(DescriptorError::Key(KeyError::InvalidNetwork))
));
}
- <span class="comment">// test IntoWalletDescriptor trait from the output of the descriptor!() macro</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_descriptor_from_str_from_output_of_macro</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="comment">// test IntoWalletDescriptor trait from the output of the descriptor!() macro
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_descriptor_from_str_from_output_of_macro() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">tpub</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/1/2"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> (<span class="ident">tpub</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>tpub = bip32::ExtendedPubKey::from_str(<span class="string">"tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK"</span>).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/1/2"</span>).unwrap();
+ <span class="kw">let </span>key = (tpub, path).into_descriptor_key().unwrap();
- <span class="comment">// make a descriptor out of it</span>
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">crate::descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">key</span>)).<span class="ident">unwrap</span>();
+ <span class="comment">// make a descriptor out of it
+ </span><span class="kw">let </span>desc = <span class="macro">crate::descriptor!</span>(wpkh(key)).unwrap();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">wallet_desc_str</span> <span class="op">=</span> <span class="ident">wallet_desc</span>.<span class="ident">to_string</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">wallet_desc_str</span>, <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw"</span>);
+ <span class="kw">let </span>(wallet_desc, <span class="kw">_</span>) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>wallet_desc_str = wallet_desc.to_string();
+ <span class="macro">assert_eq!</span>(wallet_desc_str, <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw"</span>);
- <span class="kw">let</span> (<span class="ident">wallet_desc2</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">wallet_desc_str</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">wallet_desc</span>, <span class="ident">wallet_desc2</span>)
+ <span class="kw">let </span>(wallet_desc2, <span class="kw">_</span>) = wallet_desc_str
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="macro">assert_eq!</span>(wallet_desc, wallet_desc2)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_into_wallet_descriptor_checked</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_into_wallet_descriptor_checked() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0'/1/2/*)"</span>;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">into_wallet_descriptor_checked</span>(<span class="ident">descriptor</span>, <span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
+ <span class="kw">let </span>descriptor = <span class="string">"wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0'/1/2/*)"</span>;
+ <span class="kw">let </span>result = into_wallet_descriptor_checked(descriptor, <span class="kw-2">&</span>secp, Network::Testnet);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_err</span>());
+ <span class="macro">assert!</span>(result.is_err());
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap_err</span>(),
- <span class="ident">DescriptorError::HardenedDerivationXpub</span>
+ result.unwrap_err(),
+ DescriptorError::HardenedDerivationXpub
));
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wsh(multi(2,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*))"</span>;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">into_wallet_descriptor_checked</span>(<span class="ident">descriptor</span>, <span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>);
+ <span class="kw">let </span>descriptor = <span class="string">"wsh(multi(2,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*))"</span>;
+ <span class="kw">let </span>result = into_wallet_descriptor_checked(descriptor, <span class="kw-2">&</span>secp, Network::Testnet);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_err</span>());
+ <span class="macro">assert!</span>(result.is_err());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sh_wsh_sortedmulti_redeemscript</span>() {
- <span class="kw">use</span> <span class="ident">miniscript::psbt::PsbtInputExt</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sh_wsh_sortedmulti_redeemscript() {
+ <span class="kw">use </span>miniscript::psbt::PsbtInputExt;
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"sh(wsh(sortedmulti(3,tpubDEsqS36T4DVsKJd9UH8pAKzrkGBYPLEt9jZMwpKtzh1G6mgYehfHt9WCgk7MJG5QGSFWf176KaBNoXbcuFcuadAFKxDpUdMDKGBha7bY3QM/0/*,tpubDF3cpwfs7fMvXXuoQbohXtLjNM6ehwYT287LWtmLsd4r77YLg6MZg4vTETx5MSJ2zkfigbYWu31VA2Z2Vc1cZugCYXgS7FQu6pE8V6TriEH/0/*,tpubDE1SKfcW76Tb2AASv5bQWMuScYNAdoqLHoexw13sNDXwmUhQDBbCD3QAedKGLhxMrWQdMDKENzYtnXPDRvexQPNuDrLj52wAjHhNEm8sJ4p/0/*,tpubDFLc6oXwJmhm3FGGzXkfJNTh2KitoY3WhmmQvuAjMhD8YbyWn5mAqckbxXfm2etM3p5J6JoTpSrMqRSTfMLtNW46poDaEZJ1kjd3csRSjwH/0/*,tpubDEWD9NBeWP59xXmdqSNt4VYdtTGwbpyP8WS962BuqpQeMZmX9Pur14dhXdZT5a7wR1pK6dPtZ9fP5WR493hPzemnBvkfLLYxnUjAKj1JCQV/0/*,tpubDEHyZkkwd7gZWCTgQuYQ9C4myF2hMEmyHsBCCmLssGqoqUxeT3gzohF5uEVURkf9TtmeepJgkSUmteac38FwZqirjApzNX59XSHLcwaTZCH/0/*,tpubDEqLouCekwnMUWN486kxGzD44qVgeyuqHyxUypNEiQt5RnUZNJe386TKPK99fqRV1vRkZjYAjtXGTECz98MCsdLcnkM67U6KdYRzVubeCgZ/0/*)))"</span>;
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">into_wallet_descriptor_checked</span>(<span class="ident">descriptor</span>, <span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>descriptor = <span class="string">"sh(wsh(sortedmulti(3,tpubDEsqS36T4DVsKJd9UH8pAKzrkGBYPLEt9jZMwpKtzh1G6mgYehfHt9WCgk7MJG5QGSFWf176KaBNoXbcuFcuadAFKxDpUdMDKGBha7bY3QM/0/*,tpubDF3cpwfs7fMvXXuoQbohXtLjNM6ehwYT287LWtmLsd4r77YLg6MZg4vTETx5MSJ2zkfigbYWu31VA2Z2Vc1cZugCYXgS7FQu6pE8V6TriEH/0/*,tpubDE1SKfcW76Tb2AASv5bQWMuScYNAdoqLHoexw13sNDXwmUhQDBbCD3QAedKGLhxMrWQdMDKENzYtnXPDRvexQPNuDrLj52wAjHhNEm8sJ4p/0/*,tpubDFLc6oXwJmhm3FGGzXkfJNTh2KitoY3WhmmQvuAjMhD8YbyWn5mAqckbxXfm2etM3p5J6JoTpSrMqRSTfMLtNW46poDaEZJ1kjd3csRSjwH/0/*,tpubDEWD9NBeWP59xXmdqSNt4VYdtTGwbpyP8WS962BuqpQeMZmX9Pur14dhXdZT5a7wR1pK6dPtZ9fP5WR493hPzemnBvkfLLYxnUjAKj1JCQV/0/*,tpubDEHyZkkwd7gZWCTgQuYQ9C4myF2hMEmyHsBCCmLssGqoqUxeT3gzohF5uEVURkf9TtmeepJgkSUmteac38FwZqirjApzNX59XSHLcwaTZCH/0/*,tpubDEqLouCekwnMUWN486kxGzD44qVgeyuqHyxUypNEiQt5RnUZNJe386TKPK99fqRV1vRkZjYAjtXGTECz98MCsdLcnkM67U6KdYRzVubeCgZ/0/*)))"</span>;
+ <span class="kw">let </span>(descriptor, <span class="kw">_</span>) =
+ into_wallet_descriptor_checked(descriptor, <span class="kw-2">&</span>secp, Network::Testnet).unwrap();
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">descriptor</span>.<span class="ident">at_derivation_index</span>(<span class="number">0</span>);
+ <span class="kw">let </span>descriptor = descriptor.at_derivation_index(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from_str</span>(<span class="string">"5321022f533b667e2ea3b36e21961c9fe9dca340fbe0af5210173a83ae0337ab20a57621026bb53a98e810bd0ee61a0ed1164ba6c024786d76554e793e202dc6ce9c78c4ea2102d5b8a7d66a41ffdb6f4c53d61994022e886b4f45001fb158b95c9164d45f8ca3210324b75eead2c1f9c60e8adeb5e7009fec7a29afcdb30d829d82d09562fe8bae8521032d34f8932200833487bd294aa219dcbe000b9f9b3d824799541430009f0fa55121037468f8ea99b6c64788398b5ad25480cad08f4b0d65be54ce3a55fd206b5ae4722103f72d3d96663b0ea99b0aeb0d7f273cab11a8de37885f1dddc8d9112adb87169357ae"</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>script = Script::from_str(<span class="string">"5321022f533b667e2ea3b36e21961c9fe9dca340fbe0af5210173a83ae0337ab20a57621026bb53a98e810bd0ee61a0ed1164ba6c024786d76554e793e202dc6ce9c78c4ea2102d5b8a7d66a41ffdb6f4c53d61994022e886b4f45001fb158b95c9164d45f8ca3210324b75eead2c1f9c60e8adeb5e7009fec7a29afcdb30d829d82d09562fe8bae8521032d34f8932200833487bd294aa219dcbe000b9f9b3d824799541430009f0fa55121037468f8ea99b6c64788398b5ad25480cad08f4b0d65be54ce3a55fd206b5ae4722103f72d3d96663b0ea99b0aeb0d7f273cab11a8de37885f1dddc8d9112adb87169357ae"</span>).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">psbt::Input::default</span>();
- <span class="ident">psbt_input</span>
- .<span class="ident">update_with_descriptor_unchecked</span>(<span class="kw-2">&</span><span class="ident">descriptor</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>psbt_input = psbt::Input::default();
+ psbt_input
+ .update_with_descriptor_unchecked(<span class="kw-2">&</span>descriptor)
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">psbt_input</span>.<span class="ident">redeem_script</span>, <span class="prelude-val">Some</span>(<span class="ident">script</span>.<span class="ident">to_v0_p2wsh</span>()));
- <span class="macro">assert_eq!</span>(<span class="ident">psbt_input</span>.<span class="ident">witness_script</span>, <span class="prelude-val">Some</span>(<span class="ident">script</span>));
+ <span class="macro">assert_eq!</span>(psbt_input.redeem_script, <span class="prelude-val">Some</span>(script.to_v0_p2wsh()));
+ <span class="macro">assert_eq!</span>(psbt_input.witness_script, <span class="prelude-val">Some</span>(script));
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/policy.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>policy.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-<span id="1001">1001</span>
-<span id="1002">1002</span>
-<span id="1003">1003</span>
-<span id="1004">1004</span>
-<span id="1005">1005</span>
-<span id="1006">1006</span>
-<span id="1007">1007</span>
-<span id="1008">1008</span>
-<span id="1009">1009</span>
-<span id="1010">1010</span>
-<span id="1011">1011</span>
-<span id="1012">1012</span>
-<span id="1013">1013</span>
-<span id="1014">1014</span>
-<span id="1015">1015</span>
-<span id="1016">1016</span>
-<span id="1017">1017</span>
-<span id="1018">1018</span>
-<span id="1019">1019</span>
-<span id="1020">1020</span>
-<span id="1021">1021</span>
-<span id="1022">1022</span>
-<span id="1023">1023</span>
-<span id="1024">1024</span>
-<span id="1025">1025</span>
-<span id="1026">1026</span>
-<span id="1027">1027</span>
-<span id="1028">1028</span>
-<span id="1029">1029</span>
-<span id="1030">1030</span>
-<span id="1031">1031</span>
-<span id="1032">1032</span>
-<span id="1033">1033</span>
-<span id="1034">1034</span>
-<span id="1035">1035</span>
-<span id="1036">1036</span>
-<span id="1037">1037</span>
-<span id="1038">1038</span>
-<span id="1039">1039</span>
-<span id="1040">1040</span>
-<span id="1041">1041</span>
-<span id="1042">1042</span>
-<span id="1043">1043</span>
-<span id="1044">1044</span>
-<span id="1045">1045</span>
-<span id="1046">1046</span>
-<span id="1047">1047</span>
-<span id="1048">1048</span>
-<span id="1049">1049</span>
-<span id="1050">1050</span>
-<span id="1051">1051</span>
-<span id="1052">1052</span>
-<span id="1053">1053</span>
-<span id="1054">1054</span>
-<span id="1055">1055</span>
-<span id="1056">1056</span>
-<span id="1057">1057</span>
-<span id="1058">1058</span>
-<span id="1059">1059</span>
-<span id="1060">1060</span>
-<span id="1061">1061</span>
-<span id="1062">1062</span>
-<span id="1063">1063</span>
-<span id="1064">1064</span>
-<span id="1065">1065</span>
-<span id="1066">1066</span>
-<span id="1067">1067</span>
-<span id="1068">1068</span>
-<span id="1069">1069</span>
-<span id="1070">1070</span>
-<span id="1071">1071</span>
-<span id="1072">1072</span>
-<span id="1073">1073</span>
-<span id="1074">1074</span>
-<span id="1075">1075</span>
-<span id="1076">1076</span>
-<span id="1077">1077</span>
-<span id="1078">1078</span>
-<span id="1079">1079</span>
-<span id="1080">1080</span>
-<span id="1081">1081</span>
-<span id="1082">1082</span>
-<span id="1083">1083</span>
-<span id="1084">1084</span>
-<span id="1085">1085</span>
-<span id="1086">1086</span>
-<span id="1087">1087</span>
-<span id="1088">1088</span>
-<span id="1089">1089</span>
-<span id="1090">1090</span>
-<span id="1091">1091</span>
-<span id="1092">1092</span>
-<span id="1093">1093</span>
-<span id="1094">1094</span>
-<span id="1095">1095</span>
-<span id="1096">1096</span>
-<span id="1097">1097</span>
-<span id="1098">1098</span>
-<span id="1099">1099</span>
-<span id="1100">1100</span>
-<span id="1101">1101</span>
-<span id="1102">1102</span>
-<span id="1103">1103</span>
-<span id="1104">1104</span>
-<span id="1105">1105</span>
-<span id="1106">1106</span>
-<span id="1107">1107</span>
-<span id="1108">1108</span>
-<span id="1109">1109</span>
-<span id="1110">1110</span>
-<span id="1111">1111</span>
-<span id="1112">1112</span>
-<span id="1113">1113</span>
-<span id="1114">1114</span>
-<span id="1115">1115</span>
-<span id="1116">1116</span>
-<span id="1117">1117</span>
-<span id="1118">1118</span>
-<span id="1119">1119</span>
-<span id="1120">1120</span>
-<span id="1121">1121</span>
-<span id="1122">1122</span>
-<span id="1123">1123</span>
-<span id="1124">1124</span>
-<span id="1125">1125</span>
-<span id="1126">1126</span>
-<span id="1127">1127</span>
-<span id="1128">1128</span>
-<span id="1129">1129</span>
-<span id="1130">1130</span>
-<span id="1131">1131</span>
-<span id="1132">1132</span>
-<span id="1133">1133</span>
-<span id="1134">1134</span>
-<span id="1135">1135</span>
-<span id="1136">1136</span>
-<span id="1137">1137</span>
-<span id="1138">1138</span>
-<span id="1139">1139</span>
-<span id="1140">1140</span>
-<span id="1141">1141</span>
-<span id="1142">1142</span>
-<span id="1143">1143</span>
-<span id="1144">1144</span>
-<span id="1145">1145</span>
-<span id="1146">1146</span>
-<span id="1147">1147</span>
-<span id="1148">1148</span>
-<span id="1149">1149</span>
-<span id="1150">1150</span>
-<span id="1151">1151</span>
-<span id="1152">1152</span>
-<span id="1153">1153</span>
-<span id="1154">1154</span>
-<span id="1155">1155</span>
-<span id="1156">1156</span>
-<span id="1157">1157</span>
-<span id="1158">1158</span>
-<span id="1159">1159</span>
-<span id="1160">1160</span>
-<span id="1161">1161</span>
-<span id="1162">1162</span>
-<span id="1163">1163</span>
-<span id="1164">1164</span>
-<span id="1165">1165</span>
-<span id="1166">1166</span>
-<span id="1167">1167</span>
-<span id="1168">1168</span>
-<span id="1169">1169</span>
-<span id="1170">1170</span>
-<span id="1171">1171</span>
-<span id="1172">1172</span>
-<span id="1173">1173</span>
-<span id="1174">1174</span>
-<span id="1175">1175</span>
-<span id="1176">1176</span>
-<span id="1177">1177</span>
-<span id="1178">1178</span>
-<span id="1179">1179</span>
-<span id="1180">1180</span>
-<span id="1181">1181</span>
-<span id="1182">1182</span>
-<span id="1183">1183</span>
-<span id="1184">1184</span>
-<span id="1185">1185</span>
-<span id="1186">1186</span>
-<span id="1187">1187</span>
-<span id="1188">1188</span>
-<span id="1189">1189</span>
-<span id="1190">1190</span>
-<span id="1191">1191</span>
-<span id="1192">1192</span>
-<span id="1193">1193</span>
-<span id="1194">1194</span>
-<span id="1195">1195</span>
-<span id="1196">1196</span>
-<span id="1197">1197</span>
-<span id="1198">1198</span>
-<span id="1199">1199</span>
-<span id="1200">1200</span>
-<span id="1201">1201</span>
-<span id="1202">1202</span>
-<span id="1203">1203</span>
-<span id="1204">1204</span>
-<span id="1205">1205</span>
-<span id="1206">1206</span>
-<span id="1207">1207</span>
-<span id="1208">1208</span>
-<span id="1209">1209</span>
-<span id="1210">1210</span>
-<span id="1211">1211</span>
-<span id="1212">1212</span>
-<span id="1213">1213</span>
-<span id="1214">1214</span>
-<span id="1215">1215</span>
-<span id="1216">1216</span>
-<span id="1217">1217</span>
-<span id="1218">1218</span>
-<span id="1219">1219</span>
-<span id="1220">1220</span>
-<span id="1221">1221</span>
-<span id="1222">1222</span>
-<span id="1223">1223</span>
-<span id="1224">1224</span>
-<span id="1225">1225</span>
-<span id="1226">1226</span>
-<span id="1227">1227</span>
-<span id="1228">1228</span>
-<span id="1229">1229</span>
-<span id="1230">1230</span>
-<span id="1231">1231</span>
-<span id="1232">1232</span>
-<span id="1233">1233</span>
-<span id="1234">1234</span>
-<span id="1235">1235</span>
-<span id="1236">1236</span>
-<span id="1237">1237</span>
-<span id="1238">1238</span>
-<span id="1239">1239</span>
-<span id="1240">1240</span>
-<span id="1241">1241</span>
-<span id="1242">1242</span>
-<span id="1243">1243</span>
-<span id="1244">1244</span>
-<span id="1245">1245</span>
-<span id="1246">1246</span>
-<span id="1247">1247</span>
-<span id="1248">1248</span>
-<span id="1249">1249</span>
-<span id="1250">1250</span>
-<span id="1251">1251</span>
-<span id="1252">1252</span>
-<span id="1253">1253</span>
-<span id="1254">1254</span>
-<span id="1255">1255</span>
-<span id="1256">1256</span>
-<span id="1257">1257</span>
-<span id="1258">1258</span>
-<span id="1259">1259</span>
-<span id="1260">1260</span>
-<span id="1261">1261</span>
-<span id="1262">1262</span>
-<span id="1263">1263</span>
-<span id="1264">1264</span>
-<span id="1265">1265</span>
-<span id="1266">1266</span>
-<span id="1267">1267</span>
-<span id="1268">1268</span>
-<span id="1269">1269</span>
-<span id="1270">1270</span>
-<span id="1271">1271</span>
-<span id="1272">1272</span>
-<span id="1273">1273</span>
-<span id="1274">1274</span>
-<span id="1275">1275</span>
-<span id="1276">1276</span>
-<span id="1277">1277</span>
-<span id="1278">1278</span>
-<span id="1279">1279</span>
-<span id="1280">1280</span>
-<span id="1281">1281</span>
-<span id="1282">1282</span>
-<span id="1283">1283</span>
-<span id="1284">1284</span>
-<span id="1285">1285</span>
-<span id="1286">1286</span>
-<span id="1287">1287</span>
-<span id="1288">1288</span>
-<span id="1289">1289</span>
-<span id="1290">1290</span>
-<span id="1291">1291</span>
-<span id="1292">1292</span>
-<span id="1293">1293</span>
-<span id="1294">1294</span>
-<span id="1295">1295</span>
-<span id="1296">1296</span>
-<span id="1297">1297</span>
-<span id="1298">1298</span>
-<span id="1299">1299</span>
-<span id="1300">1300</span>
-<span id="1301">1301</span>
-<span id="1302">1302</span>
-<span id="1303">1303</span>
-<span id="1304">1304</span>
-<span id="1305">1305</span>
-<span id="1306">1306</span>
-<span id="1307">1307</span>
-<span id="1308">1308</span>
-<span id="1309">1309</span>
-<span id="1310">1310</span>
-<span id="1311">1311</span>
-<span id="1312">1312</span>
-<span id="1313">1313</span>
-<span id="1314">1314</span>
-<span id="1315">1315</span>
-<span id="1316">1316</span>
-<span id="1317">1317</span>
-<span id="1318">1318</span>
-<span id="1319">1319</span>
-<span id="1320">1320</span>
-<span id="1321">1321</span>
-<span id="1322">1322</span>
-<span id="1323">1323</span>
-<span id="1324">1324</span>
-<span id="1325">1325</span>
-<span id="1326">1326</span>
-<span id="1327">1327</span>
-<span id="1328">1328</span>
-<span id="1329">1329</span>
-<span id="1330">1330</span>
-<span id="1331">1331</span>
-<span id="1332">1332</span>
-<span id="1333">1333</span>
-<span id="1334">1334</span>
-<span id="1335">1335</span>
-<span id="1336">1336</span>
-<span id="1337">1337</span>
-<span id="1338">1338</span>
-<span id="1339">1339</span>
-<span id="1340">1340</span>
-<span id="1341">1341</span>
-<span id="1342">1342</span>
-<span id="1343">1343</span>
-<span id="1344">1344</span>
-<span id="1345">1345</span>
-<span id="1346">1346</span>
-<span id="1347">1347</span>
-<span id="1348">1348</span>
-<span id="1349">1349</span>
-<span id="1350">1350</span>
-<span id="1351">1351</span>
-<span id="1352">1352</span>
-<span id="1353">1353</span>
-<span id="1354">1354</span>
-<span id="1355">1355</span>
-<span id="1356">1356</span>
-<span id="1357">1357</span>
-<span id="1358">1358</span>
-<span id="1359">1359</span>
-<span id="1360">1360</span>
-<span id="1361">1361</span>
-<span id="1362">1362</span>
-<span id="1363">1363</span>
-<span id="1364">1364</span>
-<span id="1365">1365</span>
-<span id="1366">1366</span>
-<span id="1367">1367</span>
-<span id="1368">1368</span>
-<span id="1369">1369</span>
-<span id="1370">1370</span>
-<span id="1371">1371</span>
-<span id="1372">1372</span>
-<span id="1373">1373</span>
-<span id="1374">1374</span>
-<span id="1375">1375</span>
-<span id="1376">1376</span>
-<span id="1377">1377</span>
-<span id="1378">1378</span>
-<span id="1379">1379</span>
-<span id="1380">1380</span>
-<span id="1381">1381</span>
-<span id="1382">1382</span>
-<span id="1383">1383</span>
-<span id="1384">1384</span>
-<span id="1385">1385</span>
-<span id="1386">1386</span>
-<span id="1387">1387</span>
-<span id="1388">1388</span>
-<span id="1389">1389</span>
-<span id="1390">1390</span>
-<span id="1391">1391</span>
-<span id="1392">1392</span>
-<span id="1393">1393</span>
-<span id="1394">1394</span>
-<span id="1395">1395</span>
-<span id="1396">1396</span>
-<span id="1397">1397</span>
-<span id="1398">1398</span>
-<span id="1399">1399</span>
-<span id="1400">1400</span>
-<span id="1401">1401</span>
-<span id="1402">1402</span>
-<span id="1403">1403</span>
-<span id="1404">1404</span>
-<span id="1405">1405</span>
-<span id="1406">1406</span>
-<span id="1407">1407</span>
-<span id="1408">1408</span>
-<span id="1409">1409</span>
-<span id="1410">1410</span>
-<span id="1411">1411</span>
-<span id="1412">1412</span>
-<span id="1413">1413</span>
-<span id="1414">1414</span>
-<span id="1415">1415</span>
-<span id="1416">1416</span>
-<span id="1417">1417</span>
-<span id="1418">1418</span>
-<span id="1419">1419</span>
-<span id="1420">1420</span>
-<span id="1421">1421</span>
-<span id="1422">1422</span>
-<span id="1423">1423</span>
-<span id="1424">1424</span>
-<span id="1425">1425</span>
-<span id="1426">1426</span>
-<span id="1427">1427</span>
-<span id="1428">1428</span>
-<span id="1429">1429</span>
-<span id="1430">1430</span>
-<span id="1431">1431</span>
-<span id="1432">1432</span>
-<span id="1433">1433</span>
-<span id="1434">1434</span>
-<span id="1435">1435</span>
-<span id="1436">1436</span>
-<span id="1437">1437</span>
-<span id="1438">1438</span>
-<span id="1439">1439</span>
-<span id="1440">1440</span>
-<span id="1441">1441</span>
-<span id="1442">1442</span>
-<span id="1443">1443</span>
-<span id="1444">1444</span>
-<span id="1445">1445</span>
-<span id="1446">1446</span>
-<span id="1447">1447</span>
-<span id="1448">1448</span>
-<span id="1449">1449</span>
-<span id="1450">1450</span>
-<span id="1451">1451</span>
-<span id="1452">1452</span>
-<span id="1453">1453</span>
-<span id="1454">1454</span>
-<span id="1455">1455</span>
-<span id="1456">1456</span>
-<span id="1457">1457</span>
-<span id="1458">1458</span>
-<span id="1459">1459</span>
-<span id="1460">1460</span>
-<span id="1461">1461</span>
-<span id="1462">1462</span>
-<span id="1463">1463</span>
-<span id="1464">1464</span>
-<span id="1465">1465</span>
-<span id="1466">1466</span>
-<span id="1467">1467</span>
-<span id="1468">1468</span>
-<span id="1469">1469</span>
-<span id="1470">1470</span>
-<span id="1471">1471</span>
-<span id="1472">1472</span>
-<span id="1473">1473</span>
-<span id="1474">1474</span>
-<span id="1475">1475</span>
-<span id="1476">1476</span>
-<span id="1477">1477</span>
-<span id="1478">1478</span>
-<span id="1479">1479</span>
-<span id="1480">1480</span>
-<span id="1481">1481</span>
-<span id="1482">1482</span>
-<span id="1483">1483</span>
-<span id="1484">1484</span>
-<span id="1485">1485</span>
-<span id="1486">1486</span>
-<span id="1487">1487</span>
-<span id="1488">1488</span>
-<span id="1489">1489</span>
-<span id="1490">1490</span>
-<span id="1491">1491</span>
-<span id="1492">1492</span>
-<span id="1493">1493</span>
-<span id="1494">1494</span>
-<span id="1495">1495</span>
-<span id="1496">1496</span>
-<span id="1497">1497</span>
-<span id="1498">1498</span>
-<span id="1499">1499</span>
-<span id="1500">1500</span>
-<span id="1501">1501</span>
-<span id="1502">1502</span>
-<span id="1503">1503</span>
-<span id="1504">1504</span>
-<span id="1505">1505</span>
-<span id="1506">1506</span>
-<span id="1507">1507</span>
-<span id="1508">1508</span>
-<span id="1509">1509</span>
-<span id="1510">1510</span>
-<span id="1511">1511</span>
-<span id="1512">1512</span>
-<span id="1513">1513</span>
-<span id="1514">1514</span>
-<span id="1515">1515</span>
-<span id="1516">1516</span>
-<span id="1517">1517</span>
-<span id="1518">1518</span>
-<span id="1519">1519</span>
-<span id="1520">1520</span>
-<span id="1521">1521</span>
-<span id="1522">1522</span>
-<span id="1523">1523</span>
-<span id="1524">1524</span>
-<span id="1525">1525</span>
-<span id="1526">1526</span>
-<span id="1527">1527</span>
-<span id="1528">1528</span>
-<span id="1529">1529</span>
-<span id="1530">1530</span>
-<span id="1531">1531</span>
-<span id="1532">1532</span>
-<span id="1533">1533</span>
-<span id="1534">1534</span>
-<span id="1535">1535</span>
-<span id="1536">1536</span>
-<span id="1537">1537</span>
-<span id="1538">1538</span>
-<span id="1539">1539</span>
-<span id="1540">1540</span>
-<span id="1541">1541</span>
-<span id="1542">1542</span>
-<span id="1543">1543</span>
-<span id="1544">1544</span>
-<span id="1545">1545</span>
-<span id="1546">1546</span>
-<span id="1547">1547</span>
-<span id="1548">1548</span>
-<span id="1549">1549</span>
-<span id="1550">1550</span>
-<span id="1551">1551</span>
-<span id="1552">1552</span>
-<span id="1553">1553</span>
-<span id="1554">1554</span>
-<span id="1555">1555</span>
-<span id="1556">1556</span>
-<span id="1557">1557</span>
-<span id="1558">1558</span>
-<span id="1559">1559</span>
-<span id="1560">1560</span>
-<span id="1561">1561</span>
-<span id="1562">1562</span>
-<span id="1563">1563</span>
-<span id="1564">1564</span>
-<span id="1565">1565</span>
-<span id="1566">1566</span>
-<span id="1567">1567</span>
-<span id="1568">1568</span>
-<span id="1569">1569</span>
-<span id="1570">1570</span>
-<span id="1571">1571</span>
-<span id="1572">1572</span>
-<span id="1573">1573</span>
-<span id="1574">1574</span>
-<span id="1575">1575</span>
-<span id="1576">1576</span>
-<span id="1577">1577</span>
-<span id="1578">1578</span>
-<span id="1579">1579</span>
-<span id="1580">1580</span>
-<span id="1581">1581</span>
-<span id="1582">1582</span>
-<span id="1583">1583</span>
-<span id="1584">1584</span>
-<span id="1585">1585</span>
-<span id="1586">1586</span>
-<span id="1587">1587</span>
-<span id="1588">1588</span>
-<span id="1589">1589</span>
-<span id="1590">1590</span>
-<span id="1591">1591</span>
-<span id="1592">1592</span>
-<span id="1593">1593</span>
-<span id="1594">1594</span>
-<span id="1595">1595</span>
-<span id="1596">1596</span>
-<span id="1597">1597</span>
-<span id="1598">1598</span>
-<span id="1599">1599</span>
-<span id="1600">1600</span>
-<span id="1601">1601</span>
-<span id="1602">1602</span>
-<span id="1603">1603</span>
-<span id="1604">1604</span>
-<span id="1605">1605</span>
-<span id="1606">1606</span>
-<span id="1607">1607</span>
-<span id="1608">1608</span>
-<span id="1609">1609</span>
-<span id="1610">1610</span>
-<span id="1611">1611</span>
-<span id="1612">1612</span>
-<span id="1613">1613</span>
-<span id="1614">1614</span>
-<span id="1615">1615</span>
-<span id="1616">1616</span>
-<span id="1617">1617</span>
-<span id="1618">1618</span>
-<span id="1619">1619</span>
-<span id="1620">1620</span>
-<span id="1621">1621</span>
-<span id="1622">1622</span>
-<span id="1623">1623</span>
-<span id="1624">1624</span>
-<span id="1625">1625</span>
-<span id="1626">1626</span>
-<span id="1627">1627</span>
-<span id="1628">1628</span>
-<span id="1629">1629</span>
-<span id="1630">1630</span>
-<span id="1631">1631</span>
-<span id="1632">1632</span>
-<span id="1633">1633</span>
-<span id="1634">1634</span>
-<span id="1635">1635</span>
-<span id="1636">1636</span>
-<span id="1637">1637</span>
-<span id="1638">1638</span>
-<span id="1639">1639</span>
-<span id="1640">1640</span>
-<span id="1641">1641</span>
-<span id="1642">1642</span>
-<span id="1643">1643</span>
-<span id="1644">1644</span>
-<span id="1645">1645</span>
-<span id="1646">1646</span>
-<span id="1647">1647</span>
-<span id="1648">1648</span>
-<span id="1649">1649</span>
-<span id="1650">1650</span>
-<span id="1651">1651</span>
-<span id="1652">1652</span>
-<span id="1653">1653</span>
-<span id="1654">1654</span>
-<span id="1655">1655</span>
-<span id="1656">1656</span>
-<span id="1657">1657</span>
-<span id="1658">1658</span>
-<span id="1659">1659</span>
-<span id="1660">1660</span>
-<span id="1661">1661</span>
-<span id="1662">1662</span>
-<span id="1663">1663</span>
-<span id="1664">1664</span>
-<span id="1665">1665</span>
-<span id="1666">1666</span>
-<span id="1667">1667</span>
-<span id="1668">1668</span>
-<span id="1669">1669</span>
-<span id="1670">1670</span>
-<span id="1671">1671</span>
-<span id="1672">1672</span>
-<span id="1673">1673</span>
-<span id="1674">1674</span>
-<span id="1675">1675</span>
-<span id="1676">1676</span>
-<span id="1677">1677</span>
-<span id="1678">1678</span>
-<span id="1679">1679</span>
-<span id="1680">1680</span>
-<span id="1681">1681</span>
-<span id="1682">1682</span>
-<span id="1683">1683</span>
-<span id="1684">1684</span>
-<span id="1685">1685</span>
-<span id="1686">1686</span>
-<span id="1687">1687</span>
-<span id="1688">1688</span>
-<span id="1689">1689</span>
-<span id="1690">1690</span>
-<span id="1691">1691</span>
-<span id="1692">1692</span>
-<span id="1693">1693</span>
-<span id="1694">1694</span>
-<span id="1695">1695</span>
-<span id="1696">1696</span>
-<span id="1697">1697</span>
-<span id="1698">1698</span>
-<span id="1699">1699</span>
-<span id="1700">1700</span>
-<span id="1701">1701</span>
-<span id="1702">1702</span>
-<span id="1703">1703</span>
-<span id="1704">1704</span>
-<span id="1705">1705</span>
-<span id="1706">1706</span>
-<span id="1707">1707</span>
-<span id="1708">1708</span>
-<span id="1709">1709</span>
-<span id="1710">1710</span>
-<span id="1711">1711</span>
-<span id="1712">1712</span>
-<span id="1713">1713</span>
-<span id="1714">1714</span>
-<span id="1715">1715</span>
-<span id="1716">1716</span>
-<span id="1717">1717</span>
-<span id="1718">1718</span>
-<span id="1719">1719</span>
-<span id="1720">1720</span>
-<span id="1721">1721</span>
-<span id="1722">1722</span>
-<span id="1723">1723</span>
-<span id="1724">1724</span>
-<span id="1725">1725</span>
-<span id="1726">1726</span>
-<span id="1727">1727</span>
-<span id="1728">1728</span>
-<span id="1729">1729</span>
-<span id="1730">1730</span>
-<span id="1731">1731</span>
-<span id="1732">1732</span>
-<span id="1733">1733</span>
-<span id="1734">1734</span>
-<span id="1735">1735</span>
-<span id="1736">1736</span>
-<span id="1737">1737</span>
-<span id="1738">1738</span>
-<span id="1739">1739</span>
-<span id="1740">1740</span>
-<span id="1741">1741</span>
-<span id="1742">1742</span>
-<span id="1743">1743</span>
-<span id="1744">1744</span>
-<span id="1745">1745</span>
-<span id="1746">1746</span>
-<span id="1747">1747</span>
-<span id="1748">1748</span>
-<span id="1749">1749</span>
-<span id="1750">1750</span>
-<span id="1751">1751</span>
-<span id="1752">1752</span>
-<span id="1753">1753</span>
-<span id="1754">1754</span>
-<span id="1755">1755</span>
-<span id="1756">1756</span>
-<span id="1757">1757</span>
-<span id="1758">1758</span>
-<span id="1759">1759</span>
-<span id="1760">1760</span>
-<span id="1761">1761</span>
-<span id="1762">1762</span>
-<span id="1763">1763</span>
-<span id="1764">1764</span>
-<span id="1765">1765</span>
-<span id="1766">1766</span>
-<span id="1767">1767</span>
-<span id="1768">1768</span>
-<span id="1769">1769</span>
-<span id="1770">1770</span>
-<span id="1771">1771</span>
-<span id="1772">1772</span>
-<span id="1773">1773</span>
-<span id="1774">1774</span>
-<span id="1775">1775</span>
-<span id="1776">1776</span>
-<span id="1777">1777</span>
-<span id="1778">1778</span>
-<span id="1779">1779</span>
-<span id="1780">1780</span>
-<span id="1781">1781</span>
-<span id="1782">1782</span>
-<span id="1783">1783</span>
-<span id="1784">1784</span>
-<span id="1785">1785</span>
-<span id="1786">1786</span>
-<span id="1787">1787</span>
-<span id="1788">1788</span>
-<span id="1789">1789</span>
-<span id="1790">1790</span>
-<span id="1791">1791</span>
-<span id="1792">1792</span>
-<span id="1793">1793</span>
-<span id="1794">1794</span>
-<span id="1795">1795</span>
-<span id="1796">1796</span>
-<span id="1797">1797</span>
-<span id="1798">1798</span>
-<span id="1799">1799</span>
-<span id="1800">1800</span>
-<span id="1801">1801</span>
-<span id="1802">1802</span>
-<span id="1803">1803</span>
-<span id="1804">1804</span>
-<span id="1805">1805</span>
-<span id="1806">1806</span>
-<span id="1807">1807</span>
-<span id="1808">1808</span>
-<span id="1809">1809</span>
-<span id="1810">1810</span>
-<span id="1811">1811</span>
-<span id="1812">1812</span>
-<span id="1813">1813</span>
-<span id="1814">1814</span>
-<span id="1815">1815</span>
-<span id="1816">1816</span>
-<span id="1817">1817</span>
-<span id="1818">1818</span>
-<span id="1819">1819</span>
-<span id="1820">1820</span>
-<span id="1821">1821</span>
-<span id="1822">1822</span>
-<span id="1823">1823</span>
-<span id="1824">1824</span>
-<span id="1825">1825</span>
-<span id="1826">1826</span>
-<span id="1827">1827</span>
-<span id="1828">1828</span>
-<span id="1829">1829</span>
-<span id="1830">1830</span>
-<span id="1831">1831</span>
-<span id="1832">1832</span>
-<span id="1833">1833</span>
-<span id="1834">1834</span>
-<span id="1835">1835</span>
-<span id="1836">1836</span>
-<span id="1837">1837</span>
-<span id="1838">1838</span>
-<span id="1839">1839</span>
-<span id="1840">1840</span>
-<span id="1841">1841</span>
-<span id="1842">1842</span>
-<span id="1843">1843</span>
-<span id="1844">1844</span>
-<span id="1845">1845</span>
-<span id="1846">1846</span>
-<span id="1847">1847</span>
-<span id="1848">1848</span>
-<span id="1849">1849</span>
-<span id="1850">1850</span>
-<span id="1851">1851</span>
-<span id="1852">1852</span>
-<span id="1853">1853</span>
-<span id="1854">1854</span>
-<span id="1855">1855</span>
-<span id="1856">1856</span>
-<span id="1857">1857</span>
-<span id="1858">1858</span>
-<span id="1859">1859</span>
-<span id="1860">1860</span>
-<span id="1861">1861</span>
-<span id="1862">1862</span>
-<span id="1863">1863</span>
-<span id="1864">1864</span>
-<span id="1865">1865</span>
-<span id="1866">1866</span>
-<span id="1867">1867</span>
-<span id="1868">1868</span>
-<span id="1869">1869</span>
-<span id="1870">1870</span>
-<span id="1871">1871</span>
-<span id="1872">1872</span>
-<span id="1873">1873</span>
-<span id="1874">1874</span>
-<span id="1875">1875</span>
-<span id="1876">1876</span>
-<span id="1877">1877</span>
-<span id="1878">1878</span>
-<span id="1879">1879</span>
-<span id="1880">1880</span>
-<span id="1881">1881</span>
-<span id="1882">1882</span>
-<span id="1883">1883</span>
-<span id="1884">1884</span>
-<span id="1885">1885</span>
-<span id="1886">1886</span>
-<span id="1887">1887</span>
-<span id="1888">1888</span>
-<span id="1889">1889</span>
-<span id="1890">1890</span>
-<span id="1891">1891</span>
-<span id="1892">1892</span>
-<span id="1893">1893</span>
-<span id="1894">1894</span>
-<span id="1895">1895</span>
-<span id="1896">1896</span>
-<span id="1897">1897</span>
-<span id="1898">1898</span>
-<span id="1899">1899</span>
-<span id="1900">1900</span>
-<span id="1901">1901</span>
-<span id="1902">1902</span>
-<span id="1903">1903</span>
-<span id="1904">1904</span>
-<span id="1905">1905</span>
-<span id="1906">1906</span>
-<span id="1907">1907</span>
-<span id="1908">1908</span>
-<span id="1909">1909</span>
-<span id="1910">1910</span>
-<span id="1911">1911</span>
-<span id="1912">1912</span>
-<span id="1913">1913</span>
-<span id="1914">1914</span>
-<span id="1915">1915</span>
-<span id="1916">1916</span>
-<span id="1917">1917</span>
-<span id="1918">1918</span>
-<span id="1919">1919</span>
-<span id="1920">1920</span>
-<span id="1921">1921</span>
-<span id="1922">1922</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Descriptor policy</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module implements the logic to extract and represent the spending policies of a descriptor</span>
-<span class="doccomment">//! in a more human-readable format.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This is an **EXPERIMENTAL** feature, API and other major changes are expected.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! # use std::sync::Arc;</span>
-<span class="doccomment">//! # use bdk::descriptor::*;</span>
-<span class="doccomment">//! # use bdk::wallet::signer::*;</span>
-<span class="doccomment">//! # use bdk::bitcoin::secp256k1::Secp256k1;</span>
-<span class="doccomment">//! use bdk::descriptor::policy::BuildSatisfaction;</span>
-<span class="doccomment">//! let secp = Secp256k1::new();</span>
-<span class="doccomment">//! let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let (extended_desc, key_map) = ExtendedDescriptor::parse_descriptor(&secp, desc)?;</span>
-<span class="doccomment">//! println!("{:?}", extended_desc);</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let signers = Arc::new(SignersContainer::build(key_map, &extended_desc, &secp));</span>
-<span class="doccomment">//! let policy = extended_desc.extract_policy(&signers, BuildSatisfaction::None, &secp)?;</span>
-<span class="doccomment">//! println!("policy: {}", serde_json::to_string(&policy)?);</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident">std::cmp::max</span>;
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">BTreeMap</span>, <span class="ident">HashSet</span>, <span class="ident">VecDeque</span>};
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
-
-<span class="kw">use</span> <span class="ident">serde::ser::SerializeMap</span>;
-<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Serialize</span>, <span class="ident">Serializer</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::hashes</span>::{<span class="ident">hash160</span>, <span class="ident">ripemd160</span>, <span class="ident">sha256</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32::Fingerprint</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">LockTime</span>, <span class="ident">PublicKey</span>, <span class="ident">Sequence</span>, <span class="ident">XOnlyPublicKey</span>};
-
-<span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{
- <span class="ident">DescriptorPublicKey</span>, <span class="ident">ShInner</span>, <span class="ident">SinglePub</span>, <span class="ident">SinglePubKey</span>, <span class="ident">SortedMultiVec</span>, <span class="ident">WshInner</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/policy.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>policy.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Descriptor policy
+//!
+//! This module implements the logic to extract and represent the spending policies of a descriptor
+//! in a more human-readable format.
+//!
+//! This is an **EXPERIMENTAL** feature, API and other major changes are expected.
+//!
+//! ## Example
+//!
+//! ```
+//! # use std::sync::Arc;
+//! # use bdk::descriptor::*;
+//! # use bdk::wallet::signer::*;
+//! # use bdk::bitcoin::secp256k1::Secp256k1;
+//! use bdk::descriptor::policy::BuildSatisfaction;
+//! let secp = Secp256k1::new();
+//! let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";
+//!
+//! let (extended_desc, key_map) = ExtendedDescriptor::parse_descriptor(&secp, desc)?;
+//! println!("{:?}", extended_desc);
+//!
+//! let signers = Arc::new(SignersContainer::build(key_map, &extended_desc, &secp));
+//! let policy = extended_desc.extract_policy(&signers, BuildSatisfaction::None, &secp)?;
+//! println!("policy: {}", serde_json::to_string(&policy)?);
+//! # Ok::<(), bdk::Error>(())
+//! ```
+
+</span><span class="kw">use </span>std::cmp::max;
+<span class="kw">use </span>std::collections::{BTreeMap, HashSet, VecDeque};
+<span class="kw">use </span>std::fmt;
+
+<span class="kw">use </span>serde::ser::SerializeMap;
+<span class="kw">use </span>serde::{Serialize, Serializer};
+
+<span class="kw">use </span>bitcoin::hashes::{hash160, ripemd160, sha256};
+<span class="kw">use </span>bitcoin::util::bip32::Fingerprint;
+<span class="kw">use </span>bitcoin::{LockTime, PublicKey, Sequence, XOnlyPublicKey};
+
+<span class="kw">use </span>miniscript::descriptor::{
+ DescriptorPublicKey, ShInner, SinglePub, SinglePubKey, SortedMultiVec, WshInner,
};
-<span class="kw">use</span> <span class="ident">miniscript::hash256</span>;
-<span class="kw">use</span> <span class="ident">miniscript</span>::{
- <span class="ident">Descriptor</span>, <span class="ident">Miniscript</span>, <span class="ident">Satisfier</span>, <span class="ident">ScriptContext</span>, <span class="ident">SigType</span>, <span class="ident">Terminal</span>, <span class="ident">ToPublicKey</span>,
+<span class="kw">use </span>miniscript::hash256;
+<span class="kw">use </span>miniscript::{
+ Descriptor, Miniscript, Satisfier, ScriptContext, SigType, Terminal, ToPublicKey,
};
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
-<span class="kw">use</span> <span class="ident">log</span>::{<span class="ident">debug</span>, <span class="ident">error</span>, <span class="ident">info</span>, <span class="ident">trace</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::ExtractPolicy</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys::ExtScriptContext</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::signer</span>::{<span class="ident">SignerId</span>, <span class="ident">SignersContainer</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::utils</span>::{<span class="ident">After</span>, <span class="ident">Older</span>, <span class="ident">SecpCtx</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::checksum::calc_checksum</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::error::Error</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::XKeyUtils</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::psbt</span>::{<span class="ident">Input</span> <span class="kw">as</span> <span class="ident">PsbtInput</span>, <span class="ident">PartiallySignedTransaction</span> <span class="kw">as</span> <span class="ident">Psbt</span>};
-<span class="kw">use</span> <span class="ident">miniscript::psbt::PsbtInputSatisfier</span>;
-
-<span class="doccomment">/// A unique identifier for a key</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>, <span class="ident">Serialize</span>)]</span>
-<span class="attribute">#[<span class="ident">serde</span>(<span class="ident">rename_all</span> <span class="op">=</span> <span class="string">"snake_case"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">PkOrF</span> {
- <span class="doccomment">/// A legacy public key</span>
- <span class="ident">Pubkey</span>(<span class="ident">PublicKey</span>),
- <span class="doccomment">/// A x-only public key</span>
- <span class="ident">XOnlyPubkey</span>(<span class="ident">XOnlyPublicKey</span>),
- <span class="doccomment">/// An extended key fingerprint</span>
- <span class="ident">Fingerprint</span>(<span class="ident">Fingerprint</span>),
+<span class="attr">#[allow(unused_imports)]
+</span><span class="kw">use </span>log::{debug, error, info, trace};
+
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::ExtractPolicy;
+<span class="kw">use </span><span class="kw">crate</span>::keys::ExtScriptContext;
+<span class="kw">use </span><span class="kw">crate</span>::wallet::signer::{SignerId, SignersContainer};
+<span class="kw">use </span><span class="kw">crate</span>::wallet::utils::{After, Older, SecpCtx};
+
+<span class="kw">use </span><span class="kw">super</span>::checksum::calc_checksum;
+<span class="kw">use </span><span class="kw">super</span>::error::Error;
+<span class="kw">use </span><span class="kw">super</span>::XKeyUtils;
+<span class="kw">use </span>bitcoin::util::psbt::{Input <span class="kw">as </span>PsbtInput, PartiallySignedTransaction <span class="kw">as </span>Psbt};
+<span class="kw">use </span>miniscript::psbt::PsbtInputSatisfier;
+
+<span class="doccomment">/// A unique identifier for a key
+</span><span class="attr">#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PkOrF {
+ <span class="doccomment">/// A legacy public key
+ </span>Pubkey(PublicKey),
+ <span class="doccomment">/// A x-only public key
+ </span>XOnlyPubkey(XOnlyPublicKey),
+ <span class="doccomment">/// An extended key fingerprint
+ </span>Fingerprint(Fingerprint),
}
-<span class="kw">impl</span> <span class="ident">PkOrF</span> {
- <span class="kw">fn</span> <span class="ident">from_key</span>(<span class="ident">k</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="self">Self</span> {
- <span class="kw">match</span> <span class="ident">k</span> {
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">key</span>: <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">pk</span>),
+<span class="kw">impl </span>PkOrF {
+ <span class="kw">fn </span>from_key(k: <span class="kw-2">&</span>DescriptorPublicKey, secp: <span class="kw-2">&</span>SecpCtx) -> <span class="self">Self </span>{
+ <span class="kw">match </span>k {
+ DescriptorPublicKey::Single(SinglePub {
+ key: SinglePubKey::FullKey(pk),
..
- }) => <span class="ident">PkOrF::Pubkey</span>(<span class="kw-2">*</span><span class="ident">pk</span>),
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">key</span>: <span class="ident">SinglePubKey::XOnly</span>(<span class="ident">pk</span>),
+ }) => PkOrF::Pubkey(<span class="kw-2">*</span>pk),
+ DescriptorPublicKey::Single(SinglePub {
+ key: SinglePubKey::XOnly(pk),
..
- }) => <span class="ident">PkOrF::XOnlyPubkey</span>(<span class="kw-2">*</span><span class="ident">pk</span>),
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>) => <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">xpub</span>.<span class="ident">root_fingerprint</span>(<span class="ident">secp</span>)),
+ }) => PkOrF::XOnlyPubkey(<span class="kw-2">*</span>pk),
+ DescriptorPublicKey::XPub(xpub) => PkOrF::Fingerprint(xpub.root_fingerprint(secp)),
}
}
}
-<span class="doccomment">/// An item that needs to be satisfied</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Serialize</span>)]</span>
-<span class="attribute">#[<span class="ident">serde</span>(<span class="ident">tag</span> <span class="op">=</span> <span class="string">"type"</span>, <span class="ident">rename_all</span> <span class="op">=</span> <span class="string">"UPPERCASE"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SatisfiableItem</span> {
- <span class="comment">// Leaves</span>
- <span class="doccomment">/// ECDSA Signature for a raw public key</span>
- <span class="ident">EcdsaSignature</span>(<span class="ident">PkOrF</span>),
- <span class="doccomment">/// Schnorr Signature for a raw public key</span>
- <span class="ident">SchnorrSignature</span>(<span class="ident">PkOrF</span>),
- <span class="doccomment">/// SHA256 preimage hash</span>
- <span class="ident">Sha256Preimage</span> {
- <span class="doccomment">/// The digest value</span>
- <span class="ident">hash</span>: <span class="ident">sha256::Hash</span>,
+<span class="doccomment">/// An item that needs to be satisfied
+</span><span class="attr">#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
+#[serde(tag = <span class="string">"type"</span>, rename_all = <span class="string">"UPPERCASE"</span>)]
+</span><span class="kw">pub enum </span>SatisfiableItem {
+ <span class="comment">// Leaves
+ </span><span class="doccomment">/// ECDSA Signature for a raw public key
+ </span>EcdsaSignature(PkOrF),
+ <span class="doccomment">/// Schnorr Signature for a raw public key
+ </span>SchnorrSignature(PkOrF),
+ <span class="doccomment">/// SHA256 preimage hash
+ </span>Sha256Preimage {
+ <span class="doccomment">/// The digest value
+ </span>hash: sha256::Hash,
},
- <span class="doccomment">/// Double SHA256 preimage hash</span>
- <span class="ident">Hash256Preimage</span> {
- <span class="doccomment">/// The digest value</span>
- <span class="ident">hash</span>: <span class="ident">hash256::Hash</span>,
+ <span class="doccomment">/// Double SHA256 preimage hash
+ </span>Hash256Preimage {
+ <span class="doccomment">/// The digest value
+ </span>hash: hash256::Hash,
},
- <span class="doccomment">/// RIPEMD160 preimage hash</span>
- <span class="ident">Ripemd160Preimage</span> {
- <span class="doccomment">/// The digest value</span>
- <span class="ident">hash</span>: <span class="ident">ripemd160::Hash</span>,
+ <span class="doccomment">/// RIPEMD160 preimage hash
+ </span>Ripemd160Preimage {
+ <span class="doccomment">/// The digest value
+ </span>hash: ripemd160::Hash,
},
- <span class="doccomment">/// SHA256 then RIPEMD160 preimage hash</span>
- <span class="ident">Hash160Preimage</span> {
- <span class="doccomment">/// The digest value</span>
- <span class="ident">hash</span>: <span class="ident">hash160::Hash</span>,
+ <span class="doccomment">/// SHA256 then RIPEMD160 preimage hash
+ </span>Hash160Preimage {
+ <span class="doccomment">/// The digest value
+ </span>hash: hash160::Hash,
},
- <span class="doccomment">/// Absolute timeclock timestamp</span>
- <span class="ident">AbsoluteTimelock</span> {
- <span class="doccomment">/// The timelock value</span>
- <span class="ident">value</span>: <span class="ident">LockTime</span>,
+ <span class="doccomment">/// Absolute timeclock timestamp
+ </span>AbsoluteTimelock {
+ <span class="doccomment">/// The timelock value
+ </span>value: LockTime,
},
- <span class="doccomment">/// Relative timelock locktime</span>
- <span class="ident">RelativeTimelock</span> {
- <span class="doccomment">/// The timelock value</span>
- <span class="ident">value</span>: <span class="ident">Sequence</span>,
+ <span class="doccomment">/// Relative timelock locktime
+ </span>RelativeTimelock {
+ <span class="doccomment">/// The timelock value
+ </span>value: Sequence,
},
- <span class="doccomment">/// Multi-signature public keys with threshold count</span>
- <span class="ident">Multisig</span> {
- <span class="doccomment">/// The raw public key or extended key fingerprint</span>
- <span class="ident">keys</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">PkOrF</span><span class="op">></span>,
- <span class="doccomment">/// The required threshold count</span>
- <span class="ident">threshold</span>: <span class="ident">usize</span>,
+ <span class="doccomment">/// Multi-signature public keys with threshold count
+ </span>Multisig {
+ <span class="doccomment">/// The raw public key or extended key fingerprint
+ </span>keys: Vec<PkOrF>,
+ <span class="doccomment">/// The required threshold count
+ </span>threshold: usize,
},
- <span class="comment">// Complex item</span>
- <span class="doccomment">/// Threshold items with threshold count</span>
- <span class="ident">Thresh</span> {
- <span class="doccomment">/// The policy items</span>
- <span class="ident">items</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>,
- <span class="doccomment">/// The required threshold count</span>
- <span class="ident">threshold</span>: <span class="ident">usize</span>,
+ <span class="comment">// Complex item
+ </span><span class="doccomment">/// Threshold items with threshold count
+ </span>Thresh {
+ <span class="doccomment">/// The policy items
+ </span>items: Vec<Policy>,
+ <span class="doccomment">/// The required threshold count
+ </span>threshold: usize,
},
}
-<span class="kw">impl</span> <span class="ident">SatisfiableItem</span> {
- <span class="doccomment">/// Returns whether the [`SatisfiableItem`] is a leaf item</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_leaf</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="op">!</span><span class="macro">matches!</span>(
+<span class="kw">impl </span>SatisfiableItem {
+ <span class="doccomment">/// Returns whether the [`SatisfiableItem`] is a leaf item
+ </span><span class="kw">pub fn </span>is_leaf(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ !<span class="macro">matches!</span>(
<span class="self">self</span>,
- <span class="ident">SatisfiableItem::Thresh</span> {
- <span class="ident">items</span>: <span class="kw">_</span>,
- <span class="ident">threshold</span>: <span class="kw">_</span>,
+ SatisfiableItem::Thresh {
+ items: <span class="kw">_</span>,
+ threshold: <span class="kw">_</span>,
}
)
}
- <span class="doccomment">/// Returns a unique id for the [`SatisfiableItem`]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">String</span> {
- <span class="ident">calc_checksum</span>(<span class="kw-2">&</span><span class="ident">serde_json::to_string</span>(<span class="self">self</span>).<span class="ident">expect</span>(<span class="string">"Failed to serialize a SatisfiableItem"</span>))
- .<span class="ident">expect</span>(<span class="string">"Failed to compute a SatisfiableItem id"</span>)
+ <span class="doccomment">/// Returns a unique id for the [`SatisfiableItem`]
+ </span><span class="kw">pub fn </span>id(<span class="kw-2">&</span><span class="self">self</span>) -> String {
+ calc_checksum(<span class="kw-2">&</span>serde_json::to_string(<span class="self">self</span>).expect(<span class="string">"Failed to serialize a SatisfiableItem"</span>))
+ .expect(<span class="string">"Failed to compute a SatisfiableItem id"</span>)
}
}
-<span class="kw">fn</span> <span class="ident">combinations</span>(<span class="ident">vec</span>: <span class="kw-2">&</span>[<span class="ident">usize</span>], <span class="ident">size</span>: <span class="ident">usize</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span><span class="op">></span> {
- <span class="macro">assert!</span>(<span class="ident">vec</span>.<span class="ident">len</span>() <span class="op">></span><span class="op">=</span> <span class="ident">size</span>);
+<span class="kw">fn </span>combinations(vec: <span class="kw-2">&</span>[usize], size: usize) -> Vec<Vec<usize>> {
+ <span class="macro">assert!</span>(vec.len() >= size);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">answer</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>answer = Vec::new();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">queue</span> <span class="op">=</span> <span class="ident">VecDeque::new</span>();
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">val</span>) <span class="kw">in</span> <span class="ident">vec</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">new_vec</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">size</span>);
- <span class="ident">new_vec</span>.<span class="ident">push</span>(<span class="kw-2">*</span><span class="ident">val</span>);
- <span class="ident">queue</span>.<span class="ident">push_back</span>((<span class="ident">index</span>, <span class="ident">new_vec</span>));
+ <span class="kw">let </span><span class="kw-2">mut </span>queue = VecDeque::new();
+ <span class="kw">for </span>(index, val) <span class="kw">in </span>vec.iter().enumerate() {
+ <span class="kw">let </span><span class="kw-2">mut </span>new_vec = Vec::with_capacity(size);
+ new_vec.push(<span class="kw-2">*</span>val);
+ queue.push_back((index, new_vec));
}
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">index</span>, <span class="ident">vals</span>)) <span class="op">=</span> <span class="ident">queue</span>.<span class="ident">pop_front</span>() {
- <span class="kw">if</span> <span class="ident">vals</span>.<span class="ident">len</span>() <span class="op">></span><span class="op">=</span> <span class="ident">size</span> {
- <span class="ident">answer</span>.<span class="ident">push</span>(<span class="ident">vals</span>);
- } <span class="kw">else</span> {
- <span class="kw">for</span> (<span class="ident">new_index</span>, <span class="ident">val</span>) <span class="kw">in</span> <span class="ident">vec</span>.<span class="ident">iter</span>().<span class="ident">skip</span>(<span class="ident">index</span> <span class="op">+</span> <span class="number">1</span>).<span class="ident">enumerate</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cloned</span> <span class="op">=</span> <span class="ident">vals</span>.<span class="ident">clone</span>();
- <span class="ident">cloned</span>.<span class="ident">push</span>(<span class="kw-2">*</span><span class="ident">val</span>);
- <span class="ident">queue</span>.<span class="ident">push_front</span>((<span class="ident">new_index</span>, <span class="ident">cloned</span>));
+ <span class="kw">while let </span><span class="prelude-val">Some</span>((index, vals)) = queue.pop_front() {
+ <span class="kw">if </span>vals.len() >= size {
+ answer.push(vals);
+ } <span class="kw">else </span>{
+ <span class="kw">for </span>(new_index, val) <span class="kw">in </span>vec.iter().skip(index + <span class="number">1</span>).enumerate() {
+ <span class="kw">let </span><span class="kw-2">mut </span>cloned = vals.clone();
+ cloned.push(<span class="kw-2">*</span>val);
+ queue.push_front((new_index, cloned));
}
}
}
- <span class="ident">answer</span>
+ answer
}
-<span class="kw">fn</span> <span class="ident">mix</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">Clone</span><span class="op">></span>(<span class="ident">vec</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">T</span><span class="op">></span><span class="op">></span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">T</span><span class="op">></span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">vec</span>.<span class="ident">is_empty</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">vec</span>.<span class="ident">iter</span>().<span class="ident">any</span>(<span class="ident">Vec::is_empty</span>) {
- <span class="kw">return</span> <span class="macro">vec!</span>[];
+<span class="kw">fn </span>mix<T: Clone>(vec: Vec<Vec<T>>) -> Vec<Vec<T>> {
+ <span class="kw">if </span>vec.is_empty() || vec.iter().any(Vec::is_empty) {
+ <span class="kw">return </span><span class="macro">vec!</span>[];
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">answer</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
- <span class="kw">let</span> <span class="ident">size</span> <span class="op">=</span> <span class="ident">vec</span>.<span class="ident">len</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>answer = Vec::new();
+ <span class="kw">let </span>size = vec.len();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">queue</span> <span class="op">=</span> <span class="ident">VecDeque::new</span>();
- <span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">vec</span>[<span class="number">0</span>] {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">new_vec</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">size</span>);
- <span class="ident">new_vec</span>.<span class="ident">push</span>(<span class="ident">i</span>.<span class="ident">clone</span>());
- <span class="ident">queue</span>.<span class="ident">push_back</span>(<span class="ident">new_vec</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>queue = VecDeque::new();
+ <span class="kw">for </span>i <span class="kw">in </span><span class="kw-2">&</span>vec[<span class="number">0</span>] {
+ <span class="kw">let </span><span class="kw-2">mut </span>new_vec = Vec::with_capacity(size);
+ new_vec.push(i.clone());
+ queue.push_back(new_vec);
}
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">vals</span>) <span class="op">=</span> <span class="ident">queue</span>.<span class="ident">pop_front</span>() {
- <span class="kw">if</span> <span class="ident">vals</span>.<span class="ident">len</span>() <span class="op">></span><span class="op">=</span> <span class="ident">size</span> {
- <span class="ident">answer</span>.<span class="ident">push</span>(<span class="ident">vals</span>);
- } <span class="kw">else</span> {
- <span class="kw">let</span> <span class="ident">level</span> <span class="op">=</span> <span class="ident">vals</span>.<span class="ident">len</span>();
- <span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">vec</span>[<span class="ident">level</span>] {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cloned</span> <span class="op">=</span> <span class="ident">vals</span>.<span class="ident">clone</span>();
- <span class="ident">cloned</span>.<span class="ident">push</span>(<span class="ident">i</span>.<span class="ident">clone</span>());
- <span class="ident">queue</span>.<span class="ident">push_front</span>(<span class="ident">cloned</span>);
+ <span class="kw">while let </span><span class="prelude-val">Some</span>(vals) = queue.pop_front() {
+ <span class="kw">if </span>vals.len() >= size {
+ answer.push(vals);
+ } <span class="kw">else </span>{
+ <span class="kw">let </span>level = vals.len();
+ <span class="kw">for </span>i <span class="kw">in </span><span class="kw-2">&</span>vec[level] {
+ <span class="kw">let </span><span class="kw-2">mut </span>cloned = vals.clone();
+ cloned.push(i.clone());
+ queue.push_front(cloned);
}
}
}
- <span class="ident">answer</span>
+ answer
}
-<span class="doccomment">/// Type for a map of sets of [`Condition`] items keyed by each set's index</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">ConditionMap</span> <span class="op">=</span> <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">usize</span>, <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Condition</span><span class="op">></span><span class="op">></span>;
-<span class="doccomment">/// Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set's indexes</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">FoldedConditionMap</span> <span class="op">=</span> <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>, <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Condition</span><span class="op">></span><span class="op">></span>;
-
-<span class="kw">fn</span> <span class="ident">serialize_folded_cond_map</span><span class="op"><</span><span class="ident">S</span><span class="op">></span>(
- <span class="ident">input_map</span>: <span class="kw-2">&</span><span class="ident">FoldedConditionMap</span>,
- <span class="ident">serializer</span>: <span class="ident">S</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">S::Ok</span>, <span class="ident">S::Error</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">S</span>: <span class="ident">Serializer</span>,
+<span class="doccomment">/// Type for a map of sets of [`Condition`] items keyed by each set's index
+</span><span class="kw">pub type </span>ConditionMap = BTreeMap<usize, HashSet<Condition>>;
+<span class="doccomment">/// Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set's indexes
+</span><span class="kw">pub type </span>FoldedConditionMap = BTreeMap<Vec<usize>, HashSet<Condition>>;
+
+<span class="kw">fn </span>serialize_folded_cond_map<S>(
+ input_map: <span class="kw-2">&</span>FoldedConditionMap,
+ serializer: S,
+) -> <span class="prelude-ty">Result</span><S::Ok, S::Error>
+<span class="kw">where
+ </span>S: Serializer,
{
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">map</span> <span class="op">=</span> <span class="ident">serializer</span>.<span class="ident">serialize_map</span>(<span class="prelude-val">Some</span>(<span class="ident">input_map</span>.<span class="ident">len</span>()))<span class="question-mark">?</span>;
- <span class="kw">for</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="kw">in</span> <span class="ident">input_map</span> {
- <span class="kw">let</span> <span class="ident">k_string</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">"{:?}"</span>, <span class="ident">k</span>);
- <span class="ident">map</span>.<span class="ident">serialize_entry</span>(<span class="kw-2">&</span><span class="ident">k_string</span>, <span class="ident">v</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>map = serializer.serialize_map(<span class="prelude-val">Some</span>(input_map.len()))<span class="question-mark">?</span>;
+ <span class="kw">for </span>(k, v) <span class="kw">in </span>input_map {
+ <span class="kw">let </span>k_string = <span class="macro">format!</span>(<span class="string">"{:?}"</span>, k);
+ map.serialize_entry(<span class="kw-2">&</span>k_string, v)<span class="question-mark">?</span>;
}
- <span class="ident">map</span>.<span class="ident">end</span>()
+ map.end()
}
-<span class="doccomment">/// Represent if and how much a policy item is satisfied by the wallet's descriptor</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Serialize</span>)]</span>
-<span class="attribute">#[<span class="ident">serde</span>(<span class="ident">tag</span> <span class="op">=</span> <span class="string">"type"</span>, <span class="ident">rename_all</span> <span class="op">=</span> <span class="string">"UPPERCASE"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Satisfaction</span> {
- <span class="doccomment">/// Only a partial satisfaction of some kind of threshold policy</span>
- <span class="ident">Partial</span> {
- <span class="doccomment">/// Total number of items</span>
- <span class="ident">n</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// Threshold</span>
- <span class="ident">m</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// The items that can be satisfied by the descriptor or are satisfied in the PSBT</span>
- <span class="ident">items</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>,
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="doccomment">/// Whether the items are sorted in lexicographic order (used by `sortedmulti`)</span>
- <span class="ident">sorted</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>,
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"BTreeMap::is_empty"</span>)]</span>
- <span class="doccomment">/// Extra conditions that also need to be satisfied</span>
- <span class="ident">conditions</span>: <span class="ident">ConditionMap</span>,
+<span class="doccomment">/// Represent if and how much a policy item is satisfied by the wallet's descriptor
+</span><span class="attr">#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
+#[serde(tag = <span class="string">"type"</span>, rename_all = <span class="string">"UPPERCASE"</span>)]
+</span><span class="kw">pub enum </span>Satisfaction {
+ <span class="doccomment">/// Only a partial satisfaction of some kind of threshold policy
+ </span>Partial {
+ <span class="doccomment">/// Total number of items
+ </span>n: usize,
+ <span class="doccomment">/// Threshold
+ </span>m: usize,
+ <span class="doccomment">/// The items that can be satisfied by the descriptor or are satisfied in the PSBT
+ </span>items: Vec<usize>,
+ <span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="doccomment">/// Whether the items are sorted in lexicographic order (used by `sortedmulti`)
+ </span>sorted: <span class="prelude-ty">Option</span><bool>,
+ <span class="attr">#[serde(skip_serializing_if = <span class="string">"BTreeMap::is_empty"</span>)]
+ </span><span class="doccomment">/// Extra conditions that also need to be satisfied
+ </span>conditions: ConditionMap,
},
- <span class="doccomment">/// Can reach the threshold of some kind of threshold policy</span>
- <span class="ident">PartialComplete</span> {
- <span class="doccomment">/// Total number of items</span>
- <span class="ident">n</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// Threshold</span>
- <span class="ident">m</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// The items that can be satisfied by the descriptor</span>
- <span class="ident">items</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>,
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="doccomment">/// Whether the items are sorted in lexicographic order (used by `sortedmulti`)</span>
- <span class="ident">sorted</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>,
- <span class="attribute">#[<span class="ident">serde</span>(
- <span class="ident">serialize_with</span> <span class="op">=</span> <span class="string">"serialize_folded_cond_map"</span>,
- <span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"BTreeMap::is_empty"</span>
- )]</span>
- <span class="doccomment">/// Extra conditions that also need to be satisfied</span>
- <span class="ident">conditions</span>: <span class="ident">FoldedConditionMap</span>,
+ <span class="doccomment">/// Can reach the threshold of some kind of threshold policy
+ </span>PartialComplete {
+ <span class="doccomment">/// Total number of items
+ </span>n: usize,
+ <span class="doccomment">/// Threshold
+ </span>m: usize,
+ <span class="doccomment">/// The items that can be satisfied by the descriptor
+ </span>items: Vec<usize>,
+ <span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="doccomment">/// Whether the items are sorted in lexicographic order (used by `sortedmulti`)
+ </span>sorted: <span class="prelude-ty">Option</span><bool>,
+ <span class="attr">#[serde(
+ serialize_with = <span class="string">"serialize_folded_cond_map"</span>,
+ skip_serializing_if = <span class="string">"BTreeMap::is_empty"
+ </span>)]
+ </span><span class="doccomment">/// Extra conditions that also need to be satisfied
+ </span>conditions: FoldedConditionMap,
},
- <span class="doccomment">/// Can satisfy the policy item</span>
- <span class="ident">Complete</span> {
- <span class="doccomment">/// Extra conditions that also need to be satisfied</span>
- <span class="ident">condition</span>: <span class="ident">Condition</span>,
+ <span class="doccomment">/// Can satisfy the policy item
+ </span>Complete {
+ <span class="doccomment">/// Extra conditions that also need to be satisfied
+ </span>condition: Condition,
},
- <span class="doccomment">/// Cannot satisfy or contribute to the policy item</span>
- <span class="prelude-val">None</span>,
+ <span class="doccomment">/// Cannot satisfy or contribute to the policy item
+ </span><span class="prelude-val">None</span>,
}
-<span class="kw">impl</span> <span class="ident">Satisfaction</span> {
- <span class="doccomment">/// Returns whether the [`Satisfaction`] is a leaf item</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_leaf</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">Satisfaction::None</span> <span class="op">|</span> <span class="ident">Satisfaction::Complete</span> { .. } => <span class="bool-val">true</span>,
- <span class="ident">Satisfaction::PartialComplete</span> { .. } <span class="op">|</span> <span class="ident">Satisfaction::Partial</span> { .. } => <span class="bool-val">false</span>,
+<span class="kw">impl </span>Satisfaction {
+ <span class="doccomment">/// Returns whether the [`Satisfaction`] is a leaf item
+ </span><span class="kw">pub fn </span>is_leaf(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="kw">match </span><span class="self">self </span>{
+ Satisfaction::None | Satisfaction::Complete { .. } => <span class="bool-val">true</span>,
+ Satisfaction::PartialComplete { .. } | Satisfaction::Partial { .. } => <span class="bool-val">false</span>,
}
}
- <span class="comment">// add `inner` as one of self's partial items. this only makes sense on partials</span>
- <span class="kw">fn</span> <span class="ident">add</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">inner</span>: <span class="kw-2">&</span><span class="ident">Satisfaction</span>, <span class="ident">inner_index</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">Satisfaction::None</span> <span class="op">|</span> <span class="ident">Satisfaction::Complete</span> { .. } => <span class="prelude-val">Err</span>(<span class="ident">PolicyError::AddOnLeaf</span>),
- <span class="ident">Satisfaction::PartialComplete</span> { .. } => <span class="prelude-val">Err</span>(<span class="ident">PolicyError::AddOnPartialComplete</span>),
- <span class="ident">Satisfaction::Partial</span> {
- <span class="ident">n</span>,
- <span class="kw-2">ref</span> <span class="kw-2">mut</span> <span class="ident">conditions</span>,
- <span class="kw-2">ref</span> <span class="kw-2">mut</span> <span class="ident">items</span>,
+ <span class="comment">// add `inner` as one of self's partial items. this only makes sense on partials
+ </span><span class="kw">fn </span>add(<span class="kw-2">&mut </span><span class="self">self</span>, inner: <span class="kw-2">&</span>Satisfaction, inner_index: usize) -> <span class="prelude-ty">Result</span><(), PolicyError> {
+ <span class="kw">match </span><span class="self">self </span>{
+ Satisfaction::None | Satisfaction::Complete { .. } => <span class="prelude-val">Err</span>(PolicyError::AddOnLeaf),
+ Satisfaction::PartialComplete { .. } => <span class="prelude-val">Err</span>(PolicyError::AddOnPartialComplete),
+ Satisfaction::Partial {
+ n,
+ <span class="kw-2">ref mut </span>conditions,
+ <span class="kw-2">ref mut </span>items,
..
} => {
- <span class="kw">if</span> <span class="ident">inner_index</span> <span class="op">></span><span class="op">=</span> <span class="kw-2">*</span><span class="ident">n</span> <span class="op">|</span><span class="op">|</span> <span class="ident">items</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">inner_index</span>) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">PolicyError::IndexOutOfRange</span>(<span class="ident">inner_index</span>));
+ <span class="kw">if </span>inner_index >= <span class="kw-2">*</span>n || items.contains(<span class="kw-2">&</span>inner_index) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(PolicyError::IndexOutOfRange(inner_index));
}
- <span class="kw">match</span> <span class="ident">inner</span> {
- <span class="comment">// not relevant if not completed yet</span>
- <span class="ident">Satisfaction::None</span> <span class="op">|</span> <span class="ident">Satisfaction::Partial</span> { .. } => <span class="kw">return</span> <span class="prelude-val">Ok</span>(()),
- <span class="ident">Satisfaction::Complete</span> { <span class="ident">condition</span> } => {
- <span class="ident">items</span>.<span class="ident">push</span>(<span class="ident">inner_index</span>);
- <span class="ident">conditions</span>.<span class="ident">insert</span>(<span class="ident">inner_index</span>, <span class="macro">vec!</span>[<span class="kw-2">*</span><span class="ident">condition</span>].<span class="ident">into_iter</span>().<span class="ident">collect</span>());
+ <span class="kw">match </span>inner {
+ <span class="comment">// not relevant if not completed yet
+ </span>Satisfaction::None | Satisfaction::Partial { .. } => <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
+ Satisfaction::Complete { condition } => {
+ items.push(inner_index);
+ conditions.insert(inner_index, <span class="macro">vec!</span>[<span class="kw-2">*</span>condition].into_iter().collect());
}
- <span class="ident">Satisfaction::PartialComplete</span> {
- <span class="ident">conditions</span>: <span class="ident">other_conditions</span>,
+ Satisfaction::PartialComplete {
+ conditions: other_conditions,
..
} => {
- <span class="ident">items</span>.<span class="ident">push</span>(<span class="ident">inner_index</span>);
- <span class="kw">let</span> <span class="ident">conditions_set</span> <span class="op">=</span> <span class="ident">other_conditions</span>
- .<span class="ident">values</span>()
- .<span class="ident">fold</span>(<span class="ident">HashSet::new</span>(), <span class="op">|</span><span class="ident">set</span>, <span class="ident">i</span><span class="op">|</span> <span class="ident">set</span>.<span class="ident">union</span>(<span class="ident">i</span>).<span class="ident">cloned</span>().<span class="ident">collect</span>());
- <span class="ident">conditions</span>.<span class="ident">insert</span>(<span class="ident">inner_index</span>, <span class="ident">conditions_set</span>);
+ items.push(inner_index);
+ <span class="kw">let </span>conditions_set = other_conditions
+ .values()
+ .fold(HashSet::new(), |set, i| set.union(i).cloned().collect());
+ conditions.insert(inner_index, conditions_set);
}
}
}
}
- <span class="kw">fn</span> <span class="ident">finalize</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) {
- <span class="comment">// if partial try to bump it to a partialcomplete</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">Satisfaction::Partial</span> {
- <span class="ident">n</span>,
- <span class="ident">m</span>,
- <span class="ident">items</span>,
- <span class="ident">conditions</span>,
- <span class="ident">sorted</span>,
- } <span class="op">=</span> <span class="self">self</span>
- {
- <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">></span><span class="op">=</span> <span class="kw-2">*</span><span class="ident">m</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">map</span> <span class="op">=</span> <span class="ident">BTreeMap::new</span>();
- <span class="kw">let</span> <span class="ident">indexes</span> <span class="op">=</span> <span class="ident">combinations</span>(<span class="ident">items</span>, <span class="kw-2">*</span><span class="ident">m</span>);
- <span class="comment">// `indexes` at this point is a Vec<Vec<usize>>, with the "n choose k" of items (m of n)</span>
- <span class="ident">indexes</span>
- .<span class="ident">into_iter</span>()
- <span class="comment">// .inspect(|x| println!("--- orig --- {:?}", x))</span>
- <span class="comment">// we map each of the combinations of elements into a tuple of ([chosen items], [conditions]). unfortunately, those items have potentially more than one</span>
- <span class="comment">// condition (think about ORs), so we also use `mix` to expand those, i.e. [[0], [1, 2]] becomes [[0, 1], [0, 2]]. This is necessary to make sure that we</span>
- <span class="comment">// consider every possible options and check whether or not they are compatible.</span>
- <span class="comment">// since this step can turn one item of the iterator into multiple ones, we use `flat_map()` to expand them out</span>
- .<span class="ident">flat_map</span>(<span class="op">|</span><span class="ident">i_vec</span><span class="op">|</span> {
- <span class="ident">mix</span>(<span class="ident">i_vec</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> {
- <span class="ident">conditions</span>
- .<span class="ident">get</span>(<span class="ident">i</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">set</span><span class="op">|</span> <span class="ident">set</span>.<span class="ident">clone</span>().<span class="ident">into_iter</span>().<span class="ident">collect</span>())
- .<span class="ident">unwrap_or_default</span>()
+ <span class="kw">fn </span>finalize(<span class="kw-2">&mut </span><span class="self">self</span>) {
+ <span class="comment">// if partial try to bump it to a partialcomplete
+ </span><span class="kw">if let </span>Satisfaction::Partial {
+ n,
+ m,
+ items,
+ conditions,
+ sorted,
+ } = <span class="self">self
+ </span>{
+ <span class="kw">if </span>items.len() >= <span class="kw-2">*</span>m {
+ <span class="kw">let </span><span class="kw-2">mut </span>map = BTreeMap::new();
+ <span class="kw">let </span>indexes = combinations(items, <span class="kw-2">*</span>m);
+ <span class="comment">// `indexes` at this point is a Vec<Vec<usize>>, with the "n choose k" of items (m of n)
+ </span>indexes
+ .into_iter()
+ <span class="comment">// .inspect(|x| println!("--- orig --- {:?}", x))
+ // we map each of the combinations of elements into a tuple of ([chosen items], [conditions]). unfortunately, those items have potentially more than one
+ // condition (think about ORs), so we also use `mix` to expand those, i.e. [[0], [1, 2]] becomes [[0, 1], [0, 2]]. This is necessary to make sure that we
+ // consider every possible options and check whether or not they are compatible.
+ // since this step can turn one item of the iterator into multiple ones, we use `flat_map()` to expand them out
+ </span>.flat_map(|i_vec| {
+ mix(i_vec
+ .iter()
+ .map(|i| {
+ conditions
+ .get(i)
+ .map(|set| set.clone().into_iter().collect())
+ .unwrap_or_default()
})
- .<span class="ident">collect</span>())
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> (<span class="ident">i_vec</span>.<span class="ident">clone</span>(), <span class="ident">x</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">Condition</span><span class="op">></span>)<span class="op">></span><span class="op">></span>()
+ .collect())
+ .into_iter()
+ .map(|x| (i_vec.clone(), x))
+ .collect::<Vec<(Vec<usize>, Vec<Condition>)>>()
})
- <span class="comment">// .inspect(|x| println!("flat {:?}", x))</span>
- <span class="comment">// try to fold all the conditions for this specific combination of indexes/options. if they are not compatible, try_fold will be Err</span>
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">key</span>, <span class="ident">val</span>)<span class="op">|</span> {
+ <span class="comment">// .inspect(|x| println!("flat {:?}", x))
+ // try to fold all the conditions for this specific combination of indexes/options. if they are not compatible, try_fold will be Err
+ </span>.map(|(key, val)| {
(
- <span class="ident">key</span>,
- <span class="ident">val</span>.<span class="ident">into_iter</span>()
- .<span class="ident">try_fold</span>(<span class="ident">Condition::default</span>(), <span class="op">|</span><span class="ident">acc</span>, <span class="ident">v</span><span class="op">|</span> <span class="ident">acc</span>.<span class="ident">merge</span>(<span class="kw-2">&</span><span class="ident">v</span>)),
+ key,
+ val.into_iter()
+ .try_fold(Condition::default(), |acc, v| acc.merge(<span class="kw-2">&</span>v)),
)
})
- <span class="comment">// .inspect(|x| println!("try_fold {:?}", x))</span>
- <span class="comment">// filter out all the incompatible combinations</span>
- .<span class="ident">filter</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">val</span>)<span class="op">|</span> <span class="ident">val</span>.<span class="ident">is_ok</span>())
- <span class="comment">// .inspect(|x| println!("filter {:?}", x))</span>
- <span class="comment">// push them into the map</span>
- .<span class="ident">for_each</span>(<span class="op">|</span>(<span class="ident">key</span>, <span class="ident">val</span>)<span class="op">|</span> {
- <span class="ident">map</span>.<span class="ident">entry</span>(<span class="ident">key</span>)
- .<span class="ident">or_insert_with</span>(<span class="ident">HashSet::new</span>)
- .<span class="ident">insert</span>(<span class="ident">val</span>.<span class="ident">unwrap</span>());
+ <span class="comment">// .inspect(|x| println!("try_fold {:?}", x))
+ // filter out all the incompatible combinations
+ </span>.filter(|(<span class="kw">_</span>, val)| val.is_ok())
+ <span class="comment">// .inspect(|x| println!("filter {:?}", x))
+ // push them into the map
+ </span>.for_each(|(key, val)| {
+ map.entry(key)
+ .or_insert_with(HashSet::new)
+ .insert(val.unwrap());
});
- <span class="comment">// TODO: if the map is empty, the conditions are not compatible, return an error?</span>
- <span class="kw-2">*</span><span class="self">self</span> <span class="op">=</span> <span class="ident">Satisfaction::PartialComplete</span> {
- <span class="ident">n</span>: <span class="kw-2">*</span><span class="ident">n</span>,
- <span class="ident">m</span>: <span class="kw-2">*</span><span class="ident">m</span>,
- <span class="ident">items</span>: <span class="ident">items</span>.<span class="ident">clone</span>(),
- <span class="ident">conditions</span>: <span class="ident">map</span>,
- <span class="ident">sorted</span>: <span class="kw-2">*</span><span class="ident">sorted</span>,
+ <span class="comment">// TODO: if the map is empty, the conditions are not compatible, return an error?
+ </span><span class="kw-2">*</span><span class="self">self </span>= Satisfaction::PartialComplete {
+ n: <span class="kw-2">*</span>n,
+ m: <span class="kw-2">*</span>m,
+ items: items.clone(),
+ conditions: map,
+ sorted: <span class="kw-2">*</span>sorted,
};
}
}
}
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Satisfaction</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">other</span>: <span class="ident">bool</span>) -> <span class="self">Self</span> {
- <span class="kw">if</span> <span class="ident">other</span> {
- <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>(),
+<span class="kw">impl </span>From<bool> <span class="kw">for </span>Satisfaction {
+ <span class="kw">fn </span>from(other: bool) -> <span class="self">Self </span>{
+ <span class="kw">if </span>other {
+ Satisfaction::Complete {
+ condition: Default::default(),
}
- } <span class="kw">else</span> {
- <span class="ident">Satisfaction::None</span>
+ } <span class="kw">else </span>{
+ Satisfaction::None
}
}
}
-<span class="doccomment">/// Descriptor spending policy</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Serialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Policy</span> {
- <span class="doccomment">/// Identifier for this policy node</span>
- <span class="kw">pub</span> <span class="ident">id</span>: <span class="ident">String</span>,
-
- <span class="doccomment">/// Type of this policy node</span>
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">flatten</span>)]</span>
- <span class="kw">pub</span> <span class="ident">item</span>: <span class="ident">SatisfiableItem</span>,
- <span class="doccomment">/// How much a given PSBT already satisfies this policy node in terms of signatures</span>
- <span class="kw">pub</span> <span class="ident">satisfaction</span>: <span class="ident">Satisfaction</span>,
- <span class="doccomment">/// How the wallet's descriptor can satisfy this policy node</span>
- <span class="kw">pub</span> <span class="ident">contribution</span>: <span class="ident">Satisfaction</span>,
+<span class="doccomment">/// Descriptor spending policy
+</span><span class="attr">#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
+</span><span class="kw">pub struct </span>Policy {
+ <span class="doccomment">/// Identifier for this policy node
+ </span><span class="kw">pub </span>id: String,
+
+ <span class="doccomment">/// Type of this policy node
+ </span><span class="attr">#[serde(flatten)]
+ </span><span class="kw">pub </span>item: SatisfiableItem,
+ <span class="doccomment">/// How much a given PSBT already satisfies this policy node in terms of signatures
+ </span><span class="kw">pub </span>satisfaction: Satisfaction,
+ <span class="doccomment">/// How the wallet's descriptor can satisfy this policy node
+ </span><span class="kw">pub </span>contribution: Satisfaction,
}
-<span class="doccomment">/// An extra condition that must be satisfied but that is out of control of the user</span>
-<span class="doccomment">/// TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Hash</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">Debug</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">PartialOrd</span>, <span class="ident">Default</span>, <span class="ident">Serialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Condition</span> {
- <span class="doccomment">/// Optional CheckSequenceVerify condition</span>
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="kw">pub</span> <span class="ident">csv</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Sequence</span><span class="op">></span>,
- <span class="doccomment">/// Optional timelock condition</span>
- <span class="attribute">#[<span class="ident">serde</span>(<span class="ident">skip_serializing_if</span> <span class="op">=</span> <span class="string">"Option::is_none"</span>)]</span>
- <span class="kw">pub</span> <span class="ident">timelock</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LockTime</span><span class="op">></span>,
+<span class="doccomment">/// An extra condition that must be satisfied but that is out of control of the user
+/// TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`
+</span><span class="attr">#[derive(Hash, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Default, Serialize)]
+</span><span class="kw">pub struct </span>Condition {
+ <span class="doccomment">/// Optional CheckSequenceVerify condition
+ </span><span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="kw">pub </span>csv: <span class="prelude-ty">Option</span><Sequence>,
+ <span class="doccomment">/// Optional timelock condition
+ </span><span class="attr">#[serde(skip_serializing_if = <span class="string">"Option::is_none"</span>)]
+ </span><span class="kw">pub </span>timelock: <span class="prelude-ty">Option</span><LockTime>,
}
-<span class="kw">impl</span> <span class="ident">Condition</span> {
- <span class="kw">fn</span> <span class="ident">merge_nlocktime</span>(<span class="ident">a</span>: <span class="ident">LockTime</span>, <span class="ident">b</span>: <span class="ident">LockTime</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">LockTime</span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="op">!</span><span class="ident">a</span>.<span class="ident">is_same_unit</span>(<span class="ident">b</span>) {
- <span class="prelude-val">Err</span>(<span class="ident">PolicyError::MixedTimelockUnits</span>)
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">a</span> <span class="op">></span> <span class="ident">b</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">a</span>)
- } <span class="kw">else</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">b</span>)
+<span class="kw">impl </span>Condition {
+ <span class="kw">fn </span>merge_nlocktime(a: LockTime, b: LockTime) -> <span class="prelude-ty">Result</span><LockTime, PolicyError> {
+ <span class="kw">if </span>!a.is_same_unit(b) {
+ <span class="prelude-val">Err</span>(PolicyError::MixedTimelockUnits)
+ } <span class="kw">else if </span>a > b {
+ <span class="prelude-val">Ok</span>(a)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Ok</span>(b)
}
}
- <span class="kw">fn</span> <span class="ident">merge_nsequence</span>(<span class="ident">a</span>: <span class="ident">Sequence</span>, <span class="ident">b</span>: <span class="ident">Sequence</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Sequence</span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">a</span>.<span class="ident">is_time_locked</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">b</span>.<span class="ident">is_time_locked</span>() {
- <span class="prelude-val">Err</span>(<span class="ident">PolicyError::MixedTimelockUnits</span>)
- } <span class="kw">else</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">max</span>(<span class="ident">a</span>, <span class="ident">b</span>))
+ <span class="kw">fn </span>merge_nsequence(a: Sequence, b: Sequence) -> <span class="prelude-ty">Result</span><Sequence, PolicyError> {
+ <span class="kw">if </span>a.is_time_locked() != b.is_time_locked() {
+ <span class="prelude-val">Err</span>(PolicyError::MixedTimelockUnits)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Ok</span>(max(a, b))
}
}
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">merge</span>(<span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">other</span>: <span class="kw-2">&</span><span class="ident">Condition</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">match</span> (<span class="self">self</span>.<span class="ident">csv</span>, <span class="ident">other</span>.<span class="ident">csv</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">a</span>), <span class="prelude-val">Some</span>(<span class="ident">b</span>)) => <span class="self">self</span>.<span class="ident">csv</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident"><span class="self">Self</span>::merge_nsequence</span>(<span class="ident">a</span>, <span class="ident">b</span>)<span class="question-mark">?</span>),
- (<span class="prelude-val">None</span>, <span class="ident">any</span>) => <span class="self">self</span>.<span class="ident">csv</span> <span class="op">=</span> <span class="ident">any</span>,
- <span class="kw">_</span> => {}
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>merge(<span class="kw-2">mut </span><span class="self">self</span>, other: <span class="kw-2">&</span>Condition) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, PolicyError> {
+ <span class="kw">match </span>(<span class="self">self</span>.csv, other.csv) {
+ (<span class="prelude-val">Some</span>(a), <span class="prelude-val">Some</span>(b)) => <span class="self">self</span>.csv = <span class="prelude-val">Some</span>(<span class="self">Self</span>::merge_nsequence(a, b)<span class="question-mark">?</span>),
+ (<span class="prelude-val">None</span>, any) => <span class="self">self</span>.csv = any,
+ <span class="kw">_ </span>=> {}
}
- <span class="kw">match</span> (<span class="self">self</span>.<span class="ident">timelock</span>, <span class="ident">other</span>.<span class="ident">timelock</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">a</span>), <span class="prelude-val">Some</span>(<span class="ident">b</span>)) => <span class="self">self</span>.<span class="ident">timelock</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident"><span class="self">Self</span>::merge_nlocktime</span>(<span class="ident">a</span>, <span class="ident">b</span>)<span class="question-mark">?</span>),
- (<span class="prelude-val">None</span>, <span class="ident">any</span>) => <span class="self">self</span>.<span class="ident">timelock</span> <span class="op">=</span> <span class="ident">any</span>,
- <span class="kw">_</span> => {}
+ <span class="kw">match </span>(<span class="self">self</span>.timelock, other.timelock) {
+ (<span class="prelude-val">Some</span>(a), <span class="prelude-val">Some</span>(b)) => <span class="self">self</span>.timelock = <span class="prelude-val">Some</span>(<span class="self">Self</span>::merge_nlocktime(a, b)<span class="question-mark">?</span>),
+ (<span class="prelude-val">None</span>, any) => <span class="self">self</span>.timelock = any,
+ <span class="kw">_ </span>=> {}
}
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
- <span class="doccomment">/// Returns `true` if there are no extra conditions to verify</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_null</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span>.<span class="ident">csv</span>.<span class="ident">is_none</span>() <span class="op">&&</span> <span class="self">self</span>.<span class="ident">timelock</span>.<span class="ident">is_none</span>()
+ <span class="doccomment">/// Returns `true` if there are no extra conditions to verify
+ </span><span class="kw">pub fn </span>is_null(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="self">self</span>.csv.is_none() && <span class="self">self</span>.timelock.is_none()
}
}
-<span class="doccomment">/// Errors that can happen while extracting and manipulating policies</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">PolicyError</span> {
- <span class="doccomment">/// Not enough items are selected to satisfy a [`SatisfiableItem::Thresh`] or a [`SatisfiableItem::Multisig`]</span>
- <span class="ident">NotEnoughItemsSelected</span>(<span class="ident">String</span>),
- <span class="doccomment">/// Index out of range for an item to satisfy a [`SatisfiableItem::Thresh`] or a [`SatisfiableItem::Multisig`]</span>
- <span class="ident">IndexOutOfRange</span>(<span class="ident">usize</span>),
- <span class="doccomment">/// Can not add to an item that is [`Satisfaction::None`] or [`Satisfaction::Complete`]</span>
- <span class="ident">AddOnLeaf</span>,
- <span class="doccomment">/// Can not add to an item that is [`Satisfaction::PartialComplete`]</span>
- <span class="ident">AddOnPartialComplete</span>,
- <span class="doccomment">/// Can not merge CSV or timelock values unless both are less than or both are equal or greater than 500_000_000</span>
- <span class="ident">MixedTimelockUnits</span>,
- <span class="doccomment">/// Incompatible conditions (not currently used)</span>
- <span class="ident">IncompatibleConditions</span>,
+<span class="doccomment">/// Errors that can happen while extracting and manipulating policies
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>PolicyError {
+ <span class="doccomment">/// Not enough items are selected to satisfy a [`SatisfiableItem::Thresh`] or a [`SatisfiableItem::Multisig`]
+ </span>NotEnoughItemsSelected(String),
+ <span class="doccomment">/// Index out of range for an item to satisfy a [`SatisfiableItem::Thresh`] or a [`SatisfiableItem::Multisig`]
+ </span>IndexOutOfRange(usize),
+ <span class="doccomment">/// Can not add to an item that is [`Satisfaction::None`] or [`Satisfaction::Complete`]
+ </span>AddOnLeaf,
+ <span class="doccomment">/// Can not add to an item that is [`Satisfaction::PartialComplete`]
+ </span>AddOnPartialComplete,
+ <span class="doccomment">/// Can not merge CSV or timelock values unless both are less than or both are equal or greater than 500_000_000
+ </span>MixedTimelockUnits,
+ <span class="doccomment">/// Incompatible conditions (not currently used)
+ </span>IncompatibleConditions,
}
-<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">PolicyError</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>fmt::Display <span class="kw">for </span>PolicyError {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">PolicyError</span> {}
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>PolicyError {}
-<span class="kw">impl</span> <span class="ident">Policy</span> {
- <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">item</span>: <span class="ident">SatisfiableItem</span>) -> <span class="self">Self</span> {
- <span class="ident">Policy</span> {
- <span class="ident">id</span>: <span class="ident">item</span>.<span class="ident">id</span>(),
- <span class="ident">item</span>,
- <span class="ident">satisfaction</span>: <span class="ident">Satisfaction::None</span>,
- <span class="ident">contribution</span>: <span class="ident">Satisfaction::None</span>,
+<span class="kw">impl </span>Policy {
+ <span class="kw">fn </span>new(item: SatisfiableItem) -> <span class="self">Self </span>{
+ Policy {
+ id: item.id(),
+ item,
+ satisfaction: Satisfaction::None,
+ contribution: Satisfaction::None,
}
}
- <span class="kw">fn</span> <span class="ident">make_and</span>(<span class="ident">a</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">b</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">match</span> (<span class="ident">a</span>, <span class="ident">b</span>) {
+ <span class="kw">fn </span>make_and(a: <span class="prelude-ty">Option</span><Policy>, b: <span class="prelude-ty">Option</span><Policy>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, PolicyError> {
+ <span class="kw">match </span>(a, b) {
(<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- (<span class="prelude-val">Some</span>(<span class="ident">x</span>), <span class="prelude-val">None</span>) <span class="op">|</span> (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="ident">x</span>)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">x</span>)),
- (<span class="prelude-val">Some</span>(<span class="ident">a</span>), <span class="prelude-val">Some</span>(<span class="ident">b</span>)) => <span class="ident"><span class="self">Self</span>::make_thresh</span>(<span class="macro">vec!</span>[<span class="ident">a</span>, <span class="ident">b</span>], <span class="number">2</span>),
+ (<span class="prelude-val">Some</span>(x), <span class="prelude-val">None</span>) | (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(x)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(x)),
+ (<span class="prelude-val">Some</span>(a), <span class="prelude-val">Some</span>(b)) => <span class="self">Self</span>::make_thresh(<span class="macro">vec!</span>[a, b], <span class="number">2</span>),
}
}
- <span class="kw">fn</span> <span class="ident">make_or</span>(<span class="ident">a</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">b</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">match</span> (<span class="ident">a</span>, <span class="ident">b</span>) {
+ <span class="kw">fn </span>make_or(a: <span class="prelude-ty">Option</span><Policy>, b: <span class="prelude-ty">Option</span><Policy>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, PolicyError> {
+ <span class="kw">match </span>(a, b) {
(<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- (<span class="prelude-val">Some</span>(<span class="ident">x</span>), <span class="prelude-val">None</span>) <span class="op">|</span> (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="ident">x</span>)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">x</span>)),
- (<span class="prelude-val">Some</span>(<span class="ident">a</span>), <span class="prelude-val">Some</span>(<span class="ident">b</span>)) => <span class="ident"><span class="self">Self</span>::make_thresh</span>(<span class="macro">vec!</span>[<span class="ident">a</span>, <span class="ident">b</span>], <span class="number">1</span>),
+ (<span class="prelude-val">Some</span>(x), <span class="prelude-val">None</span>) | (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(x)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(x)),
+ (<span class="prelude-val">Some</span>(a), <span class="prelude-val">Some</span>(b)) => <span class="self">Self</span>::make_thresh(<span class="macro">vec!</span>[a, b], <span class="number">1</span>),
}
}
- <span class="kw">fn</span> <span class="ident">make_thresh</span>(<span class="ident">items</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">threshold</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="number">0</span> {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+ <span class="kw">fn </span>make_thresh(items: Vec<Policy>, threshold: usize) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, PolicyError> {
+ <span class="kw">if </span>threshold == <span class="number">0 </span>{
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">contribution</span> <span class="op">=</span> <span class="ident">Satisfaction::Partial</span> {
- <span class="ident">n</span>: <span class="ident">items</span>.<span class="ident">len</span>(),
- <span class="ident">m</span>: <span class="ident">threshold</span>,
- <span class="ident">items</span>: <span class="macro">vec!</span>[],
- <span class="ident">conditions</span>: <span class="ident">Default::default</span>(),
- <span class="ident">sorted</span>: <span class="prelude-val">None</span>,
+ <span class="kw">let </span><span class="kw-2">mut </span>contribution = Satisfaction::Partial {
+ n: items.len(),
+ m: threshold,
+ items: <span class="macro">vec!</span>[],
+ conditions: Default::default(),
+ sorted: <span class="prelude-val">None</span>,
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">satisfaction</span> <span class="op">=</span> <span class="ident">contribution</span>.<span class="ident">clone</span>();
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">item</span>) <span class="kw">in</span> <span class="ident">items</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="ident">contribution</span>.<span class="ident">add</span>(<span class="kw-2">&</span><span class="ident">item</span>.<span class="ident">contribution</span>, <span class="ident">index</span>)<span class="question-mark">?</span>;
- <span class="ident">satisfaction</span>.<span class="ident">add</span>(<span class="kw-2">&</span><span class="ident">item</span>.<span class="ident">satisfaction</span>, <span class="ident">index</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>satisfaction = contribution.clone();
+ <span class="kw">for </span>(index, item) <span class="kw">in </span>items.iter().enumerate() {
+ contribution.add(<span class="kw-2">&</span>item.contribution, index)<span class="question-mark">?</span>;
+ satisfaction.add(<span class="kw-2">&</span>item.satisfaction, index)<span class="question-mark">?</span>;
}
- <span class="ident">contribution</span>.<span class="ident">finalize</span>();
- <span class="ident">satisfaction</span>.<span class="ident">finalize</span>();
+ contribution.finalize();
+ satisfaction.finalize();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">policy</span>: <span class="ident">Policy</span> <span class="op">=</span> <span class="ident">SatisfiableItem::Thresh</span> { <span class="ident">items</span>, <span class="ident">threshold</span> }.<span class="ident">into</span>();
- <span class="ident">policy</span>.<span class="ident">contribution</span> <span class="op">=</span> <span class="ident">contribution</span>;
- <span class="ident">policy</span>.<span class="ident">satisfaction</span> <span class="op">=</span> <span class="ident">satisfaction</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>policy: Policy = SatisfiableItem::Thresh { items, threshold }.into();
+ policy.contribution = contribution;
+ policy.satisfaction = satisfaction;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">policy</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(policy))
}
- <span class="kw">fn</span> <span class="ident">make_multisig</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">+</span> <span class="lifetime">'static</span><span class="op">></span>(
- <span class="ident">keys</span>: <span class="kw-2">&</span>[<span class="ident">DescriptorPublicKey</span>],
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">threshold</span>: <span class="ident">usize</span>,
- <span class="ident">sorted</span>: <span class="ident">bool</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="number">0</span> {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+ <span class="kw">fn </span>make_multisig<Ctx: ScriptContext + <span class="lifetime">'static</span>>(
+ keys: <span class="kw-2">&</span>[DescriptorPublicKey],
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ threshold: usize,
+ sorted: bool,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, PolicyError> {
+ <span class="kw">if </span>threshold == <span class="number">0 </span>{
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
}
- <span class="kw">let</span> <span class="ident">parsed_keys</span> <span class="op">=</span> <span class="ident">keys</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">k</span><span class="op">|</span> <span class="ident">PkOrF::from_key</span>(<span class="ident">k</span>, <span class="ident">secp</span>)).<span class="ident">collect</span>();
+ <span class="kw">let </span>parsed_keys = keys.iter().map(|k| PkOrF::from_key(k, secp)).collect();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">contribution</span> <span class="op">=</span> <span class="ident">Satisfaction::Partial</span> {
- <span class="ident">n</span>: <span class="ident">keys</span>.<span class="ident">len</span>(),
- <span class="ident">m</span>: <span class="ident">threshold</span>,
- <span class="ident">items</span>: <span class="macro">vec!</span>[],
- <span class="ident">conditions</span>: <span class="ident">Default::default</span>(),
- <span class="ident">sorted</span>: <span class="prelude-val">Some</span>(<span class="ident">sorted</span>),
+ <span class="kw">let </span><span class="kw-2">mut </span>contribution = Satisfaction::Partial {
+ n: keys.len(),
+ m: threshold,
+ items: <span class="macro">vec!</span>[],
+ conditions: Default::default(),
+ sorted: <span class="prelude-val">Some</span>(sorted),
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">satisfaction</span> <span class="op">=</span> <span class="ident">contribution</span>.<span class="ident">clone</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>satisfaction = contribution.clone();
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">key</span>) <span class="kw">in</span> <span class="ident">keys</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">if</span> <span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">signer_id</span>(<span class="ident">key</span>, <span class="ident">secp</span>)).<span class="ident">is_some</span>() {
- <span class="ident">contribution</span>.<span class="ident">add</span>(
- <span class="kw-2">&</span><span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>(),
+ <span class="kw">for </span>(index, key) <span class="kw">in </span>keys.iter().enumerate() {
+ <span class="kw">if </span>signers.find(signer_id(key, secp)).is_some() {
+ contribution.add(
+ <span class="kw-2">&</span>Satisfaction::Complete {
+ condition: Default::default(),
},
- <span class="ident">index</span>,
+ index,
)<span class="question-mark">?</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">psbt</span>) <span class="op">=</span> <span class="ident">build_sat</span>.<span class="ident">psbt</span>() {
- <span class="kw">if</span> <span class="ident">Ctx::find_signature</span>(<span class="ident">psbt</span>, <span class="ident">key</span>, <span class="ident">secp</span>) {
- <span class="ident">satisfaction</span>.<span class="ident">add</span>(
- <span class="kw-2">&</span><span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>(),
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(psbt) = build_sat.psbt() {
+ <span class="kw">if </span>Ctx::find_signature(psbt, key, secp) {
+ satisfaction.add(
+ <span class="kw-2">&</span>Satisfaction::Complete {
+ condition: Default::default(),
},
- <span class="ident">index</span>,
+ index,
)<span class="question-mark">?</span>;
}
}
}
- <span class="ident">satisfaction</span>.<span class="ident">finalize</span>();
- <span class="ident">contribution</span>.<span class="ident">finalize</span>();
+ satisfaction.finalize();
+ contribution.finalize();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">policy</span>: <span class="ident">Policy</span> <span class="op">=</span> <span class="ident">SatisfiableItem::Multisig</span> {
- <span class="ident">keys</span>: <span class="ident">parsed_keys</span>,
- <span class="ident">threshold</span>,
+ <span class="kw">let </span><span class="kw-2">mut </span>policy: Policy = SatisfiableItem::Multisig {
+ keys: parsed_keys,
+ threshold,
}
- .<span class="ident">into</span>();
- <span class="ident">policy</span>.<span class="ident">contribution</span> <span class="op">=</span> <span class="ident">contribution</span>;
- <span class="ident">policy</span>.<span class="ident">satisfaction</span> <span class="op">=</span> <span class="ident">satisfaction</span>;
+ .into();
+ policy.contribution = contribution;
+ policy.satisfaction = satisfaction;
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">policy</span>))
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(policy))
}
- <span class="doccomment">/// Return whether or not a specific path in the policy tree is required to unambiguously</span>
- <span class="doccomment">/// create a transaction</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// What this means is that for some spending policies the user should select which paths in</span>
- <span class="doccomment">/// the tree it intends to satisfy while signing, because the transaction must be created differently based</span>
- <span class="doccomment">/// on that.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">requires_path</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span>.<span class="ident">get_condition</span>(<span class="kw-2">&</span><span class="ident">BTreeMap::new</span>()).<span class="ident">is_err</span>()
+ <span class="doccomment">/// Return whether or not a specific path in the policy tree is required to unambiguously
+ /// create a transaction
+ ///
+ /// What this means is that for some spending policies the user should select which paths in
+ /// the tree it intends to satisfy while signing, because the transaction must be created differently based
+ /// on that.
+ </span><span class="kw">pub fn </span>requires_path(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="self">self</span>.get_condition(<span class="kw-2">&</span>BTreeMap::new()).is_err()
}
- <span class="doccomment">/// Return the conditions that are set by the spending policy for a given path in the</span>
- <span class="doccomment">/// policy tree</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_condition</span>(
+ <span class="doccomment">/// Return the conditions that are set by the spending policy for a given path in the
+ /// policy tree
+ </span><span class="kw">pub fn </span>get_condition(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">path</span>: <span class="kw-2">&</span><span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Condition</span>, <span class="ident">PolicyError</span><span class="op">></span> {
- <span class="comment">// if items.len() == threshold, selected can be omitted and we take all of them by default</span>
- <span class="kw">let</span> <span class="ident">default</span> <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">item</span> {
- <span class="ident">SatisfiableItem::Thresh</span> { <span class="ident">items</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="kw-2">*</span><span class="ident">threshold</span> => {
- (<span class="number">0</span>..<span class="kw-2">*</span><span class="ident">threshold</span>).<span class="ident">collect</span>()
+ path: <span class="kw-2">&</span>BTreeMap<String, Vec<usize>>,
+ ) -> <span class="prelude-ty">Result</span><Condition, PolicyError> {
+ <span class="comment">// if items.len() == threshold, selected can be omitted and we take all of them by default
+ </span><span class="kw">let </span>default = <span class="kw">match </span><span class="kw-2">&</span><span class="self">self</span>.item {
+ SatisfiableItem::Thresh { items, threshold } <span class="kw">if </span>items.len() == <span class="kw-2">*</span>threshold => {
+ (<span class="number">0</span>..<span class="kw-2">*</span>threshold).collect()
}
- <span class="ident">SatisfiableItem::Multisig</span> { <span class="ident">keys</span>, .. } => (<span class="number">0</span>..<span class="ident">keys</span>.<span class="ident">len</span>()).<span class="ident">collect</span>(),
- <span class="kw">_</span> => <span class="macro">vec!</span>[],
+ SatisfiableItem::Multisig { keys, .. } => (<span class="number">0</span>..keys.len()).collect(),
+ <span class="kw">_ </span>=> <span class="macro">vec!</span>[],
};
- <span class="kw">let</span> <span class="ident">selected</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">path</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">id</span>) {
- <span class="prelude-val">Some</span>(<span class="ident">arr</span>) => <span class="ident">arr</span>,
- <span class="kw">_</span> => <span class="kw-2">&</span><span class="ident">default</span>,
+ <span class="kw">let </span>selected = <span class="kw">match </span>path.get(<span class="kw-2">&</span><span class="self">self</span>.id) {
+ <span class="prelude-val">Some</span>(arr) => arr,
+ <span class="kw">_ </span>=> <span class="kw-2">&</span>default,
};
- <span class="kw">match</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">item</span> {
- <span class="ident">SatisfiableItem::Thresh</span> { <span class="ident">items</span>, <span class="ident">threshold</span> } => {
- <span class="kw">let</span> <span class="ident">mapped_req</span> <span class="op">=</span> <span class="ident">items</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">get_condition</span>(<span class="ident">path</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="comment">// if all the requirements are null we don't care about `selected` because there</span>
- <span class="comment">// are no requirements</span>
- <span class="kw">if</span> <span class="ident">mapped_req</span>.<span class="ident">iter</span>().<span class="ident">all</span>(<span class="ident">Condition::is_null</span>) {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="ident">Condition::default</span>());
+ <span class="kw">match </span><span class="kw-2">&</span><span class="self">self</span>.item {
+ SatisfiableItem::Thresh { items, threshold } => {
+ <span class="kw">let </span>mapped_req = items
+ .iter()
+ .map(|i| i.get_condition(path))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+
+ <span class="comment">// if all the requirements are null we don't care about `selected` because there
+ // are no requirements
+ </span><span class="kw">if </span>mapped_req.iter().all(Condition::is_null) {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(Condition::default());
}
- <span class="comment">// if we have something, make sure we have enough items. note that the user can set</span>
- <span class="comment">// an empty value for this step in case of n-of-n, because `selected` is set to all</span>
- <span class="comment">// the elements above</span>
- <span class="kw">if</span> <span class="ident">selected</span>.<span class="ident">len</span>() <span class="op"><</span> <span class="kw-2">*</span><span class="ident">threshold</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">PolicyError::NotEnoughItemsSelected</span>(<span class="self">self</span>.<span class="ident">id</span>.<span class="ident">clone</span>()));
+ <span class="comment">// if we have something, make sure we have enough items. note that the user can set
+ // an empty value for this step in case of n-of-n, because `selected` is set to all
+ // the elements above
+ </span><span class="kw">if </span>selected.len() < <span class="kw-2">*</span>threshold {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(PolicyError::NotEnoughItemsSelected(<span class="self">self</span>.id.clone()));
}
- <span class="comment">// check the selected items, see if there are conflicting requirements</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">requirements</span> <span class="op">=</span> <span class="ident">Condition::default</span>();
- <span class="kw">for</span> <span class="ident">item_index</span> <span class="kw">in</span> <span class="ident">selected</span> {
- <span class="ident">requirements</span> <span class="op">=</span> <span class="ident">requirements</span>.<span class="ident">merge</span>(
- <span class="ident">mapped_req</span>
- .<span class="ident">get</span>(<span class="kw-2">*</span><span class="ident">item_index</span>)
- .<span class="ident">ok_or</span>(<span class="ident">PolicyError::IndexOutOfRange</span>(<span class="kw-2">*</span><span class="ident">item_index</span>))<span class="question-mark">?</span>,
+ <span class="comment">// check the selected items, see if there are conflicting requirements
+ </span><span class="kw">let </span><span class="kw-2">mut </span>requirements = Condition::default();
+ <span class="kw">for </span>item_index <span class="kw">in </span>selected {
+ requirements = requirements.merge(
+ mapped_req
+ .get(<span class="kw-2">*</span>item_index)
+ .ok_or(PolicyError::IndexOutOfRange(<span class="kw-2">*</span>item_index))<span class="question-mark">?</span>,
)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">requirements</span>)
+ <span class="prelude-val">Ok</span>(requirements)
}
- <span class="ident">SatisfiableItem::Multisig</span> { <span class="ident">keys</span>, <span class="ident">threshold</span> } => {
- <span class="kw">if</span> <span class="ident">selected</span>.<span class="ident">len</span>() <span class="op"><</span> <span class="kw-2">*</span><span class="ident">threshold</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">PolicyError::NotEnoughItemsSelected</span>(<span class="self">self</span>.<span class="ident">id</span>.<span class="ident">clone</span>()));
+ SatisfiableItem::Multisig { keys, threshold } => {
+ <span class="kw">if </span>selected.len() < <span class="kw-2">*</span>threshold {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(PolicyError::NotEnoughItemsSelected(<span class="self">self</span>.id.clone()));
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">item</span>) <span class="op">=</span> <span class="ident">selected</span>.<span class="ident">iter</span>().<span class="ident">find</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">i</span> <span class="op">></span><span class="op">=</span> <span class="ident">keys</span>.<span class="ident">len</span>()) {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">PolicyError::IndexOutOfRange</span>(<span class="kw-2">*</span><span class="ident">item</span>));
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(item) = selected.iter().find(|i| <span class="kw-2">**</span>i >= keys.len()) {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(PolicyError::IndexOutOfRange(<span class="kw-2">*</span>item));
}
- <span class="prelude-val">Ok</span>(<span class="ident">Condition::default</span>())
+ <span class="prelude-val">Ok</span>(Condition::default())
}
- <span class="ident">SatisfiableItem::AbsoluteTimelock</span> { <span class="ident">value</span> } => <span class="prelude-val">Ok</span>(<span class="ident">Condition</span> {
- <span class="ident">csv</span>: <span class="prelude-val">None</span>,
- <span class="ident">timelock</span>: <span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">value</span>),
+ SatisfiableItem::AbsoluteTimelock { value } => <span class="prelude-val">Ok</span>(Condition {
+ csv: <span class="prelude-val">None</span>,
+ timelock: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>value),
}),
- <span class="ident">SatisfiableItem::RelativeTimelock</span> { <span class="ident">value</span> } => <span class="prelude-val">Ok</span>(<span class="ident">Condition</span> {
- <span class="ident">csv</span>: <span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">value</span>),
- <span class="ident">timelock</span>: <span class="prelude-val">None</span>,
+ SatisfiableItem::RelativeTimelock { value } => <span class="prelude-val">Ok</span>(Condition {
+ csv: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>value),
+ timelock: <span class="prelude-val">None</span>,
}),
- <span class="kw">_</span> => <span class="prelude-val">Ok</span>(<span class="ident">Condition::default</span>()),
+ <span class="kw">_ </span>=> <span class="prelude-val">Ok</span>(Condition::default()),
}
}
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">SatisfiableItem</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Policy</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">other</span>: <span class="ident">SatisfiableItem</span>) -> <span class="self">Self</span> {
- <span class="ident"><span class="self">Self</span>::new</span>(<span class="ident">other</span>)
+<span class="kw">impl </span>From<SatisfiableItem> <span class="kw">for </span>Policy {
+ <span class="kw">fn </span>from(other: SatisfiableItem) -> <span class="self">Self </span>{
+ <span class="self">Self</span>::new(other)
}
}
-<span class="kw">fn</span> <span class="ident">signer_id</span>(<span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">SignerId</span> {
- <span class="comment">// For consistency we always compute the key hash in "ecdsa" form (with the leading sign</span>
- <span class="comment">// prefix) even if we are in a taproot descriptor. We just want some kind of unique identifier</span>
- <span class="comment">// for a key, so it doesn't really matter how the identifier is computed.</span>
- <span class="kw">match</span> <span class="ident">key</span> {
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">key</span>: <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">pk</span>),
+<span class="kw">fn </span>signer_id(key: <span class="kw-2">&</span>DescriptorPublicKey, secp: <span class="kw-2">&</span>SecpCtx) -> SignerId {
+ <span class="comment">// For consistency we always compute the key hash in "ecdsa" form (with the leading sign
+ // prefix) even if we are in a taproot descriptor. We just want some kind of unique identifier
+ // for a key, so it doesn't really matter how the identifier is computed.
+ </span><span class="kw">match </span>key {
+ DescriptorPublicKey::Single(SinglePub {
+ key: SinglePubKey::FullKey(pk),
..
- }) => <span class="ident">pk</span>.<span class="ident">to_pubkeyhash</span>(<span class="ident">SigType::Ecdsa</span>).<span class="ident">into</span>(),
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">key</span>: <span class="ident">SinglePubKey::XOnly</span>(<span class="ident">pk</span>),
+ }) => pk.to_pubkeyhash(SigType::Ecdsa).into(),
+ DescriptorPublicKey::Single(SinglePub {
+ key: SinglePubKey::XOnly(pk),
..
- }) => <span class="ident">pk</span>.<span class="ident">to_pubkeyhash</span>(<span class="ident">SigType::Ecdsa</span>).<span class="ident">into</span>(),
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>) => <span class="ident">xpub</span>.<span class="ident">root_fingerprint</span>(<span class="ident">secp</span>).<span class="ident">into</span>(),
+ }) => pk.to_pubkeyhash(SigType::Ecdsa).into(),
+ DescriptorPublicKey::XPub(xpub) => xpub.root_fingerprint(secp).into(),
}
}
-<span class="kw">fn</span> <span class="ident">make_generic_signature</span><span class="op"><</span><span class="ident">M</span>: <span class="ident">Fn</span>() -> <span class="ident">SatisfiableItem</span>, <span class="ident">F</span>: <span class="ident">Fn</span>(<span class="kw-2">&</span><span class="ident">Psbt</span>) -> <span class="ident">bool</span><span class="op">></span>(
- <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">make_policy</span>: <span class="ident">M</span>,
- <span class="ident">find_sig</span>: <span class="ident">F</span>,
-) -> <span class="ident">Policy</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">policy</span>: <span class="ident">Policy</span> <span class="op">=</span> <span class="ident">make_policy</span>().<span class="ident">into</span>();
-
- <span class="ident">policy</span>.<span class="ident">contribution</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">signer_id</span>(<span class="ident">key</span>, <span class="ident">secp</span>)).<span class="ident">is_some</span>() {
- <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>(),
+<span class="kw">fn </span>make_generic_signature<M: Fn() -> SatisfiableItem, F: Fn(<span class="kw-2">&</span>Psbt) -> bool>(
+ key: <span class="kw-2">&</span>DescriptorPublicKey,
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ make_policy: M,
+ find_sig: F,
+) -> Policy {
+ <span class="kw">let </span><span class="kw-2">mut </span>policy: Policy = make_policy().into();
+
+ policy.contribution = <span class="kw">if </span>signers.find(signer_id(key, secp)).is_some() {
+ Satisfaction::Complete {
+ condition: Default::default(),
}
- } <span class="kw">else</span> {
- <span class="ident">Satisfaction::None</span>
+ } <span class="kw">else </span>{
+ Satisfaction::None
};
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">psbt</span>) <span class="op">=</span> <span class="ident">build_sat</span>.<span class="ident">psbt</span>() {
- <span class="ident">policy</span>.<span class="ident">satisfaction</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">find_sig</span>(<span class="ident">psbt</span>) {
- <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>(),
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(psbt) = build_sat.psbt() {
+ policy.satisfaction = <span class="kw">if </span>find_sig(psbt) {
+ Satisfaction::Complete {
+ condition: Default::default(),
}
- } <span class="kw">else</span> {
- <span class="ident">Satisfaction::None</span>
+ } <span class="kw">else </span>{
+ Satisfaction::None
};
}
- <span class="ident">policy</span>
+ policy
}
-<span class="kw">fn</span> <span class="ident">generic_sig_in_psbt</span><span class="op"><</span>
- <span class="comment">// C is for "check", it's a closure we use to *check* if a psbt input contains the signature</span>
- <span class="comment">// for a specific key</span>
- <span class="ident">C</span>: <span class="ident">Fn</span>(<span class="kw-2">&</span><span class="ident">PsbtInput</span>, <span class="kw-2">&</span><span class="ident">SinglePubKey</span>) -> <span class="ident">bool</span>,
- <span class="comment">// E is for "extract", it extracts a key from the bip32 derivations found in the psbt input</span>
- <span class="ident">E</span>: <span class="ident">Fn</span>(<span class="kw-2">&</span><span class="ident">PsbtInput</span>, <span class="ident">Fingerprint</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">SinglePubKey</span><span class="op">></span>,
-<span class="op">></span>(
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">Psbt</span>,
- <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">check</span>: <span class="ident">C</span>,
- <span class="ident">extract</span>: <span class="ident">E</span>,
-) -> <span class="ident">bool</span> {
- <span class="comment">//TODO check signature validity</span>
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">all</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> <span class="kw">match</span> <span class="ident">key</span> {
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> { <span class="ident">key</span>, .. }) => <span class="ident">check</span>(<span class="ident">input</span>, <span class="ident">key</span>),
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">xpub</span>) => {
- <span class="comment">//TODO check actual derivation matches</span>
- <span class="kw">match</span> <span class="ident">extract</span>(<span class="ident">input</span>, <span class="ident">xpub</span>.<span class="ident">root_fingerprint</span>(<span class="ident">secp</span>)) {
- <span class="prelude-val">Some</span>(<span class="ident">pubkey</span>) => <span class="ident">check</span>(<span class="ident">input</span>, <span class="kw-2">&</span><span class="ident">pubkey</span>),
- <span class="prelude-val">None</span> => <span class="bool-val">false</span>,
+<span class="kw">fn </span>generic_sig_in_psbt<
+ <span class="comment">// C is for "check", it's a closure we use to *check* if a psbt input contains the signature
+ // for a specific key
+ </span>C: Fn(<span class="kw-2">&</span>PsbtInput, <span class="kw-2">&</span>SinglePubKey) -> bool,
+ <span class="comment">// E is for "extract", it extracts a key from the bip32 derivations found in the psbt input
+ </span>E: Fn(<span class="kw-2">&</span>PsbtInput, Fingerprint) -> <span class="prelude-ty">Option</span><SinglePubKey>,
+>(
+ psbt: <span class="kw-2">&</span>Psbt,
+ key: <span class="kw-2">&</span>DescriptorPublicKey,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ check: C,
+ extract: E,
+) -> bool {
+ <span class="comment">//TODO check signature validity
+ </span>psbt.inputs.iter().all(|input| <span class="kw">match </span>key {
+ DescriptorPublicKey::Single(SinglePub { key, .. }) => check(input, key),
+ DescriptorPublicKey::XPub(xpub) => {
+ <span class="comment">//TODO check actual derivation matches
+ </span><span class="kw">match </span>extract(input, xpub.root_fingerprint(secp)) {
+ <span class="prelude-val">Some</span>(pubkey) => check(input, <span class="kw-2">&</span>pubkey),
+ <span class="prelude-val">None </span>=> <span class="bool-val">false</span>,
}
}
})
}
-<span class="kw">trait</span> <span class="ident">SigExt</span>: <span class="ident">ScriptContext</span> {
- <span class="kw">fn</span> <span class="ident">make_signature</span>(
- <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="ident">Policy</span>;
+<span class="kw">trait </span>SigExt: ScriptContext {
+ <span class="kw">fn </span>make_signature(
+ key: <span class="kw-2">&</span>DescriptorPublicKey,
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> Policy;
- <span class="kw">fn</span> <span class="ident">find_signature</span>(<span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">Psbt</span>, <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">bool</span>;
+ <span class="kw">fn </span>find_signature(psbt: <span class="kw-2">&</span>Psbt, key: <span class="kw-2">&</span>DescriptorPublicKey, secp: <span class="kw-2">&</span>SecpCtx) -> bool;
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">ScriptContext</span> <span class="op">+</span> <span class="lifetime">'static</span><span class="op">></span> <span class="ident">SigExt</span> <span class="kw">for</span> <span class="ident">T</span> {
- <span class="kw">fn</span> <span class="ident">make_signature</span>(
- <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="ident">Policy</span> {
- <span class="kw">if</span> <span class="ident">T::as_enum</span>().<span class="ident">is_taproot</span>() {
- <span class="ident">make_generic_signature</span>(
- <span class="ident">key</span>,
- <span class="ident">signers</span>,
- <span class="ident">build_sat</span>,
- <span class="ident">secp</span>,
- <span class="op">|</span><span class="op">|</span> <span class="ident">SatisfiableItem::SchnorrSignature</span>(<span class="ident">PkOrF::from_key</span>(<span class="ident">key</span>, <span class="ident">secp</span>)),
- <span class="op">|</span><span class="ident">psbt</span><span class="op">|</span> <span class="ident"><span class="self">Self</span>::find_signature</span>(<span class="ident">psbt</span>, <span class="ident">key</span>, <span class="ident">secp</span>),
+<span class="kw">impl</span><T: ScriptContext + <span class="lifetime">'static</span>> SigExt <span class="kw">for </span>T {
+ <span class="kw">fn </span>make_signature(
+ key: <span class="kw-2">&</span>DescriptorPublicKey,
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> Policy {
+ <span class="kw">if </span>T::as_enum().is_taproot() {
+ make_generic_signature(
+ key,
+ signers,
+ build_sat,
+ secp,
+ || SatisfiableItem::SchnorrSignature(PkOrF::from_key(key, secp)),
+ |psbt| <span class="self">Self</span>::find_signature(psbt, key, secp),
)
- } <span class="kw">else</span> {
- <span class="ident">make_generic_signature</span>(
- <span class="ident">key</span>,
- <span class="ident">signers</span>,
- <span class="ident">build_sat</span>,
- <span class="ident">secp</span>,
- <span class="op">|</span><span class="op">|</span> <span class="ident">SatisfiableItem::EcdsaSignature</span>(<span class="ident">PkOrF::from_key</span>(<span class="ident">key</span>, <span class="ident">secp</span>)),
- <span class="op">|</span><span class="ident">psbt</span><span class="op">|</span> <span class="ident"><span class="self">Self</span>::find_signature</span>(<span class="ident">psbt</span>, <span class="ident">key</span>, <span class="ident">secp</span>),
+ } <span class="kw">else </span>{
+ make_generic_signature(
+ key,
+ signers,
+ build_sat,
+ secp,
+ || SatisfiableItem::EcdsaSignature(PkOrF::from_key(key, secp)),
+ |psbt| <span class="self">Self</span>::find_signature(psbt, key, secp),
)
}
}
- <span class="kw">fn</span> <span class="ident">find_signature</span>(<span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">Psbt</span>, <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">bool</span> {
- <span class="kw">if</span> <span class="ident">T::as_enum</span>().<span class="ident">is_taproot</span>() {
- <span class="ident">generic_sig_in_psbt</span>(
- <span class="ident">psbt</span>,
- <span class="ident">key</span>,
- <span class="ident">secp</span>,
- <span class="op">|</span><span class="ident">input</span>, <span class="ident">pk</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">pk</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">pk</span> {
- <span class="ident">SinglePubKey::XOnly</span>(<span class="ident">pk</span>) => <span class="ident">pk</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="bool-val">false</span>,
+ <span class="kw">fn </span>find_signature(psbt: <span class="kw-2">&</span>Psbt, key: <span class="kw-2">&</span>DescriptorPublicKey, secp: <span class="kw-2">&</span>SecpCtx) -> bool {
+ <span class="kw">if </span>T::as_enum().is_taproot() {
+ generic_sig_in_psbt(
+ psbt,
+ key,
+ secp,
+ |input, pk| {
+ <span class="kw">let </span>pk = <span class="kw">match </span>pk {
+ SinglePubKey::XOnly(pk) => pk,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="bool-val">false</span>,
};
- <span class="kw">if</span> <span class="ident">input</span>.<span class="ident">tap_internal_key</span> <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">pk</span>) <span class="op">&&</span> <span class="ident">input</span>.<span class="ident">tap_key_sig</span>.<span class="ident">is_some</span>() {
- <span class="bool-val">true</span>
- } <span class="kw">else</span> {
- <span class="ident">input</span>.<span class="ident">tap_script_sigs</span>.<span class="ident">keys</span>().<span class="ident">any</span>(<span class="op">|</span>(<span class="ident">sk</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">sk</span> <span class="op">==</span> <span class="ident">pk</span>)
+ <span class="kw">if </span>input.tap_internal_key == <span class="prelude-val">Some</span>(<span class="kw-2">*</span>pk) && input.tap_key_sig.is_some() {
+ <span class="bool-val">true
+ </span>} <span class="kw">else </span>{
+ input.tap_script_sigs.keys().any(|(sk, <span class="kw">_</span>)| sk == pk)
}
},
- <span class="op">|</span><span class="ident">input</span>, <span class="ident">fing</span><span class="op">|</span> {
- <span class="ident">input</span>
- .<span class="ident">tap_key_origins</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span>(<span class="kw">_</span>, (<span class="kw">_</span>, (<span class="ident">f</span>, <span class="kw">_</span>)))<span class="op">|</span> <span class="ident">f</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">fing</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">SinglePubKey::XOnly</span>(<span class="kw-2">*</span><span class="ident">pk</span>))
+ |input, fing| {
+ input
+ .tap_key_origins
+ .iter()
+ .find(|(<span class="kw">_</span>, (<span class="kw">_</span>, (f, <span class="kw">_</span>)))| f == <span class="kw-2">&</span>fing)
+ .map(|(pk, <span class="kw">_</span>)| SinglePubKey::XOnly(<span class="kw-2">*</span>pk))
},
)
- } <span class="kw">else</span> {
- <span class="ident">generic_sig_in_psbt</span>(
- <span class="ident">psbt</span>,
- <span class="ident">key</span>,
- <span class="ident">secp</span>,
- <span class="op">|</span><span class="ident">input</span>, <span class="ident">pk</span><span class="op">|</span> <span class="kw">match</span> <span class="ident">pk</span> {
- <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">pk</span>) => <span class="ident">input</span>.<span class="ident">partial_sigs</span>.<span class="ident">contains_key</span>(<span class="ident">pk</span>),
- <span class="kw">_</span> => <span class="bool-val">false</span>,
+ } <span class="kw">else </span>{
+ generic_sig_in_psbt(
+ psbt,
+ key,
+ secp,
+ |input, pk| <span class="kw">match </span>pk {
+ SinglePubKey::FullKey(pk) => input.partial_sigs.contains_key(pk),
+ <span class="kw">_ </span>=> <span class="bool-val">false</span>,
},
- <span class="op">|</span><span class="ident">input</span>, <span class="ident">fing</span><span class="op">|</span> {
- <span class="ident">input</span>
- .<span class="ident">bip32_derivation</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span>(<span class="kw">_</span>, (<span class="ident">f</span>, <span class="kw">_</span>))<span class="op">|</span> <span class="ident">f</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">fing</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">PublicKey::new</span>(<span class="kw-2">*</span><span class="ident">pk</span>)))
+ |input, fing| {
+ input
+ .bip32_derivation
+ .iter()
+ .find(|(<span class="kw">_</span>, (f, <span class="kw">_</span>))| f == <span class="kw-2">&</span>fing)
+ .map(|(pk, <span class="kw">_</span>)| SinglePubKey::FullKey(PublicKey::new(<span class="kw-2">*</span>pk)))
},
)
}
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">+</span> <span class="lifetime">'static</span><span class="op">></span> <span class="ident">ExtractPolicy</span> <span class="kw">for</span> <span class="ident">Miniscript</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">extract_policy</span>(
+<span class="kw">impl</span><Ctx: ScriptContext + <span class="lifetime">'static</span>> ExtractPolicy <span class="kw">for </span>Miniscript<DescriptorPublicKey, Ctx> {
+ <span class="kw">fn </span>extract_policy(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="kw">match</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">node</span> {
- <span class="comment">// Leaves</span>
- <span class="ident">Terminal::True</span> <span class="op">|</span> <span class="ident">Terminal::False</span> => <span class="prelude-val">None</span>,
- <span class="ident">Terminal::PkK</span>(<span class="ident">pubkey</span>) => <span class="prelude-val">Some</span>(<span class="ident">Ctx::make_signature</span>(<span class="ident">pubkey</span>, <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)),
- <span class="ident">Terminal::PkH</span>(<span class="ident">pubkey_hash</span>) => {
- <span class="prelude-val">Some</span>(<span class="ident">Ctx::make_signature</span>(<span class="ident">pubkey_hash</span>, <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>))
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="kw">match </span><span class="kw-2">&</span><span class="self">self</span>.node {
+ <span class="comment">// Leaves
+ </span>Terminal::True | Terminal::False => <span class="prelude-val">None</span>,
+ Terminal::PkK(pubkey) => <span class="prelude-val">Some</span>(Ctx::make_signature(pubkey, signers, build_sat, secp)),
+ Terminal::PkH(pubkey_hash) => {
+ <span class="prelude-val">Some</span>(Ctx::make_signature(pubkey_hash, signers, build_sat, secp))
}
- <span class="ident">Terminal::After</span>(<span class="ident">value</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">policy</span>: <span class="ident">Policy</span> <span class="op">=</span> <span class="ident">SatisfiableItem::AbsoluteTimelock</span> {
- <span class="ident">value</span>: <span class="ident">value</span>.<span class="ident">into</span>(),
+ Terminal::After(value) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>policy: Policy = SatisfiableItem::AbsoluteTimelock {
+ value: value.into(),
}
- .<span class="ident">into</span>();
- <span class="ident">policy</span>.<span class="ident">contribution</span> <span class="op">=</span> <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Condition</span> {
- <span class="ident">timelock</span>: <span class="prelude-val">Some</span>(<span class="ident">value</span>.<span class="ident">into</span>()),
- <span class="ident">csv</span>: <span class="prelude-val">None</span>,
+ .into();
+ policy.contribution = Satisfaction::Complete {
+ condition: Condition {
+ timelock: <span class="prelude-val">Some</span>(value.into()),
+ csv: <span class="prelude-val">None</span>,
},
};
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BuildSatisfaction::PsbtTimelocks</span> {
- <span class="ident">current_height</span>,
- <span class="ident">psbt</span>,
+ <span class="kw">if let </span>BuildSatisfaction::PsbtTimelocks {
+ current_height,
+ psbt,
..
- } <span class="op">=</span> <span class="ident">build_sat</span>
+ } = build_sat
{
- <span class="kw">let</span> <span class="ident">after</span> <span class="op">=</span> <span class="ident">After::new</span>(<span class="prelude-val">Some</span>(<span class="ident">current_height</span>), <span class="bool-val">false</span>);
- <span class="kw">let</span> <span class="ident">after_sat</span> <span class="op">=</span>
- <span class="ident">Satisfier</span>::<span class="op"><</span><span class="ident">bitcoin::PublicKey</span><span class="op">></span><span class="ident">::check_after</span>(<span class="kw-2">&</span><span class="ident">after</span>, <span class="ident">value</span>.<span class="ident">into</span>());
- <span class="kw">let</span> <span class="ident">inputs_sat</span> <span class="op">=</span> <span class="ident">psbt_inputs_sat</span>(<span class="ident">psbt</span>).<span class="ident">all</span>(<span class="op">|</span><span class="ident">sat</span><span class="op">|</span> {
- <span class="ident">Satisfier</span>::<span class="op"><</span><span class="ident">bitcoin::PublicKey</span><span class="op">></span><span class="ident">::check_after</span>(<span class="kw-2">&</span><span class="ident">sat</span>, <span class="ident">value</span>.<span class="ident">into</span>())
+ <span class="kw">let </span>after = After::new(<span class="prelude-val">Some</span>(current_height), <span class="bool-val">false</span>);
+ <span class="kw">let </span>after_sat =
+ Satisfier::<bitcoin::PublicKey>::check_after(<span class="kw-2">&</span>after, value.into());
+ <span class="kw">let </span>inputs_sat = psbt_inputs_sat(psbt).all(|sat| {
+ Satisfier::<bitcoin::PublicKey>::check_after(<span class="kw-2">&</span>sat, value.into())
});
- <span class="kw">if</span> <span class="ident">after_sat</span> <span class="op">&&</span> <span class="ident">inputs_sat</span> {
- <span class="ident">policy</span>.<span class="ident">satisfaction</span> <span class="op">=</span> <span class="ident">policy</span>.<span class="ident">contribution</span>.<span class="ident">clone</span>();
+ <span class="kw">if </span>after_sat && inputs_sat {
+ policy.satisfaction = policy.contribution.clone();
}
}
- <span class="prelude-val">Some</span>(<span class="ident">policy</span>)
+ <span class="prelude-val">Some</span>(policy)
}
- <span class="ident">Terminal::Older</span>(<span class="ident">value</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">policy</span>: <span class="ident">Policy</span> <span class="op">=</span> <span class="ident">SatisfiableItem::RelativeTimelock</span> { <span class="ident">value</span>: <span class="kw-2">*</span><span class="ident">value</span> }.<span class="ident">into</span>();
- <span class="ident">policy</span>.<span class="ident">contribution</span> <span class="op">=</span> <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Condition</span> {
- <span class="ident">timelock</span>: <span class="prelude-val">None</span>,
- <span class="ident">csv</span>: <span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">value</span>),
+ Terminal::Older(value) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>policy: Policy = SatisfiableItem::RelativeTimelock { value: <span class="kw-2">*</span>value }.into();
+ policy.contribution = Satisfaction::Complete {
+ condition: Condition {
+ timelock: <span class="prelude-val">None</span>,
+ csv: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>value),
},
};
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">BuildSatisfaction::PsbtTimelocks</span> {
- <span class="ident">current_height</span>,
- <span class="ident">input_max_height</span>,
- <span class="ident">psbt</span>,
- } <span class="op">=</span> <span class="ident">build_sat</span>
+ <span class="kw">if let </span>BuildSatisfaction::PsbtTimelocks {
+ current_height,
+ input_max_height,
+ psbt,
+ } = build_sat
{
- <span class="kw">let</span> <span class="ident">older</span> <span class="op">=</span> <span class="ident">Older::new</span>(<span class="prelude-val">Some</span>(<span class="ident">current_height</span>), <span class="prelude-val">Some</span>(<span class="ident">input_max_height</span>), <span class="bool-val">false</span>);
- <span class="kw">let</span> <span class="ident">older_sat</span> <span class="op">=</span> <span class="ident">Satisfier</span>::<span class="op"><</span><span class="ident">bitcoin::PublicKey</span><span class="op">></span><span class="ident">::check_older</span>(<span class="kw-2">&</span><span class="ident">older</span>, <span class="kw-2">*</span><span class="ident">value</span>);
- <span class="kw">let</span> <span class="ident">inputs_sat</span> <span class="op">=</span> <span class="ident">psbt_inputs_sat</span>(<span class="ident">psbt</span>)
- .<span class="ident">all</span>(<span class="op">|</span><span class="ident">sat</span><span class="op">|</span> <span class="ident">Satisfier</span>::<span class="op"><</span><span class="ident">bitcoin::PublicKey</span><span class="op">></span><span class="ident">::check_older</span>(<span class="kw-2">&</span><span class="ident">sat</span>, <span class="kw-2">*</span><span class="ident">value</span>));
- <span class="kw">if</span> <span class="ident">older_sat</span> <span class="op">&&</span> <span class="ident">inputs_sat</span> {
- <span class="ident">policy</span>.<span class="ident">satisfaction</span> <span class="op">=</span> <span class="ident">policy</span>.<span class="ident">contribution</span>.<span class="ident">clone</span>();
+ <span class="kw">let </span>older = Older::new(<span class="prelude-val">Some</span>(current_height), <span class="prelude-val">Some</span>(input_max_height), <span class="bool-val">false</span>);
+ <span class="kw">let </span>older_sat = Satisfier::<bitcoin::PublicKey>::check_older(<span class="kw-2">&</span>older, <span class="kw-2">*</span>value);
+ <span class="kw">let </span>inputs_sat = psbt_inputs_sat(psbt)
+ .all(|sat| Satisfier::<bitcoin::PublicKey>::check_older(<span class="kw-2">&</span>sat, <span class="kw-2">*</span>value));
+ <span class="kw">if </span>older_sat && inputs_sat {
+ policy.satisfaction = policy.contribution.clone();
}
}
- <span class="prelude-val">Some</span>(<span class="ident">policy</span>)
+ <span class="prelude-val">Some</span>(policy)
}
- <span class="ident">Terminal::Sha256</span>(<span class="ident">hash</span>) => <span class="prelude-val">Some</span>(<span class="ident">SatisfiableItem::Sha256Preimage</span> { <span class="ident">hash</span>: <span class="kw-2">*</span><span class="ident">hash</span> }.<span class="ident">into</span>()),
- <span class="ident">Terminal::Hash256</span>(<span class="ident">hash</span>) => {
- <span class="prelude-val">Some</span>(<span class="ident">SatisfiableItem::Hash256Preimage</span> { <span class="ident">hash</span>: <span class="kw-2">*</span><span class="ident">hash</span> }.<span class="ident">into</span>())
+ Terminal::Sha256(hash) => <span class="prelude-val">Some</span>(SatisfiableItem::Sha256Preimage { hash: <span class="kw-2">*</span>hash }.into()),
+ Terminal::Hash256(hash) => {
+ <span class="prelude-val">Some</span>(SatisfiableItem::Hash256Preimage { hash: <span class="kw-2">*</span>hash }.into())
}
- <span class="ident">Terminal::Ripemd160</span>(<span class="ident">hash</span>) => {
- <span class="prelude-val">Some</span>(<span class="ident">SatisfiableItem::Ripemd160Preimage</span> { <span class="ident">hash</span>: <span class="kw-2">*</span><span class="ident">hash</span> }.<span class="ident">into</span>())
+ Terminal::Ripemd160(hash) => {
+ <span class="prelude-val">Some</span>(SatisfiableItem::Ripemd160Preimage { hash: <span class="kw-2">*</span>hash }.into())
}
- <span class="ident">Terminal::Hash160</span>(<span class="ident">hash</span>) => {
- <span class="prelude-val">Some</span>(<span class="ident">SatisfiableItem::Hash160Preimage</span> { <span class="ident">hash</span>: <span class="kw-2">*</span><span class="ident">hash</span> }.<span class="ident">into</span>())
+ Terminal::Hash160(hash) => {
+ <span class="prelude-val">Some</span>(SatisfiableItem::Hash160Preimage { hash: <span class="kw-2">*</span>hash }.into())
}
- <span class="ident">Terminal::Multi</span>(<span class="ident">k</span>, <span class="ident">pks</span>) <span class="op">|</span> <span class="ident">Terminal::MultiA</span>(<span class="ident">k</span>, <span class="ident">pks</span>) => {
- <span class="ident">Policy::make_multisig</span>::<span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>(<span class="ident">pks</span>, <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="kw-2">*</span><span class="ident">k</span>, <span class="bool-val">false</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>
- }
- <span class="comment">// Identities</span>
- <span class="ident">Terminal::Alt</span>(<span class="ident">inner</span>)
- <span class="op">|</span> <span class="ident">Terminal::Swap</span>(<span class="ident">inner</span>)
- <span class="op">|</span> <span class="ident">Terminal::Check</span>(<span class="ident">inner</span>)
- <span class="op">|</span> <span class="ident">Terminal::DupIf</span>(<span class="ident">inner</span>)
- <span class="op">|</span> <span class="ident">Terminal::Verify</span>(<span class="ident">inner</span>)
- <span class="op">|</span> <span class="ident">Terminal::NonZero</span>(<span class="ident">inner</span>)
- <span class="op">|</span> <span class="ident">Terminal::ZeroNotEqual</span>(<span class="ident">inner</span>) => <span class="ident">inner</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
- <span class="comment">// Complex policies</span>
- <span class="ident">Terminal::AndV</span>(<span class="ident">a</span>, <span class="ident">b</span>) <span class="op">|</span> <span class="ident">Terminal::AndB</span>(<span class="ident">a</span>, <span class="ident">b</span>) => <span class="ident">Policy::make_and</span>(
- <span class="ident">a</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
- <span class="ident">b</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
+ Terminal::Multi(k, pks) | Terminal::MultiA(k, pks) => {
+ Policy::make_multisig::<Ctx>(pks, signers, build_sat, <span class="kw-2">*</span>k, <span class="bool-val">false</span>, secp)<span class="question-mark">?
+ </span>}
+ <span class="comment">// Identities
+ </span>Terminal::Alt(inner)
+ | Terminal::Swap(inner)
+ | Terminal::Check(inner)
+ | Terminal::DupIf(inner)
+ | Terminal::Verify(inner)
+ | Terminal::NonZero(inner)
+ | Terminal::ZeroNotEqual(inner) => inner.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
+ <span class="comment">// Complex policies
+ </span>Terminal::AndV(a, b) | Terminal::AndB(a, b) => Policy::make_and(
+ a.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
+ b.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
)<span class="question-mark">?</span>,
- <span class="ident">Terminal::AndOr</span>(<span class="ident">x</span>, <span class="ident">y</span>, <span class="ident">z</span>) => <span class="ident">Policy::make_or</span>(
- <span class="ident">Policy::make_and</span>(
- <span class="ident">x</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
- <span class="ident">y</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
+ Terminal::AndOr(x, y, z) => Policy::make_or(
+ Policy::make_and(
+ x.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
+ y.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
)<span class="question-mark">?</span>,
- <span class="ident">z</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
+ z.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
)<span class="question-mark">?</span>,
- <span class="ident">Terminal::OrB</span>(<span class="ident">a</span>, <span class="ident">b</span>)
- <span class="op">|</span> <span class="ident">Terminal::OrD</span>(<span class="ident">a</span>, <span class="ident">b</span>)
- <span class="op">|</span> <span class="ident">Terminal::OrC</span>(<span class="ident">a</span>, <span class="ident">b</span>)
- <span class="op">|</span> <span class="ident">Terminal::OrI</span>(<span class="ident">a</span>, <span class="ident">b</span>) => <span class="ident">Policy::make_or</span>(
- <span class="ident">a</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
- <span class="ident">b</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>,
+ Terminal::OrB(a, b)
+ | Terminal::OrD(a, b)
+ | Terminal::OrC(a, b)
+ | Terminal::OrI(a, b) => Policy::make_or(
+ a.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
+ b.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>,
)<span class="question-mark">?</span>,
- <span class="ident">Terminal::Thresh</span>(<span class="ident">k</span>, <span class="ident">nodes</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">threshold</span> <span class="op">=</span> <span class="kw-2">*</span><span class="ident">k</span>;
- <span class="kw">let</span> <span class="ident">mapped</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">nodes</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">n</span><span class="op">|</span> <span class="ident">n</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">flatten</span>()
- .<span class="ident">collect</span>();
-
- <span class="kw">if</span> <span class="ident">mapped</span>.<span class="ident">len</span>() <span class="op"><</span> <span class="ident">nodes</span>.<span class="ident">len</span>() {
- <span class="ident">threshold</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">threshold</span>.<span class="ident">checked_sub</span>(<span class="ident">nodes</span>.<span class="ident">len</span>() <span class="op">-</span> <span class="ident">mapped</span>.<span class="ident">len</span>()) {
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- <span class="prelude-val">Some</span>(<span class="ident">x</span>) => <span class="ident">x</span>,
+ Terminal::Thresh(k, nodes) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>threshold = <span class="kw-2">*</span>k;
+ <span class="kw">let </span>mapped: Vec<<span class="kw">_</span>> = nodes
+ .iter()
+ .map(|n| n.extract_policy(signers, build_sat, secp))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?
+ </span>.into_iter()
+ .flatten()
+ .collect();
+
+ <span class="kw">if </span>mapped.len() < nodes.len() {
+ threshold = <span class="kw">match </span>threshold.checked_sub(nodes.len() - mapped.len()) {
+ <span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ <span class="prelude-val">Some</span>(x) => x,
};
}
- <span class="ident">Policy::make_thresh</span>(<span class="ident">mapped</span>, <span class="ident">threshold</span>)<span class="question-mark">?</span>
- }
+ Policy::make_thresh(mapped, threshold)<span class="question-mark">?
+ </span>}
- <span class="comment">// Unsupported</span>
- <span class="ident">Terminal::RawPkH</span>(<span class="kw">_</span>) => <span class="prelude-val">None</span>,
+ <span class="comment">// Unsupported
+ </span>Terminal::RawPkH(<span class="kw">_</span>) => <span class="prelude-val">None</span>,
})
}
}
-<span class="kw">fn</span> <span class="ident">psbt_inputs_sat</span>(<span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">Psbt</span>) -> <span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="ident">PsbtInputSatisfier</span><span class="op">></span> {
- (<span class="number">0</span>..<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>()).<span class="ident">map</span>(<span class="kw">move</span> <span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">PsbtInputSatisfier::new</span>(<span class="ident">psbt</span>, <span class="ident">i</span>))
+<span class="kw">fn </span>psbt_inputs_sat(psbt: <span class="kw-2">&</span>Psbt) -> <span class="kw">impl </span>Iterator<Item = PsbtInputSatisfier> {
+ (<span class="number">0</span>..psbt.inputs.len()).map(<span class="kw">move </span>|i| PsbtInputSatisfier::new(psbt, i))
}
-<span class="doccomment">/// Options to build the satisfaction field in the policy</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">BuildSatisfaction</span><span class="op"><</span><span class="lifetime">'a</span><span class="op">></span> {
- <span class="doccomment">/// Don't generate `satisfaction` field</span>
- <span class="prelude-val">None</span>,
- <span class="doccomment">/// Analyze the given PSBT to check for existing signatures</span>
- <span class="ident">Psbt</span>(<span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Psbt</span>),
- <span class="doccomment">/// Like `Psbt` variant and also check for expired timelocks</span>
- <span class="ident">PsbtTimelocks</span> {
- <span class="doccomment">/// Given PSBT</span>
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Psbt</span>,
- <span class="doccomment">/// Current blockchain height</span>
- <span class="ident">current_height</span>: <span class="ident">u32</span>,
- <span class="doccomment">/// The highest confirmation height between the inputs</span>
- <span class="doccomment">/// CSV should consider different inputs, but we consider the worst condition for the tx as whole</span>
- <span class="ident">input_max_height</span>: <span class="ident">u32</span>,
+<span class="doccomment">/// Options to build the satisfaction field in the policy
+</span><span class="attr">#[derive(Debug, Clone, Copy)]
+</span><span class="kw">pub enum </span>BuildSatisfaction<<span class="lifetime">'a</span>> {
+ <span class="doccomment">/// Don't generate `satisfaction` field
+ </span><span class="prelude-val">None</span>,
+ <span class="doccomment">/// Analyze the given PSBT to check for existing signatures
+ </span>Psbt(<span class="kw-2">&</span><span class="lifetime">'a </span>Psbt),
+ <span class="doccomment">/// Like `Psbt` variant and also check for expired timelocks
+ </span>PsbtTimelocks {
+ <span class="doccomment">/// Given PSBT
+ </span>psbt: <span class="kw-2">&</span><span class="lifetime">'a </span>Psbt,
+ <span class="doccomment">/// Current blockchain height
+ </span>current_height: u32,
+ <span class="doccomment">/// The highest confirmation height between the inputs
+ /// CSV should consider different inputs, but we consider the worst condition for the tx as whole
+ </span>input_max_height: u32,
},
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span><span class="op">></span> <span class="ident">BuildSatisfaction</span><span class="op"><</span><span class="lifetime">'a</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">psbt</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Psbt</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">BuildSatisfaction::None</span> => <span class="prelude-val">None</span>,
- <span class="ident">BuildSatisfaction::Psbt</span>(<span class="ident">psbt</span>) => <span class="prelude-val">Some</span>(<span class="ident">psbt</span>),
- <span class="ident">BuildSatisfaction::PsbtTimelocks</span> { <span class="ident">psbt</span>, .. } => <span class="prelude-val">Some</span>(<span class="ident">psbt</span>),
+<span class="kw">impl</span><<span class="lifetime">'a</span>> BuildSatisfaction<<span class="lifetime">'a</span>> {
+ <span class="kw">fn </span>psbt(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>Psbt> {
+ <span class="kw">match </span><span class="self">self </span>{
+ BuildSatisfaction::None => <span class="prelude-val">None</span>,
+ BuildSatisfaction::Psbt(psbt) => <span class="prelude-val">Some</span>(psbt),
+ BuildSatisfaction::PsbtTimelocks { psbt, .. } => <span class="prelude-val">Some</span>(psbt),
}
}
}
-<span class="kw">impl</span> <span class="ident">ExtractPolicy</span> <span class="kw">for</span> <span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">extract_policy</span>(
+<span class="kw">impl </span>ExtractPolicy <span class="kw">for </span>Descriptor<DescriptorPublicKey> {
+ <span class="kw">fn </span>extract_policy(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">make_sortedmulti</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">+</span> <span class="lifetime">'static</span><span class="op">></span>(
- <span class="ident">keys</span>: <span class="kw-2">&</span><span class="ident">SortedMultiVec</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">Ctx</span><span class="op">></span>,
- <span class="ident">signers</span>: <span class="kw-2">&</span><span class="ident">SignersContainer</span>,
- <span class="ident">build_sat</span>: <span class="ident">BuildSatisfaction</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">Policy::make_multisig</span>::<span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>(
- <span class="ident">keys</span>.<span class="ident">pks</span>.<span class="ident">as_ref</span>(),
- <span class="ident">signers</span>,
- <span class="ident">build_sat</span>,
- <span class="ident">keys</span>.<span class="ident">k</span>,
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, Error> {
+ <span class="kw">fn </span>make_sortedmulti<Ctx: ScriptContext + <span class="lifetime">'static</span>>(
+ keys: <span class="kw-2">&</span>SortedMultiVec<DescriptorPublicKey, Ctx>,
+ signers: <span class="kw-2">&</span>SignersContainer,
+ build_sat: BuildSatisfaction,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, Error> {
+ <span class="prelude-val">Ok</span>(Policy::make_multisig::<Ctx>(
+ keys.pks.as_ref(),
+ signers,
+ build_sat,
+ keys.k,
<span class="bool-val">true</span>,
- <span class="ident">secp</span>,
+ secp,
)<span class="question-mark">?</span>)
}
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">Descriptor::Pkh</span>(<span class="ident">pk</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">miniscript::Legacy::make_signature</span>(
- <span class="ident">pk</span>.<span class="ident">as_inner</span>(),
- <span class="ident">signers</span>,
- <span class="ident">build_sat</span>,
- <span class="ident">secp</span>,
+ <span class="kw">match </span><span class="self">self </span>{
+ Descriptor::Pkh(pk) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(miniscript::Legacy::make_signature(
+ pk.as_inner(),
+ signers,
+ build_sat,
+ secp,
))),
- <span class="ident">Descriptor::Wpkh</span>(<span class="ident">pk</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">miniscript::Segwitv0::make_signature</span>(
- <span class="ident">pk</span>.<span class="ident">as_inner</span>(),
- <span class="ident">signers</span>,
- <span class="ident">build_sat</span>,
- <span class="ident">secp</span>,
+ Descriptor::Wpkh(pk) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(miniscript::Segwitv0::make_signature(
+ pk.as_inner(),
+ signers,
+ build_sat,
+ secp,
))),
- <span class="ident">Descriptor::Sh</span>(<span class="ident">sh</span>) => <span class="kw">match</span> <span class="ident">sh</span>.<span class="ident">as_inner</span>() {
- <span class="ident">ShInner::Wpkh</span>(<span class="ident">pk</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">miniscript::Segwitv0::make_signature</span>(
- <span class="ident">pk</span>.<span class="ident">as_inner</span>(),
- <span class="ident">signers</span>,
- <span class="ident">build_sat</span>,
- <span class="ident">secp</span>,
+ Descriptor::Sh(sh) => <span class="kw">match </span>sh.as_inner() {
+ ShInner::Wpkh(pk) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(miniscript::Segwitv0::make_signature(
+ pk.as_inner(),
+ signers,
+ build_sat,
+ secp,
))),
- <span class="ident">ShInner::Ms</span>(<span class="ident">ms</span>) => <span class="prelude-val">Ok</span>(<span class="ident">ms</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>),
- <span class="ident">ShInner::SortedMulti</span>(<span class="kw-2">ref</span> <span class="ident">keys</span>) => <span class="ident">make_sortedmulti</span>(<span class="ident">keys</span>, <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>),
- <span class="ident">ShInner::Wsh</span>(<span class="ident">wsh</span>) => <span class="kw">match</span> <span class="ident">wsh</span>.<span class="ident">as_inner</span>() {
- <span class="ident">WshInner::Ms</span>(<span class="ident">ms</span>) => <span class="prelude-val">Ok</span>(<span class="ident">ms</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>),
- <span class="ident">WshInner::SortedMulti</span>(<span class="kw-2">ref</span> <span class="ident">keys</span>) => {
- <span class="ident">make_sortedmulti</span>(<span class="ident">keys</span>, <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)
+ ShInner::Ms(ms) => <span class="prelude-val">Ok</span>(ms.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>),
+ ShInner::SortedMulti(<span class="kw-2">ref </span>keys) => make_sortedmulti(keys, signers, build_sat, secp),
+ ShInner::Wsh(wsh) => <span class="kw">match </span>wsh.as_inner() {
+ WshInner::Ms(ms) => <span class="prelude-val">Ok</span>(ms.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>),
+ WshInner::SortedMulti(<span class="kw-2">ref </span>keys) => {
+ make_sortedmulti(keys, signers, build_sat, secp)
}
},
},
- <span class="ident">Descriptor::Wsh</span>(<span class="ident">wsh</span>) => <span class="kw">match</span> <span class="ident">wsh</span>.<span class="ident">as_inner</span>() {
- <span class="ident">WshInner::Ms</span>(<span class="ident">ms</span>) => <span class="prelude-val">Ok</span>(<span class="ident">ms</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>),
- <span class="ident">WshInner::SortedMulti</span>(<span class="kw-2">ref</span> <span class="ident">keys</span>) => <span class="ident">make_sortedmulti</span>(<span class="ident">keys</span>, <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>),
+ Descriptor::Wsh(wsh) => <span class="kw">match </span>wsh.as_inner() {
+ WshInner::Ms(ms) => <span class="prelude-val">Ok</span>(ms.extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>),
+ WshInner::SortedMulti(<span class="kw-2">ref </span>keys) => make_sortedmulti(keys, signers, build_sat, secp),
},
- <span class="ident">Descriptor::Bare</span>(<span class="ident">ms</span>) => <span class="prelude-val">Ok</span>(<span class="ident">ms</span>.<span class="ident">as_inner</span>().<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>),
- <span class="ident">Descriptor::Tr</span>(<span class="ident">tr</span>) => {
- <span class="comment">// If there's no tap tree, treat this as a single sig, otherwise build a `Thresh`</span>
- <span class="comment">// node with threshold = 1 and the key spend signature plus all the tree leaves</span>
- <span class="kw">let</span> <span class="ident">key_spend_sig</span> <span class="op">=</span>
- <span class="ident">miniscript::Tap::make_signature</span>(<span class="ident">tr</span>.<span class="ident">internal_key</span>(), <span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>);
-
- <span class="kw">if</span> <span class="ident">tr</span>.<span class="ident">taptree</span>().<span class="ident">is_none</span>() {
- <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">key_spend_sig</span>))
- } <span class="kw">else</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">items</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">key_spend_sig</span>];
- <span class="ident">items</span>.<span class="ident">append</span>(
- <span class="kw-2">&mut</span> <span class="ident">tr</span>
- .<span class="ident">iter_scripts</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">ms</span>)<span class="op">|</span> {
- <span class="ident">ms</span>.<span class="ident">extract_policy</span>(<span class="ident">signers</span>, <span class="ident">build_sat</span>, <span class="ident">secp</span>).<span class="ident">transpose</span>()
+ Descriptor::Bare(ms) => <span class="prelude-val">Ok</span>(ms.as_inner().extract_policy(signers, build_sat, secp)<span class="question-mark">?</span>),
+ Descriptor::Tr(tr) => {
+ <span class="comment">// If there's no tap tree, treat this as a single sig, otherwise build a `Thresh`
+ // node with threshold = 1 and the key spend signature plus all the tree leaves
+ </span><span class="kw">let </span>key_spend_sig =
+ miniscript::Tap::make_signature(tr.internal_key(), signers, build_sat, secp);
+
+ <span class="kw">if </span>tr.taptree().is_none() {
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(key_spend_sig))
+ } <span class="kw">else </span>{
+ <span class="kw">let </span><span class="kw-2">mut </span>items = <span class="macro">vec!</span>[key_spend_sig];
+ items.append(
+ <span class="kw-2">&mut </span>tr
+ .iter_scripts()
+ .filter_map(|(<span class="kw">_</span>, ms)| {
+ ms.extract_policy(signers, build_sat, secp).transpose()
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>,
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>,
);
- <span class="prelude-val">Ok</span>(<span class="ident">Policy::make_thresh</span>(<span class="ident">items</span>, <span class="number">1</span>)<span class="question-mark">?</span>)
+ <span class="prelude-val">Ok</span>(Policy::make_thresh(items, <span class="number">1</span>)<span class="question-mark">?</span>)
}
}
}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>::{<span class="ident">ExtractPolicy</span>, <span class="ident">IntoWalletDescriptor</span>};
-
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::policy::SatisfiableItem</span>::{<span class="ident">EcdsaSignature</span>, <span class="ident">Multisig</span>, <span class="ident">Thresh</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::signer::SignersContainer</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::secp256k1::Secp256k1</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::Network</span>;
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
- <span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
-
- <span class="kw">const</span> <span class="ident">TPRV0_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf"</span>;
- <span class="kw">const</span> <span class="ident">TPRV1_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N"</span>;
-
- <span class="kw">const</span> <span class="ident">PATH</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"m/44'/1'/0'/0"</span>;
-
- <span class="kw">fn</span> <span class="ident">setup_keys</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">tprv</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- <span class="ident">path</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> (<span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">Fingerprint</span>) {
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="ident">path</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="ident">tprv</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tpub</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPubKey::from_priv</span>(<span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">tprv</span>);
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">tprv</span>.<span class="ident">fingerprint</span>(<span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span> (<span class="ident">tprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> (<span class="ident">tpub</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
-
- (<span class="ident">prvkey</span>, <span class="ident">pubkey</span>, <span class="ident">fingerprint</span>)
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor;
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::{ExtractPolicy, IntoWalletDescriptor};
+
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::policy::SatisfiableItem::{EcdsaSignature, Multisig, Thresh};
+ <span class="kw">use </span><span class="kw">crate</span>::keys::{DescriptorKey, IntoDescriptorKey};
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::signer::SignersContainer;
+ <span class="kw">use </span>bitcoin::secp256k1::Secp256k1;
+ <span class="kw">use </span>bitcoin::util::bip32;
+ <span class="kw">use </span>bitcoin::Network;
+ <span class="kw">use </span>std::str::FromStr;
+ <span class="kw">use </span>std::sync::Arc;
+
+ <span class="kw">const </span>TPRV0_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf"</span>;
+ <span class="kw">const </span>TPRV1_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N"</span>;
+
+ <span class="kw">const </span>PATH: <span class="kw-2">&</span>str = <span class="string">"m/44'/1'/0'/0"</span>;
+
+ <span class="kw">fn </span>setup_keys<Ctx: ScriptContext>(
+ tprv: <span class="kw-2">&</span>str,
+ path: <span class="kw-2">&</span>str,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> (DescriptorKey<Ctx>, DescriptorKey<Ctx>, Fingerprint) {
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(path).unwrap();
+ <span class="kw">let </span>tprv = bip32::ExtendedPrivKey::from_str(tprv).unwrap();
+ <span class="kw">let </span>tpub = bip32::ExtendedPubKey::from_priv(secp, <span class="kw-2">&</span>tprv);
+ <span class="kw">let </span>fingerprint = tprv.fingerprint(secp);
+ <span class="kw">let </span>prvkey = (tprv, path.clone()).into_descriptor_key().unwrap();
+ <span class="kw">let </span>pubkey = (tpub, path).into_descriptor_key().unwrap();
+
+ (prvkey, pubkey, fingerprint)
}
- <span class="comment">// test ExtractPolicy trait for simple descriptors; wpkh(), sh(multi())</span>
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_wpkh</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">prvkey</span>, <span class="ident">pubkey</span>, <span class="ident">fingerprint</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">pubkey</span>)).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">EcdsaSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">f</span>)) <span class="kw">if</span> <span class="ident">f</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">fingerprint</span>));
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::None</span>));
-
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">prvkey</span>)).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">EcdsaSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">f</span>)) <span class="kw">if</span> <span class="ident">f</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">fingerprint</span>));
+ <span class="comment">// test ExtractPolicy trait for simple descriptors; wpkh(), sh(multi())
+
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_policy_for_wpkh() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(prvkey, pubkey, fingerprint) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wpkh(pubkey)).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, EcdsaSignature(PkOrF::Fingerprint(f)) <span class="kw">if </span>f == <span class="kw-2">&</span>fingerprint));
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::None));
+
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wpkh(prvkey)).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, EcdsaSignature(PkOrF::Fingerprint(f)) <span class="kw">if </span>f == <span class="kw-2">&</span>fingerprint));
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::Complete</span> {<span class="ident">condition</span>} <span class="kw">if</span> <span class="ident">condition</span>.<span class="ident">csv</span> <span class="op">==</span> <span class="prelude-val">None</span> <span class="op">&&</span> <span class="ident">condition</span>.<span class="ident">timelock</span> <span class="op">==</span> <span class="prelude-val">None</span>)
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::Complete {condition} <span class="kw">if </span>condition.csv == <span class="prelude-val">None </span>&& condition.timelock == <span class="prelude-val">None</span>)
);
}
- <span class="comment">// 2 pub keys descriptor, required 2 prv keys</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_sh_multi_partial_0of2</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
- <span class="kw">let</span> (<span class="ident">_prvkey0</span>, <span class="ident">pubkey0</span>, <span class="ident">fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">_prvkey1</span>, <span class="ident">pubkey1</span>, <span class="ident">fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">pubkey0</span>, <span class="ident">pubkey1</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="comment">// 2 pub keys descriptor, required 2 prv keys
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_policy_for_sh_multi_partial_0of2() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+ <span class="kw">let </span>(_prvkey0, pubkey0, fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(_prvkey1, pubkey1, fingerprint1) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(multi(<span class="number">2</span>, pubkey0, pubkey1))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">Multisig</span> { <span class="ident">keys</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2usize</span>
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">0</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint0</span>)
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">1</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint1</span>))
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, Multisig { keys, threshold } <span class="kw">if </span>threshold == <span class="kw-2">&</span><span class="number">2usize
+ </span>&& keys[<span class="number">0</span>] == PkOrF::Fingerprint(fingerprint0)
+ && keys[<span class="number">1</span>] == PkOrF::Fingerprint(fingerprint1))
);
- <span class="comment">// TODO should this be "Satisfaction::None" since we have no prv keys?</span>
- <span class="comment">// TODO should items and conditions not be empty?</span>
- <span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, <span class="ident">conditions</span>, ..} <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2usize</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2usize</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">is_empty</span>()
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">is_empty</span>()
+ <span class="comment">// TODO should this be "Satisfaction::None" since we have no prv keys?
+ // TODO should items and conditions not be empty?
+ </span><span class="macro">assert!</span>(
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::Partial { n, m, items, conditions, ..} <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2usize
+ </span>&& m == <span class="kw-2">&</span><span class="number">2usize
+ </span>&& items.is_empty()
+ && conditions.is_empty()
)
);
}
- <span class="comment">// 1 prv and 1 pub key descriptor, required 2 prv keys</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_sh_multi_partial_1of2</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
- <span class="kw">let</span> (<span class="ident">prvkey0</span>, <span class="ident">_pubkey0</span>, <span class="ident">fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">_prvkey1</span>, <span class="ident">pubkey1</span>, <span class="ident">fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">prvkey0</span>, <span class="ident">pubkey1</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="comment">// 1 prv and 1 pub key descriptor, required 2 prv keys
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_policy_for_sh_multi_partial_1of2() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+ <span class="kw">let </span>(prvkey0, _pubkey0, fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(_prvkey1, pubkey1, fingerprint1) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(multi(<span class="number">2</span>, prvkey0, pubkey1))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">Multisig</span> { <span class="ident">keys</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2usize</span>
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">0</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint0</span>)
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">1</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint1</span>))
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, Multisig { keys, threshold } <span class="kw">if </span>threshold == <span class="kw-2">&</span><span class="number">2usize
+ </span>&& keys[<span class="number">0</span>] == PkOrF::Fingerprint(fingerprint0)
+ && keys[<span class="number">1</span>] == PkOrF::Fingerprint(fingerprint1))
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, <span class="ident">conditions</span>, ..} <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2usize</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2usize</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">1</span>
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="number">0</span>)
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::Partial { n, m, items, conditions, ..} <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2usize
+ </span>&& m == <span class="kw-2">&</span><span class="number">2usize
+ </span>&& items.len() == <span class="number">1
+ </span>&& conditions.contains_key(<span class="kw-2">&</span><span class="number">0</span>)
)
);
}
- <span class="comment">// 1 prv and 1 pub key descriptor, required 1 prv keys</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">ignore</span>]</span> <span class="comment">// see https://github.com/bitcoindevkit/bdk/issues/225</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_sh_multi_complete_1of2</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">_prvkey0</span>, <span class="ident">pubkey0</span>, <span class="ident">fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey1</span>, <span class="ident">_pubkey1</span>, <span class="ident">fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">pubkey0</span>, <span class="ident">prvkey1</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="comment">// 1 prv and 1 pub key descriptor, required 1 prv keys
+ </span><span class="attr">#[test]
+ #[ignore] </span><span class="comment">// see https://github.com/bitcoindevkit/bdk/issues/225
+ </span><span class="kw">fn </span>test_extract_policy_for_sh_multi_complete_1of2() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(_prvkey0, pubkey0, fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey1, _pubkey1, fingerprint1) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(multi(<span class="number">1</span>, pubkey0, prvkey1))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">Multisig</span> { <span class="ident">keys</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">1</span>
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">0</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint0</span>)
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">1</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint1</span>))
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, Multisig { keys, threshold } <span class="kw">if </span>threshold == <span class="kw-2">&</span><span class="number">1
+ </span>&& keys[<span class="number">0</span>] == PkOrF::Fingerprint(fingerprint0)
+ && keys[<span class="number">1</span>] == PkOrF::Fingerprint(fingerprint1))
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, <span class="ident">conditions</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">1</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">2</span>
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>])
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>])
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2
+ </span>&& m == <span class="kw-2">&</span><span class="number">1
+ </span>&& items.len() == <span class="number">2
+ </span>&& conditions.contains_key(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>])
+ && conditions.contains_key(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>])
)
);
}
- <span class="comment">// 2 prv keys descriptor, required 2 prv keys</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_sh_multi_complete_2of2</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">prvkey0</span>, <span class="ident">_pubkey0</span>, <span class="ident">fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey1</span>, <span class="ident">_pubkey1</span>, <span class="ident">fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">prvkey0</span>, <span class="ident">prvkey1</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="comment">// 2 prv keys descriptor, required 2 prv keys
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_policy_for_sh_multi_complete_2of2() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(prvkey0, _pubkey0, fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey1, _pubkey1, fingerprint1) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(multi(<span class="number">2</span>, prvkey0, prvkey1))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">Multisig</span> { <span class="ident">keys</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">0</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint0</span>)
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">1</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint1</span>))
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, Multisig { keys, threshold } <span class="kw">if </span>threshold == <span class="kw-2">&</span><span class="number">2
+ </span>&& keys[<span class="number">0</span>] == PkOrF::Fingerprint(fingerprint0)
+ && keys[<span class="number">1</span>] == PkOrF::Fingerprint(fingerprint1))
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, <span class="ident">conditions</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">2</span>
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>,<span class="number">1</span>])
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items.len() == <span class="number">2
+ </span>&& conditions.contains_key(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>,<span class="number">1</span>])
)
);
}
- <span class="comment">// test ExtractPolicy trait with extended and single keys</span>
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_single_wpkh</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">prvkey</span>, <span class="ident">pubkey</span>, <span class="ident">fingerprint</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">pubkey</span>)).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">EcdsaSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">f</span>)) <span class="kw">if</span> <span class="ident">f</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">fingerprint</span>));
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::None</span>));
-
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">prvkey</span>)).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">EcdsaSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">f</span>)) <span class="kw">if</span> <span class="ident">f</span> <span class="op">==</span> <span class="ident">fingerprint</span>));
+ <span class="comment">// test ExtractPolicy trait with extended and single keys
+
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_policy_for_single_wpkh() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(prvkey, pubkey, fingerprint) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wpkh(pubkey)).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, EcdsaSignature(PkOrF::Fingerprint(f)) <span class="kw">if </span>f == <span class="kw-2">&</span>fingerprint));
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::None));
+
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wpkh(prvkey)).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(policy.item, EcdsaSignature(PkOrF::Fingerprint(f)) <span class="kw">if </span>f == fingerprint));
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::Complete</span> {<span class="ident">condition</span>} <span class="kw">if</span> <span class="ident">condition</span>.<span class="ident">csv</span> <span class="op">==</span> <span class="prelude-val">None</span> <span class="op">&&</span> <span class="ident">condition</span>.<span class="ident">timelock</span> <span class="op">==</span> <span class="prelude-val">None</span>)
+ <span class="macro">matches!</span>(policy.contribution, Satisfaction::Complete {condition} <span class="kw">if </span>condition.csv == <span class="prelude-val">None </span>&& condition.timelock == <span class="prelude-val">None</span>)
);
}
- <span class="comment">// single key, 1 prv and 1 pub key descriptor, required 1 prv keys</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">ignore</span>]</span> <span class="comment">// see https://github.com/bitcoindevkit/bdk/issues/225</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_single_wsh_multi_complete_1of2</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">_prvkey0</span>, <span class="ident">pubkey0</span>, <span class="ident">fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey1</span>, <span class="ident">_pubkey1</span>, <span class="ident">fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">pubkey0</span>, <span class="ident">prvkey1</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="comment">// single key, 1 prv and 1 pub key descriptor, required 1 prv keys
+ </span><span class="attr">#[test]
+ #[ignore] </span><span class="comment">// see https://github.com/bitcoindevkit/bdk/issues/225
+ </span><span class="kw">fn </span>test_extract_policy_for_single_wsh_multi_complete_1of2() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(_prvkey0, pubkey0, fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey1, _pubkey1, fingerprint1) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(multi(<span class="number">1</span>, pubkey0, prvkey1))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">Multisig</span> { <span class="ident">keys</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="number">1</span>
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">0</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint0</span>)
- <span class="op">&&</span> <span class="ident">keys</span>[<span class="number">1</span>] <span class="op">==</span> <span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint1</span>))
+ <span class="macro">matches!</span>(policy.item, Multisig { keys, threshold } <span class="kw">if </span>threshold == <span class="number">1
+ </span>&& keys[<span class="number">0</span>] == PkOrF::Fingerprint(fingerprint0)
+ && keys[<span class="number">1</span>] == PkOrF::Fingerprint(fingerprint1))
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, <span class="ident">conditions</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="number">2</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="number">1</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">2</span>
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>])
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>])
+ <span class="macro">matches!</span>(policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions, .. } <span class="kw">if </span>n == <span class="number">2
+ </span>&& m == <span class="number">1
+ </span>&& items.len() == <span class="number">2
+ </span>&& conditions.contains_key(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>])
+ && conditions.contains_key(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>])
)
);
}
- <span class="comment">// test ExtractPolicy trait with descriptors containing timelocks in a thresh()</span>
+ <span class="comment">// test ExtractPolicy trait with descriptors containing timelocks in a thresh()
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">ignore</span>]</span> <span class="comment">// see https://github.com/bitcoindevkit/bdk/issues/225</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_wsh_multi_timelock</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ </span><span class="attr">#[test]
+ #[ignore] </span><span class="comment">// see https://github.com/bitcoindevkit/bdk/issues/225
+ </span><span class="kw">fn </span>test_extract_policy_for_wsh_multi_timelock() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="ident">prvkey0</span>, <span class="ident">_pubkey0</span>, <span class="ident">_fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">_prvkey1</span>, <span class="ident">pubkey1</span>, <span class="ident">_fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">sequence</span> <span class="op">=</span> <span class="number">50</span>;
- <span class="attribute">#[<span class="ident">rustfmt::skip</span>]</span>
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">thresh</span>(
+ <span class="kw">let </span>(prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(_prvkey1, pubkey1, _fingerprint1) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>sequence = <span class="number">50</span>;
+ <span class="attr">#[rustfmt::skip]
+ </span><span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wsh(thresh(
<span class="number">2</span>,
- <span class="ident">pk</span>(<span class="ident">prvkey0</span>),
- <span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">pubkey1</span>),
- <span class="ident">s</span>:<span class="ident">d</span>:<span class="ident">v</span>:<span class="ident">older</span>(<span class="ident">sequence</span>)
+ pk(prvkey0),
+ s:pk(pubkey1),
+ s:d:v:older(sequence)
)))
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">Thresh</span> { <span class="ident">items</span>, <span class="ident">threshold</span> } <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">3</span> <span class="op">&&</span> <span class="ident">threshold</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>)
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.item, Thresh { items, threshold } <span class="kw">if </span>items.len() == <span class="number">3 </span>&& threshold == <span class="kw-2">&</span><span class="number">2</span>)
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, <span class="ident">conditions</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">3</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">3</span>
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>,<span class="number">1</span>]).<span class="ident">unwrap</span>().<span class="ident">iter</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>().<span class="ident">csv</span>.<span class="ident">is_none</span>()
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>,<span class="number">2</span>]).<span class="ident">unwrap</span>().<span class="ident">iter</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>().<span class="ident">csv</span> <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Sequence</span>(<span class="ident">sequence</span>))
- <span class="op">&&</span> <span class="ident">conditions</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>,<span class="number">2</span>]).<span class="ident">unwrap</span>().<span class="ident">iter</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>().<span class="ident">csv</span> <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Sequence</span>(<span class="ident">sequence</span>))
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">3
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items.len() == <span class="number">3
+ </span>&& conditions.get(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>,<span class="number">1</span>]).unwrap().iter().next().unwrap().csv.is_none()
+ && conditions.get(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>,<span class="number">2</span>]).unwrap().iter().next().unwrap().csv == <span class="prelude-val">Some</span>(Sequence(sequence))
+ && conditions.get(<span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>,<span class="number">2</span>]).unwrap().iter().next().unwrap().csv == <span class="prelude-val">Some</span>(Sequence(sequence))
)
);
}
- <span class="comment">// - mixed timelocks should fail</span>
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">ignore</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_wsh_mixed_timelocks</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
- <span class="kw">let</span> (<span class="ident">prvkey0</span>, <span class="ident">_pubkey0</span>, <span class="ident">_fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">locktime_threshold</span> <span class="op">=</span> <span class="number">500000000</span>; <span class="comment">// if less than this means block number, else block time in seconds</span>
- <span class="kw">let</span> <span class="ident">locktime_blocks</span> <span class="op">=</span> <span class="number">100</span>;
- <span class="kw">let</span> <span class="ident">locktime_seconds</span> <span class="op">=</span> <span class="ident">locktime_blocks</span> <span class="op">+</span> <span class="ident">locktime_threshold</span>;
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">and_v</span>(
- <span class="ident">v</span>: <span class="ident">pk</span>(<span class="ident">prvkey0</span>),
- <span class="ident">and_v</span>(<span class="ident">v</span>: <span class="ident">after</span>(<span class="ident">locktime_seconds</span>), <span class="ident">after</span>(<span class="ident">locktime_blocks</span>))
+ <span class="comment">// - mixed timelocks should fail
+
+ </span><span class="attr">#[test]
+ #[ignore]
+ </span><span class="kw">fn </span>test_extract_policy_for_wsh_mixed_timelocks() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+ <span class="kw">let </span>(prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>locktime_threshold = <span class="number">500000000</span>; <span class="comment">// if less than this means block number, else block time in seconds
+ </span><span class="kw">let </span>locktime_blocks = <span class="number">100</span>;
+ <span class="kw">let </span>locktime_seconds = locktime_blocks + locktime_threshold;
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(and_v(
+ v: pk(prvkey0),
+ and_v(v: after(locktime_seconds), after(locktime_blocks))
)))
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
- <span class="macro">println!</span>(<span class="string">"desc policy = {:?}"</span>, <span class="ident">policy</span>); <span class="comment">// TODO remove</span>
- <span class="comment">// TODO how should this fail with mixed timelocks?</span>
- }
-
- <span class="comment">// - multiple timelocks of the same type should be correctly merged together</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">ignore</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_policy_for_multiple_same_timelocks</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
- <span class="kw">let</span> (<span class="ident">prvkey0</span>, <span class="ident">_pubkey0</span>, <span class="ident">_fingerprint0</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">locktime_blocks0</span> <span class="op">=</span> <span class="number">100</span>;
- <span class="kw">let</span> <span class="ident">locktime_blocks1</span> <span class="op">=</span> <span class="number">200</span>;
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">and_v</span>(
- <span class="ident">v</span>: <span class="ident">pk</span>(<span class="ident">prvkey0</span>),
- <span class="ident">and_v</span>(<span class="ident">v</span>: <span class="ident">after</span>(<span class="ident">locktime_blocks0</span>), <span class="ident">after</span>(<span class="ident">locktime_blocks1</span>))
+ .unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+ <span class="macro">println!</span>(<span class="string">"desc policy = {:?}"</span>, policy); <span class="comment">// TODO remove
+ // TODO how should this fail with mixed timelocks?
+ </span>}
+
+ <span class="comment">// - multiple timelocks of the same type should be correctly merged together
+ </span><span class="attr">#[test]
+ #[ignore]
+ </span><span class="kw">fn </span>test_extract_policy_for_multiple_same_timelocks() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+ <span class="kw">let </span>(prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>locktime_blocks0 = <span class="number">100</span>;
+ <span class="kw">let </span>locktime_blocks1 = <span class="number">200</span>;
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(and_v(
+ v: pk(prvkey0),
+ and_v(v: after(locktime_blocks0), after(locktime_blocks1))
)))
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
- <span class="macro">println!</span>(<span class="string">"desc policy = {:?}"</span>, <span class="ident">policy</span>); <span class="comment">// TODO remove</span>
- <span class="comment">// TODO how should this merge timelocks?</span>
- <span class="kw">let</span> (<span class="ident">prvkey1</span>, <span class="ident">_pubkey1</span>, <span class="ident">_fingerprint1</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">locktime_seconds0</span> <span class="op">=</span> <span class="number">500000100</span>;
- <span class="kw">let</span> <span class="ident">locktime_seconds1</span> <span class="op">=</span> <span class="number">500000200</span>;
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">and_v</span>(
- <span class="ident">v</span>: <span class="ident">pk</span>(<span class="ident">prvkey1</span>),
- <span class="ident">and_v</span>(<span class="ident">v</span>: <span class="ident">after</span>(<span class="ident">locktime_seconds0</span>), <span class="ident">after</span>(<span class="ident">locktime_seconds1</span>))
+ .unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+ <span class="macro">println!</span>(<span class="string">"desc policy = {:?}"</span>, policy); <span class="comment">// TODO remove
+ // TODO how should this merge timelocks?
+ </span><span class="kw">let </span>(prvkey1, _pubkey1, _fingerprint1) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>locktime_seconds0 = <span class="number">500000100</span>;
+ <span class="kw">let </span>locktime_seconds1 = <span class="number">500000200</span>;
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(and_v(
+ v: pk(prvkey1),
+ and_v(v: after(locktime_seconds0), after(locktime_seconds1))
)))
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="macro">println!</span>(<span class="string">"desc policy = {:?}"</span>, <span class="ident">policy</span>); <span class="comment">// TODO remove</span>
-
- <span class="comment">// TODO how should this merge timelocks?</span>
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_get_condition_multisig</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">pk0</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">pk1</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>, <span class="ident">PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
-
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">1</span>, <span class="ident">pk0</span>, <span class="ident">pk1</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
-
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="comment">// no args, choose the default</span>
- <span class="kw">let</span> <span class="ident">no_args</span> <span class="op">=</span> <span class="ident">policy</span>.<span class="ident">get_condition</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[].<span class="ident">into_iter</span>().<span class="ident">collect</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">no_args</span>, <span class="prelude-val">Ok</span>(<span class="ident">Condition::default</span>()));
-
- <span class="comment">// enough args</span>
- <span class="kw">let</span> <span class="ident">eq_thresh</span> <span class="op">=</span>
- <span class="ident">policy</span>.<span class="ident">get_condition</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[(<span class="ident">policy</span>.<span class="ident">id</span>.<span class="ident">clone</span>(), <span class="macro">vec!</span>[<span class="number">0</span>])].<span class="ident">into_iter</span>().<span class="ident">collect</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">eq_thresh</span>, <span class="prelude-val">Ok</span>(<span class="ident">Condition::default</span>()));
-
- <span class="comment">// more args, it doesn't really change anything</span>
- <span class="kw">let</span> <span class="ident">gt_thresh</span> <span class="op">=</span>
- <span class="ident">policy</span>.<span class="ident">get_condition</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[(<span class="ident">policy</span>.<span class="ident">id</span>.<span class="ident">clone</span>(), <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>])].<span class="ident">into_iter</span>().<span class="ident">collect</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">gt_thresh</span>, <span class="prelude-val">Ok</span>(<span class="ident">Condition::default</span>()));
-
- <span class="comment">// not enough args, error</span>
- <span class="kw">let</span> <span class="ident">lt_thresh</span> <span class="op">=</span>
- <span class="ident">policy</span>.<span class="ident">get_condition</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[(<span class="ident">policy</span>.<span class="ident">id</span>.<span class="ident">clone</span>(), <span class="macro">vec!</span>[])].<span class="ident">into_iter</span>().<span class="ident">collect</span>());
+ .unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+
+ <span class="macro">println!</span>(<span class="string">"desc policy = {:?}"</span>, policy); <span class="comment">// TODO remove
+
+ // TODO how should this merge timelocks?
+ </span>}
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_get_condition_multisig() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(<span class="kw">_</span>, pk0, <span class="kw">_</span>) = setup_keys(TPRV0_STR, PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(<span class="kw">_</span>, pk1, <span class="kw">_</span>) = setup_keys(TPRV1_STR, PATH, <span class="kw-2">&</span>secp);
+
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wsh(multi(<span class="number">1</span>, pk0, pk1))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
+
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+
+ <span class="comment">// no args, choose the default
+ </span><span class="kw">let </span>no_args = policy.get_condition(<span class="kw-2">&</span><span class="macro">vec!</span>[].into_iter().collect());
+ <span class="macro">assert_eq!</span>(no_args, <span class="prelude-val">Ok</span>(Condition::default()));
+
+ <span class="comment">// enough args
+ </span><span class="kw">let </span>eq_thresh =
+ policy.get_condition(<span class="kw-2">&</span><span class="macro">vec!</span>[(policy.id.clone(), <span class="macro">vec!</span>[<span class="number">0</span>])].into_iter().collect());
+ <span class="macro">assert_eq!</span>(eq_thresh, <span class="prelude-val">Ok</span>(Condition::default()));
+
+ <span class="comment">// more args, it doesn't really change anything
+ </span><span class="kw">let </span>gt_thresh =
+ policy.get_condition(<span class="kw-2">&</span><span class="macro">vec!</span>[(policy.id.clone(), <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>])].into_iter().collect());
+ <span class="macro">assert_eq!</span>(gt_thresh, <span class="prelude-val">Ok</span>(Condition::default()));
+
+ <span class="comment">// not enough args, error
+ </span><span class="kw">let </span>lt_thresh =
+ policy.get_condition(<span class="kw-2">&</span><span class="macro">vec!</span>[(policy.id.clone(), <span class="macro">vec!</span>[])].into_iter().collect());
<span class="macro">assert_eq!</span>(
- <span class="ident">lt_thresh</span>,
- <span class="prelude-val">Err</span>(<span class="ident">PolicyError::NotEnoughItemsSelected</span>(<span class="ident">policy</span>.<span class="ident">id</span>.<span class="ident">clone</span>()))
+ lt_thresh,
+ <span class="prelude-val">Err</span>(PolicyError::NotEnoughItemsSelected(policy.id.clone()))
);
- <span class="comment">// index out of range</span>
- <span class="kw">let</span> <span class="ident">out_of_range</span> <span class="op">=</span>
- <span class="ident">policy</span>.<span class="ident">get_condition</span>(<span class="kw-2">&</span><span class="macro">vec!</span>[(<span class="ident">policy</span>.<span class="ident">id</span>.<span class="ident">clone</span>(), <span class="macro">vec!</span>[<span class="number">5</span>])].<span class="ident">into_iter</span>().<span class="ident">collect</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">out_of_range</span>, <span class="prelude-val">Err</span>(<span class="ident">PolicyError::IndexOutOfRange</span>(<span class="number">5</span>)));
+ <span class="comment">// index out of range
+ </span><span class="kw">let </span>out_of_range =
+ policy.get_condition(<span class="kw-2">&</span><span class="macro">vec!</span>[(policy.id.clone(), <span class="macro">vec!</span>[<span class="number">5</span>])].into_iter().collect());
+ <span class="macro">assert_eq!</span>(out_of_range, <span class="prelude-val">Err</span>(PolicyError::IndexOutOfRange(<span class="number">5</span>)));
}
- <span class="kw">const</span> <span class="ident">ALICE_TPRV_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPf6T5X327efHnvJDr45Xnb8W4JifNWtEoqXu9MRYS4v1oYe6DFcMVETxy5w3bqpubYRqvcVTqovG1LifFcVUuJcbwJwrhYzP"</span>;
- <span class="kw">const</span> <span class="ident">BOB_TPRV_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPeinZ155cJAn117KYhbaN6MV3WeG6sWhxWzcvX1eg1awd4C9GpUN1ncLEM2rzEvunAg3GizdZD4QPPCkisTz99tXXB4wZArp"</span>;
- <span class="kw">const</span> <span class="ident">CAROL_TPRV_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPdC3CicFifuLCEyVVdXVUNYorxUWj3iGZ6nimnLAYAY9SYB7ib8rKzRxrCKFcEytCt6szwd2GHnGPRCBLAEAoSVDefSNk4Bt"</span>;
- <span class="kw">const</span> <span class="ident">ALICE_BOB_PATH</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"m/0'"</span>;
+ <span class="kw">const </span>ALICE_TPRV_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPf6T5X327efHnvJDr45Xnb8W4JifNWtEoqXu9MRYS4v1oYe6DFcMVETxy5w3bqpubYRqvcVTqovG1LifFcVUuJcbwJwrhYzP"</span>;
+ <span class="kw">const </span>BOB_TPRV_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPeinZ155cJAn117KYhbaN6MV3WeG6sWhxWzcvX1eg1awd4C9GpUN1ncLEM2rzEvunAg3GizdZD4QPPCkisTz99tXXB4wZArp"</span>;
+ <span class="kw">const </span>CAROL_TPRV_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPdC3CicFifuLCEyVVdXVUNYorxUWj3iGZ6nimnLAYAY9SYB7ib8rKzRxrCKFcEytCt6szwd2GHnGPRCBLAEAoSVDefSNk4Bt"</span>;
+ <span class="kw">const </span>ALICE_BOB_PATH: <span class="kw-2">&</span>str = <span class="string">"m/0'"</span>;
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_satisfaction</span>() {
- <span class="kw">const</span> <span class="ident">ALICE_SIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA"</span>;
- <span class="kw">const</span> <span class="ident">BOB_SIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBAQVHUiEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZsshAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIUq4iBgL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiAwcLu4+AAAAgAAAAAAiBgN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmywzJEXwuAAAAgAAAAAAAAA=="</span>;
- <span class="kw">const</span> <span class="ident">ALICE_BOB_SIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEI2wQARzBEAiAY9Iy41HlWFzUOnKgfoG7b7ijI1eeMEoFpZtXH3IKR1QIgWtw7QvZf9TLeCAwr0e5psEHd3gD/5ufvvNXroSTUq4EBSDBFAiEA+cw7TOTMJJbq8CeWlu+kbDt+iKsrvurjHVZYS+sLNhkCIHrAIs+HWyku1JoQ7Av3NXs7tKOoadNFFLbAjH1GeGp2AUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSrgAA"</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_satisfaction() {
+ <span class="kw">const </span>ALICE_SIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA"</span>;
+ <span class="kw">const </span>BOB_SIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBAQVHUiEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZsshAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIUq4iBgL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiAwcLu4+AAAAgAAAAAAiBgN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmywzJEXwuAAAAgAAAAAAAAA=="</span>;
+ <span class="kw">const </span>ALICE_BOB_SIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEI2wQARzBEAiAY9Iy41HlWFzUOnKgfoG7b7ijI1eeMEoFpZtXH3IKR1QIgWtw7QvZf9TLeCAwr0e5psEHd3gD/5ufvvNXroSTUq4EBSDBFAiEA+cw7TOTMJJbq8CeWlu+kbDt+iKsrvurjHVZYS+sLNhkCIHrAIs+HWyku1JoQ7Av3NXs7tKOoadNFFLbAjH1GeGp2AUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSrgAA"</span>;
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="ident">prvkey_alice</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey_bob</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">BOB_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(prvkey_alice, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey_bob, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(BOB_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">prvkey_alice</span>, <span class="ident">prvkey_bob</span>))).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wsh(multi(<span class="number">2</span>, prvkey_alice, prvkey_bob))).unwrap();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">at_derivation_index</span>(<span class="number">0</span>)
- .<span class="ident">address</span>(<span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = wallet_desc
+ .at_derivation_index(<span class="number">0</span>)
+ .address(Network::Testnet)
+ .unwrap();
<span class="macro">assert_eq!</span>(
<span class="string">"tb1qg3cwv3xt50gdg875qvjjpfgaps86gtk4rz0ejvp6ttc5ldnlxuvqlcn0xk"</span>,
- <span class="ident">addr</span>.<span class="ident">to_string</span>()
+ addr.to_string()
);
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">ALICE_SIGNED_PSBT</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>psbt = Psbt::from_str(ALICE_SIGNED_PSBT).unwrap();
- <span class="kw">let</span> <span class="ident">policy_alice_psbt</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">psbt</span>), <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
- <span class="comment">//println!("{}", serde_json::to_string(&policy_alice_psbt).unwrap());</span>
+ <span class="kw">let </span>policy_alice_psbt = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::Psbt(<span class="kw-2">&</span>psbt), <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+ <span class="comment">//println!("{}", serde_json::to_string(&policy_alice_psbt).unwrap());
- <span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy_alice_psbt</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span> <span class="op">==</span> <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>]
+ </span><span class="macro">assert!</span>(
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy_alice_psbt.satisfaction, Satisfaction::Partial { n, m, items, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items == <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>]
)
);
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">BOB_SIGNED_PSBT</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">policy_bob_psbt</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">psbt</span>), <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
- <span class="comment">//println!("{}", serde_json::to_string(&policy_bob_psbt).unwrap());</span>
-
- <span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy_bob_psbt</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span> <span class="op">==</span> <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>]
+ <span class="kw">let </span>psbt = Psbt::from_str(BOB_SIGNED_PSBT).unwrap();
+ <span class="kw">let </span>policy_bob_psbt = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::Psbt(<span class="kw-2">&</span>psbt), <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
+ <span class="comment">//println!("{}", serde_json::to_string(&policy_bob_psbt).unwrap());
+
+ </span><span class="macro">assert!</span>(
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy_bob_psbt.satisfaction, Satisfaction::Partial { n, m, items, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items == <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">1</span>]
)
);
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">ALICE_BOB_SIGNED_PSBT</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">policy_alice_bob_psbt</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">psbt</span>), <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>psbt = Psbt::from_str(ALICE_BOB_SIGNED_PSBT).unwrap();
+ <span class="kw">let </span>policy_alice_bob_psbt = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::Psbt(<span class="kw-2">&</span>psbt), <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy_alice_bob_psbt</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span> <span class="op">==</span> <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>]
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy_alice_bob_psbt.satisfaction, Satisfaction::PartialComplete { n, m, items, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">2
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items == <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>]
)
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_satisfaction_timelock</span>() {
- <span class="comment">//const PSBT_POLICY_CONSIDER_TIMELOCK_NOT_EXPIRED: &str = "cHNidP8BAFMBAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAD/////ATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";</span>
- <span class="kw">const</span> <span class="ident">PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA"</span>;
- <span class="kw">const</span> <span class="ident">PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span><span class="string">"cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstIMEUCIQCtZxNm6H3Ux3pnc64DSpgohMdBj+57xhFHcURYt2BpPAIgG3OnI7bcj/3GtWX1HHyYGSI7QGa/zq5YnsmK1Cw29NABAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEIoAQASDBFAiEArWcTZuh91Md6Z3OuA0qYKITHQY/ue8YRR3FEWLdgaTwCIBtzpyO23I/9xrVl9Rx8mBkiO0Bmv86uWJ7JitQsNvTQAQEBUnZjUrJpaHwhA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLrJN8IQL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiKyTUocAAA=="</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_satisfaction_timelock() {
+ <span class="comment">//const PSBT_POLICY_CONSIDER_TIMELOCK_NOT_EXPIRED: &str = "cHNidP8BAFMBAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAD/////ATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
+ </span><span class="kw">const </span>PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA"</span>;
+ <span class="kw">const </span>PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED: <span class="kw-2">&</span>str =<span class="string">"cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstIMEUCIQCtZxNm6H3Ux3pnc64DSpgohMdBj+57xhFHcURYt2BpPAIgG3OnI7bcj/3GtWX1HHyYGSI7QGa/zq5YnsmK1Cw29NABAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEIoAQASDBFAiEArWcTZuh91Md6Z3OuA0qYKITHQY/ue8YRR3FEWLdgaTwCIBtzpyO23I/9xrVl9Rx8mBkiO0Bmv86uWJ7JitQsNvTQAQEBUnZjUrJpaHwhA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLrJN8IQL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiKyTUocAAA=="</span>;
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="ident">prvkey_alice</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey_bob</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">BOB_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(prvkey_alice, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey_bob, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(BOB_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span>
- <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">thresh</span>(<span class="number">2</span>,<span class="ident">n</span>:<span class="ident">d</span>:<span class="ident">v</span>:<span class="ident">older</span>(<span class="number">2</span>),<span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">prvkey_alice</span>),<span class="ident">s</span>:<span class="ident">pk</span>(<span class="ident">prvkey_bob</span>)))).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>desc =
+ <span class="macro">descriptor!</span>(wsh(thresh(<span class="number">2</span>,n:d:v:older(<span class="number">2</span>),s:pk(prvkey_alice),s:pk(prvkey_bob)))).unwrap();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">at_derivation_index</span>(<span class="number">0</span>)
- .<span class="ident">address</span>(<span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = wallet_desc
+ .at_derivation_index(<span class="number">0</span>)
+ .address(Network::Testnet)
+ .unwrap();
<span class="macro">assert_eq!</span>(
<span class="string">"tb1qsydsey4hexagwkvercqsmes6yet0ndkyt6uzcphtqnygjd8hmzmsfxrv58"</span>,
- <span class="ident">addr</span>.<span class="ident">to_string</span>()
+ addr.to_string()
);
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>psbt = Psbt::from_str(PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED).unwrap();
- <span class="kw">let</span> <span class="ident">build_sat</span> <span class="op">=</span> <span class="ident">BuildSatisfaction::PsbtTimelocks</span> {
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt</span>,
- <span class="ident">current_height</span>: <span class="number">10</span>,
- <span class="ident">input_max_height</span>: <span class="number">9</span>,
+ <span class="kw">let </span>build_sat = BuildSatisfaction::PsbtTimelocks {
+ psbt: <span class="kw-2">&</span>psbt,
+ current_height: <span class="number">10</span>,
+ input_max_height: <span class="number">9</span>,
};
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">build_sat</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, build_sat, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">3</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span>.<span class="ident">is_empty</span>()
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy.satisfaction, Satisfaction::Partial { n, m, items, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">3
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items.is_empty()
)
);
- <span class="comment">//println!("{}", serde_json::to_string(&policy).unwrap());</span>
+ <span class="comment">//println!("{}", serde_json::to_string(&policy).unwrap());
- <span class="kw">let</span> <span class="ident">build_sat_expired</span> <span class="op">=</span> <span class="ident">BuildSatisfaction::PsbtTimelocks</span> {
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt</span>,
- <span class="ident">current_height</span>: <span class="number">12</span>,
- <span class="ident">input_max_height</span>: <span class="number">9</span>,
+ </span><span class="kw">let </span>build_sat_expired = BuildSatisfaction::PsbtTimelocks {
+ psbt: <span class="kw-2">&</span>psbt,
+ current_height: <span class="number">12</span>,
+ input_max_height: <span class="number">9</span>,
};
- <span class="kw">let</span> <span class="ident">policy_expired</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">build_sat_expired</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>policy_expired = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, build_sat_expired, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy_expired</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">3</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span> <span class="op">==</span> <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>]
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy_expired.satisfaction, Satisfaction::Partial { n, m, items, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">3
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items == <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>]
)
);
- <span class="comment">//println!("{}", serde_json::to_string(&policy_expired).unwrap());</span>
+ <span class="comment">//println!("{}", serde_json::to_string(&policy_expired).unwrap());
- <span class="kw">let</span> <span class="ident">psbt_signed</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED</span>).<span class="ident">unwrap</span>();
+ </span><span class="kw">let </span>psbt_signed = Psbt::from_str(PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED).unwrap();
- <span class="kw">let</span> <span class="ident">build_sat_expired_signed</span> <span class="op">=</span> <span class="ident">BuildSatisfaction::PsbtTimelocks</span> {
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt_signed</span>,
- <span class="ident">current_height</span>: <span class="number">12</span>,
- <span class="ident">input_max_height</span>: <span class="number">9</span>,
+ <span class="kw">let </span>build_sat_expired_signed = BuildSatisfaction::PsbtTimelocks {
+ psbt: <span class="kw-2">&</span>psbt_signed,
+ current_height: <span class="number">12</span>,
+ input_max_height: <span class="number">9</span>,
};
- <span class="kw">let</span> <span class="ident">policy_expired_signed</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">build_sat_expired_signed</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>policy_expired_signed = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, build_sat_expired_signed, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="kw-2">&</span><span class="ident">policy_expired_signed</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>, <span class="ident">m</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">3</span>
- <span class="op">&&</span> <span class="ident">m</span> <span class="op">==</span> <span class="kw-2">&</span><span class="number">2</span>
- <span class="op">&&</span> <span class="ident">items</span> <span class="op">==</span> <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>]
+ <span class="macro">matches!</span>(<span class="kw-2">&</span>policy_expired_signed.satisfaction, Satisfaction::PartialComplete { n, m, items, .. } <span class="kw">if </span>n == <span class="kw-2">&</span><span class="number">3
+ </span>&& m == <span class="kw-2">&</span><span class="number">2
+ </span>&& items == <span class="kw-2">&</span><span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>]
)
);
- <span class="comment">//println!("{}", serde_json::to_string(&policy_expired_signed).unwrap());</span>
- }
+ <span class="comment">//println!("{}", serde_json::to_string(&policy_expired_signed).unwrap());
+ </span>}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_pkh</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_pkh() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="ident">prvkey_alice</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey_bob</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">BOB_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="ident">prvkey_carol</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">CAROL_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(prvkey_alice, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey_bob, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(BOB_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(prvkey_carol, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(CAROL_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">wsh</span>(<span class="ident">c</span>: <span class="ident">andor</span>(
- <span class="ident">pk</span>(<span class="ident">prvkey_alice</span>),
- <span class="ident">pk_k</span>(<span class="ident">prvkey_bob</span>),
- <span class="ident">pk_h</span>(<span class="ident">prvkey_carol</span>),
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(wsh(c: andor(
+ pk(prvkey_alice),
+ pk_k(prvkey_bob),
+ pk_h(prvkey_carol),
)))
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>.<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="macro">assert!</span>(<span class="ident">policy</span>.<span class="ident">is_ok</span>());
+ <span class="kw">let </span>policy = wallet_desc.extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp);
+ <span class="macro">assert!</span>(policy.is_ok());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_tr_key_spend</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_tr_key_spend() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="ident">prvkey</span>, <span class="kw">_</span>, <span class="ident">fingerprint</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(prvkey, <span class="kw">_</span>, fingerprint) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">prvkey</span>)).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(tr(prvkey)).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">policy</span>,
- <span class="prelude-val">Some</span>(<span class="ident">Policy</span> {
- <span class="ident">id</span>: <span class="string">"48u0tz0n"</span>.<span class="ident">to_string</span>(),
- <span class="ident">item</span>: <span class="ident">SatisfiableItem::SchnorrSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">fingerprint</span>)),
- <span class="ident">satisfaction</span>: <span class="ident">Satisfaction::None</span>,
- <span class="ident">contribution</span>: <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Condition::default</span>()
+ policy,
+ <span class="prelude-val">Some</span>(Policy {
+ id: <span class="string">"48u0tz0n"</span>.to_string(),
+ item: SatisfiableItem::SchnorrSignature(PkOrF::Fingerprint(fingerprint)),
+ satisfaction: Satisfaction::None,
+ contribution: Satisfaction::Complete {
+ condition: Condition::default()
}
})
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_tr_script_spend</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_tr_script_spend() {
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="ident">alice_prv</span>, <span class="kw">_</span>, <span class="ident">alice_fing</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">bob_pub</span>, <span class="ident">bob_fing</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">BOB_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(alice_prv, <span class="kw">_</span>, alice_fing) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(<span class="kw">_</span>, bob_pub, bob_fing) = setup_keys(BOB_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">bob_pub</span>, <span class="ident">pk</span>(<span class="ident">alice_prv</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signers_container</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(tr(bob_pub, pk(alice_prv))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+ <span class="kw">let </span>signers_container = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp));
- <span class="kw">let</span> <span class="ident">policy</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="ident">signers_container</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="ident">secp</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>policy = wallet_desc
+ .extract_policy(<span class="kw-2">&</span>signers_container, BuildSatisfaction::None, <span class="kw-2">&</span>secp)
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy</span>.<span class="ident">item</span>, <span class="ident">SatisfiableItem::Thresh</span> { <span class="kw-2">ref</span> <span class="ident">items</span>, <span class="ident">threshold</span>: <span class="number">1</span> } <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">2</span>)
+ <span class="macro">matches!</span>(policy.item, SatisfiableItem::Thresh { <span class="kw-2">ref </span>items, threshold: <span class="number">1 </span>} <span class="kw">if </span>items.len() == <span class="number">2</span>)
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy</span>.<span class="ident">contribution</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>: <span class="number">2</span>, <span class="ident">m</span>: <span class="number">1</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">items</span> <span class="op">==</span> <span class="macro">vec!</span>[<span class="number">1</span>])
+ <span class="macro">matches!</span>(policy.contribution, Satisfaction::PartialComplete { n: <span class="number">2</span>, m: <span class="number">1</span>, items, .. } <span class="kw">if </span>items == <span class="macro">vec!</span>[<span class="number">1</span>])
);
- <span class="kw">let</span> <span class="ident">alice_sig</span> <span class="op">=</span> <span class="ident">SatisfiableItem::SchnorrSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">alice_fing</span>));
- <span class="kw">let</span> <span class="ident">bob_sig</span> <span class="op">=</span> <span class="ident">SatisfiableItem::SchnorrSignature</span>(<span class="ident">PkOrF::Fingerprint</span>(<span class="ident">bob_fing</span>));
+ <span class="kw">let </span>alice_sig = SatisfiableItem::SchnorrSignature(PkOrF::Fingerprint(alice_fing));
+ <span class="kw">let </span>bob_sig = SatisfiableItem::SchnorrSignature(PkOrF::Fingerprint(bob_fing));
- <span class="kw">let</span> <span class="ident">thresh_items</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">policy</span>.<span class="ident">item</span> {
- <span class="ident">SatisfiableItem::Thresh</span> { <span class="ident">items</span>, .. } => <span class="ident">items</span>,
- <span class="kw">_</span> => <span class="macro">unreachable!</span>(),
+ <span class="kw">let </span>thresh_items = <span class="kw">match </span>policy.item {
+ SatisfiableItem::Thresh { items, .. } => items,
+ <span class="kw">_ </span>=> <span class="macro">unreachable!</span>(),
};
- <span class="macro">assert_eq!</span>(<span class="ident">thresh_items</span>[<span class="number">0</span>].<span class="ident">item</span>, <span class="ident">bob_sig</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">thresh_items</span>[<span class="number">1</span>].<span class="ident">item</span>, <span class="ident">alice_sig</span>);
+ <span class="macro">assert_eq!</span>(thresh_items[<span class="number">0</span>].item, bob_sig);
+ <span class="macro">assert_eq!</span>(thresh_items[<span class="number">1</span>].item, alice_sig);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_tr_satisfaction_key_spend</span>() {
- <span class="kw">const</span> <span class="ident">UNSIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSIRYnkGTDxwXMHP32fkDFoGJY28trxbkkVgR2z7jZa2pOJA0AyRF8LgAAAIADAAAAARcgJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQAAA=="</span>;
- <span class="kw">const</span> <span class="ident">SIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSARNAIsRvARpRxuyQosVA7guRQT9vXr+S25W2tnP2xOGBsSgq7A4RL8yrbvwDmNlWw9R0Nc/6t+IsyCyy7dD/lbUGgyEWJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQNAMkRfC4AAACAAwAAAAEXICeQZMPHBcwc/fZ+QMWgYljby2vFuSRWBHbPuNlrak4kAAA="</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_tr_satisfaction_key_spend() {
+ <span class="kw">const </span>UNSIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSIRYnkGTDxwXMHP32fkDFoGJY28trxbkkVgR2z7jZa2pOJA0AyRF8LgAAAIADAAAAARcgJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQAAA=="</span>;
+ <span class="kw">const </span>SIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSARNAIsRvARpRxuyQosVA7guRQT9vXr+S25W2tnP2xOGBsSgq7A4RL8yrbvwDmNlWw9R0Nc/6t+IsyCyy7dD/lbUGgyEWJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQNAMkRfC4AAACAAwAAAAEXICeQZMPHBcwc/fZ+QMWgYljby2vFuSRWBHbPuNlrak4kAAA="</span>;
- <span class="kw">let</span> <span class="ident">unsigned_psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">UNSIGNED_PSBT</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signed_psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">SIGNED_PSBT</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>unsigned_psbt = Psbt::from_str(UNSIGNED_PSBT).unwrap();
+ <span class="kw">let </span>signed_psbt = Psbt::from_str(SIGNED_PSBT).unwrap();
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">pubkey</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(<span class="kw">_</span>, pubkey, <span class="kw">_</span>) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">pubkey</span>)).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(tr(pubkey)).unwrap();
+ <span class="kw">let </span>(wallet_desc, <span class="kw">_</span>) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
- <span class="kw">let</span> <span class="ident">policy_unsigned</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(
- <span class="kw-2">&</span><span class="ident">SignersContainer::default</span>(),
- <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">unsigned_psbt</span>),
- <span class="kw-2">&</span><span class="ident">secp</span>,
+ <span class="kw">let </span>policy_unsigned = wallet_desc
+ .extract_policy(
+ <span class="kw-2">&</span>SignersContainer::default(),
+ BuildSatisfaction::Psbt(<span class="kw-2">&</span>unsigned_psbt),
+ <span class="kw-2">&</span>secp,
)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">policy_signed</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(
- <span class="kw-2">&</span><span class="ident">SignersContainer::default</span>(),
- <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">signed_psbt</span>),
- <span class="kw-2">&</span><span class="ident">secp</span>,
+ .unwrap()
+ .unwrap();
+ <span class="kw">let </span>policy_signed = wallet_desc
+ .extract_policy(
+ <span class="kw-2">&</span>SignersContainer::default(),
+ BuildSatisfaction::Psbt(<span class="kw-2">&</span>signed_psbt),
+ <span class="kw-2">&</span>secp,
)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ .unwrap()
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">policy_unsigned</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::None</span>);
+ <span class="macro">assert_eq!</span>(policy_unsigned.satisfaction, Satisfaction::None);
<span class="macro">assert_eq!</span>(
- <span class="ident">policy_signed</span>.<span class="ident">satisfaction</span>,
- <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>()
+ policy_signed.satisfaction,
+ Satisfaction::Complete {
+ condition: Default::default()
}
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_extract_tr_satisfaction_script_spend</span>() {
- <span class="kw">const</span> <span class="ident">UNSIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2IhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA=="</span>;
- <span class="kw">const</span> <span class="ident">SIGNED_PSBT</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2AQcAAQhCAUALcP9w/+Ddly9DWdhHTnQ9uCDWLPZjR6vKbKePswW2Ee6W5KNfrklus/8z98n7BQ1U4vADHk0FbadeeL8rrbHlARNAC3D/cP/g3ZcvQ1nYR050Pbgg1iz2Y0erymynj7MFthHuluSjX65JbrP/M/fJ+wUNVOLwAx5NBW2nXni/K62x5UEUeEbK57HG1FUp69HHhjBZH9bSvss8e3qhLoMuXPK5hBr2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHUAXNmWieJ80Fs+PMa2C186YOBPZbYG/ieEUkagMwzJ788SoCucNdp5wnxfpuJVygFhglDrXGzujFtC82PrMohwuIhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA=="</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_extract_tr_satisfaction_script_spend() {
+ <span class="kw">const </span>UNSIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2IhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA=="</span>;
+ <span class="kw">const </span>SIGNED_PSBT: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2AQcAAQhCAUALcP9w/+Ddly9DWdhHTnQ9uCDWLPZjR6vKbKePswW2Ee6W5KNfrklus/8z98n7BQ1U4vADHk0FbadeeL8rrbHlARNAC3D/cP/g3ZcvQ1nYR050Pbgg1iz2Y0erymynj7MFthHuluSjX65JbrP/M/fJ+wUNVOLwAx5NBW2nXni/K62x5UEUeEbK57HG1FUp69HHhjBZH9bSvss8e3qhLoMuXPK5hBr2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHUAXNmWieJ80Fs+PMa2C186YOBPZbYG/ieEUkagMwzJ788SoCucNdp5wnxfpuJVygFhglDrXGzujFtC82PrMohwuIhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA=="</span>;
- <span class="kw">let</span> <span class="ident">unsigned_psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">UNSIGNED_PSBT</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">signed_psbt</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">SIGNED_PSBT</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>unsigned_psbt = Psbt::from_str(UNSIGNED_PSBT).unwrap();
+ <span class="kw">let </span>signed_psbt = Psbt::from_str(SIGNED_PSBT).unwrap();
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">alice_pub</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">ALICE_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">bob_pub</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">BOB_TPRV_STR</span>, <span class="ident">ALICE_BOB_PATH</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
+ <span class="kw">let </span>(<span class="kw">_</span>, alice_pub, <span class="kw">_</span>) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
+ <span class="kw">let </span>(<span class="kw">_</span>, bob_pub, <span class="kw">_</span>) = setup_keys(BOB_TPRV_STR, ALICE_BOB_PATH, <span class="kw-2">&</span>secp);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">tr</span>(<span class="ident">bob_pub</span>, <span class="ident">pk</span>(<span class="ident">alice_pub</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(tr(bob_pub, pk(alice_pub))).unwrap();
+ <span class="kw">let </span>(wallet_desc, <span class="kw">_</span>) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
- <span class="kw">let</span> <span class="ident">policy_unsigned</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(
- <span class="kw-2">&</span><span class="ident">SignersContainer::default</span>(),
- <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">unsigned_psbt</span>),
- <span class="kw-2">&</span><span class="ident">secp</span>,
+ <span class="kw">let </span>policy_unsigned = wallet_desc
+ .extract_policy(
+ <span class="kw-2">&</span>SignersContainer::default(),
+ BuildSatisfaction::Psbt(<span class="kw-2">&</span>unsigned_psbt),
+ <span class="kw-2">&</span>secp,
)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">policy_signed</span> <span class="op">=</span> <span class="ident">wallet_desc</span>
- .<span class="ident">extract_policy</span>(
- <span class="kw-2">&</span><span class="ident">SignersContainer::default</span>(),
- <span class="ident">BuildSatisfaction::Psbt</span>(<span class="kw-2">&</span><span class="ident">signed_psbt</span>),
- <span class="kw-2">&</span><span class="ident">secp</span>,
+ .unwrap()
+ .unwrap();
+ <span class="kw">let </span>policy_signed = wallet_desc
+ .extract_policy(
+ <span class="kw-2">&</span>SignersContainer::default(),
+ BuildSatisfaction::Psbt(<span class="kw-2">&</span>signed_psbt),
+ <span class="kw-2">&</span>secp,
)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>();
+ .unwrap()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy_unsigned</span>.<span class="ident">item</span>, <span class="ident">SatisfiableItem::Thresh</span> { <span class="kw-2">ref</span> <span class="ident">items</span>, <span class="ident">threshold</span>: <span class="number">1</span> } <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">2</span>)
+ <span class="macro">matches!</span>(policy_unsigned.item, SatisfiableItem::Thresh { <span class="kw-2">ref </span>items, threshold: <span class="number">1 </span>} <span class="kw">if </span>items.len() == <span class="number">2</span>)
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy_unsigned</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::Partial</span> { <span class="ident">n</span>: <span class="number">2</span>, <span class="ident">m</span>: <span class="number">1</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">is_empty</span>())
+ <span class="macro">matches!</span>(policy_unsigned.satisfaction, Satisfaction::Partial { n: <span class="number">2</span>, m: <span class="number">1</span>, items, .. } <span class="kw">if </span>items.is_empty())
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy_signed</span>.<span class="ident">item</span>, <span class="ident">SatisfiableItem::Thresh</span> { <span class="kw-2">ref</span> <span class="ident">items</span>, <span class="ident">threshold</span>: <span class="number">1</span> } <span class="kw">if</span> <span class="ident">items</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">2</span>)
+ <span class="macro">matches!</span>(policy_signed.item, SatisfiableItem::Thresh { <span class="kw-2">ref </span>items, threshold: <span class="number">1 </span>} <span class="kw">if </span>items.len() == <span class="number">2</span>)
);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">policy_signed</span>.<span class="ident">satisfaction</span>, <span class="ident">Satisfaction::PartialComplete</span> { <span class="ident">n</span>: <span class="number">2</span>, <span class="ident">m</span>: <span class="number">1</span>, <span class="ident">items</span>, .. } <span class="kw">if</span> <span class="ident">items</span> <span class="op">==</span> <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>])
+ <span class="macro">matches!</span>(policy_signed.satisfaction, Satisfaction::PartialComplete { n: <span class="number">2</span>, m: <span class="number">1</span>, items, .. } <span class="kw">if </span>items == <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>])
);
- <span class="kw">let</span> <span class="ident">satisfied_items</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">policy_signed</span>.<span class="ident">item</span> {
- <span class="ident">SatisfiableItem::Thresh</span> { <span class="ident">items</span>, .. } => <span class="ident">items</span>,
- <span class="kw">_</span> => <span class="macro">unreachable!</span>(),
+ <span class="kw">let </span>satisfied_items = <span class="kw">match </span>policy_signed.item {
+ SatisfiableItem::Thresh { items, .. } => items,
+ <span class="kw">_ </span>=> <span class="macro">unreachable!</span>(),
};
<span class="macro">assert_eq!</span>(
- <span class="ident">satisfied_items</span>[<span class="number">0</span>].<span class="ident">satisfaction</span>,
- <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>()
+ satisfied_items[<span class="number">0</span>].satisfaction,
+ Satisfaction::Complete {
+ condition: Default::default()
}
);
<span class="macro">assert_eq!</span>(
- <span class="ident">satisfied_items</span>[<span class="number">1</span>].<span class="ident">satisfaction</span>,
- <span class="ident">Satisfaction::Complete</span> {
- <span class="ident">condition</span>: <span class="ident">Default::default</span>()
+ satisfied_items[<span class="number">1</span>].satisfaction,
+ Satisfaction::Complete {
+ condition: Default::default()
}
);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/template.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>template.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-<span id="658">658</span>
-<span id="659">659</span>
-<span id="660">660</span>
-<span id="661">661</span>
-<span id="662">662</span>
-<span id="663">663</span>
-<span id="664">664</span>
-<span id="665">665</span>
-<span id="666">666</span>
-<span id="667">667</span>
-<span id="668">668</span>
-<span id="669">669</span>
-<span id="670">670</span>
-<span id="671">671</span>
-<span id="672">672</span>
-<span id="673">673</span>
-<span id="674">674</span>
-<span id="675">675</span>
-<span id="676">676</span>
-<span id="677">677</span>
-<span id="678">678</span>
-<span id="679">679</span>
-<span id="680">680</span>
-<span id="681">681</span>
-<span id="682">682</span>
-<span id="683">683</span>
-<span id="684">684</span>
-<span id="685">685</span>
-<span id="686">686</span>
-<span id="687">687</span>
-<span id="688">688</span>
-<span id="689">689</span>
-<span id="690">690</span>
-<span id="691">691</span>
-<span id="692">692</span>
-<span id="693">693</span>
-<span id="694">694</span>
-<span id="695">695</span>
-<span id="696">696</span>
-<span id="697">697</span>
-<span id="698">698</span>
-<span id="699">699</span>
-<span id="700">700</span>
-<span id="701">701</span>
-<span id="702">702</span>
-<span id="703">703</span>
-<span id="704">704</span>
-<span id="705">705</span>
-<span id="706">706</span>
-<span id="707">707</span>
-<span id="708">708</span>
-<span id="709">709</span>
-<span id="710">710</span>
-<span id="711">711</span>
-<span id="712">712</span>
-<span id="713">713</span>
-<span id="714">714</span>
-<span id="715">715</span>
-<span id="716">716</span>
-<span id="717">717</span>
-<span id="718">718</span>
-<span id="719">719</span>
-<span id="720">720</span>
-<span id="721">721</span>
-<span id="722">722</span>
-<span id="723">723</span>
-<span id="724">724</span>
-<span id="725">725</span>
-<span id="726">726</span>
-<span id="727">727</span>
-<span id="728">728</span>
-<span id="729">729</span>
-<span id="730">730</span>
-<span id="731">731</span>
-<span id="732">732</span>
-<span id="733">733</span>
-<span id="734">734</span>
-<span id="735">735</span>
-<span id="736">736</span>
-<span id="737">737</span>
-<span id="738">738</span>
-<span id="739">739</span>
-<span id="740">740</span>
-<span id="741">741</span>
-<span id="742">742</span>
-<span id="743">743</span>
-<span id="744">744</span>
-<span id="745">745</span>
-<span id="746">746</span>
-<span id="747">747</span>
-<span id="748">748</span>
-<span id="749">749</span>
-<span id="750">750</span>
-<span id="751">751</span>
-<span id="752">752</span>
-<span id="753">753</span>
-<span id="754">754</span>
-<span id="755">755</span>
-<span id="756">756</span>
-<span id="757">757</span>
-<span id="758">758</span>
-<span id="759">759</span>
-<span id="760">760</span>
-<span id="761">761</span>
-<span id="762">762</span>
-<span id="763">763</span>
-<span id="764">764</span>
-<span id="765">765</span>
-<span id="766">766</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/descriptor/template.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>template.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Descriptor templates</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module contains the definition of various common script templates that are ready to be</span>
-<span class="doccomment">//! used. See the documentation of each template for an example.</span>
+</span><span class="doccomment">//! Descriptor templates
+//!
+//! This module contains the definition of various common script templates that are ready to be
+//! used. See the documentation of each template for an example.
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::Network</span>;
+</span><span class="kw">use </span>bitcoin::util::bip32;
+<span class="kw">use </span>bitcoin::Network;
-<span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">Legacy</span>, <span class="ident">Segwitv0</span>};
+<span class="kw">use </span>miniscript::{Legacy, Segwitv0};
-<span class="kw">use</span> <span class="kw">super</span>::{<span class="ident">ExtendedDescriptor</span>, <span class="ident">IntoWalletDescriptor</span>, <span class="ident">KeyMap</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::DescriptorError</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">DerivableKey</span>, <span class="ident">IntoDescriptorKey</span>, <span class="ident">ValidNetworks</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::utils::SecpCtx</span>;
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">descriptor</span>, <span class="ident">KeychainKind</span>};
+<span class="kw">use super</span>::{ExtendedDescriptor, IntoWalletDescriptor, KeyMap};
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::DescriptorError;
+<span class="kw">use </span><span class="kw">crate</span>::keys::{DerivableKey, IntoDescriptorKey, ValidNetworks};
+<span class="kw">use </span><span class="kw">crate</span>::wallet::utils::SecpCtx;
+<span class="kw">use crate</span>::{descriptor, KeychainKind};
-<span class="doccomment">/// Type alias for the return type of [`DescriptorTemplate`], [`descriptor!`](crate::descriptor!) and others</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">DescriptorTemplateOut</span> <span class="op">=</span> (<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>);
+<span class="doccomment">/// Type alias for the return type of [`DescriptorTemplate`], [`descriptor!`](crate::descriptor!) and others
+</span><span class="kw">pub type </span>DescriptorTemplateOut = (ExtendedDescriptor, KeyMap, ValidNetworks);
-<span class="doccomment">/// Trait for descriptor templates that can be built into a full descriptor</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Since [`IntoWalletDescriptor`] is implemented for any [`DescriptorTemplate`], they can also be</span>
-<span class="doccomment">/// passed directly to the [`Wallet`](crate::Wallet) constructor.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// use bdk::descriptor::error::Error as DescriptorError;</span>
-<span class="doccomment">/// use bdk::keys::{IntoDescriptorKey, KeyError};</span>
-<span class="doccomment">/// use bdk::miniscript::Legacy;</span>
-<span class="doccomment">/// use bdk::template::{DescriptorTemplate, DescriptorTemplateOut};</span>
-<span class="doccomment">/// use bitcoin::Network;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// struct MyP2PKH<K: IntoDescriptorKey<Legacy>>(K);</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for MyP2PKH<K> {</span>
-<span class="doccomment">/// fn build(self, network: Network) -> Result<DescriptorTemplateOut, DescriptorError> {</span>
-<span class="doccomment">/// Ok(bdk::descriptor!(pkh(self.0))?)</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">DescriptorTemplate</span> {
- <span class="doccomment">/// Build the complete descriptor</span>
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span>;
+<span class="doccomment">/// Trait for descriptor templates that can be built into a full descriptor
+///
+/// Since [`IntoWalletDescriptor`] is implemented for any [`DescriptorTemplate`], they can also be
+/// passed directly to the [`Wallet`](crate::Wallet) constructor.
+///
+/// ## Example
+///
+/// ```
+/// use bdk::descriptor::error::Error as DescriptorError;
+/// use bdk::keys::{IntoDescriptorKey, KeyError};
+/// use bdk::miniscript::Legacy;
+/// use bdk::template::{DescriptorTemplate, DescriptorTemplateOut};
+/// use bitcoin::Network;
+///
+/// struct MyP2PKH<K: IntoDescriptorKey<Legacy>>(K);
+///
+/// impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for MyP2PKH<K> {
+/// fn build(self, network: Network) -> Result<DescriptorTemplateOut, DescriptorError> {
+/// Ok(bdk::descriptor!(pkh(self.0))?)
+/// }
+/// }
+/// ```
+</span><span class="kw">pub trait </span>DescriptorTemplate {
+ <span class="doccomment">/// Build the complete descriptor
+ </span><span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError>;
}
-<span class="doccomment">/// Turns a [`DescriptorTemplate`] into a valid wallet descriptor by calling its</span>
-<span class="doccomment">/// [`build`](DescriptorTemplate::build) method</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">DescriptorTemplate</span><span class="op">></span> <span class="ident">IntoWalletDescriptor</span> <span class="kw">for</span> <span class="ident">T</span> {
- <span class="kw">fn</span> <span class="ident">into_wallet_descriptor</span>(
+<span class="doccomment">/// Turns a [`DescriptorTemplate`] into a valid wallet descriptor by calling its
+/// [`build`](DescriptorTemplate::build) method
+</span><span class="kw">impl</span><T: DescriptorTemplate> IntoWalletDescriptor <span class="kw">for </span>T {
+ <span class="kw">fn </span>into_wallet_descriptor(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">ExtendedDescriptor</span>, <span class="ident">KeyMap</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">build</span>(<span class="ident">network</span>)<span class="question-mark">?</span>.<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)
+ secp: <span class="kw-2">&</span>SecpCtx,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><(ExtendedDescriptor, KeyMap), DescriptorError> {
+ <span class="self">self</span>.build(network)<span class="question-mark">?</span>.into_wallet_descriptor(secp, network)
}
}
-<span class="doccomment">/// P2PKH template. Expands to a descriptor `pkh(key)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::P2Pkh;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key =</span>
-<span class="doccomment">/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// P2Pkh(key),</span>
-<span class="doccomment">/// None,</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default(),</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(</span>
-<span class="doccomment">/// wallet.get_address(New)?.to_string(),</span>
-<span class="doccomment">/// "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"</span>
-<span class="doccomment">/// );</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">P2Pkh</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>);
+<span class="doccomment">/// P2PKH template. Expands to a descriptor `pkh(key)`
+///
+/// ## Example
+///
+/// ```
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::P2Pkh;
+///
+/// let key =
+/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
+/// let wallet = Wallet::new(
+/// P2Pkh(key),
+/// None,
+/// Network::Testnet,
+/// MemoryDatabase::default(),
+/// )?;
+///
+/// assert_eq!(
+/// wallet.get_address(New)?.to_string(),
+/// "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
+/// );
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>P2Pkh<K: IntoDescriptorKey<Legacy>>(<span class="kw">pub </span>K);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">P2Pkh</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">_network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="macro">descriptor!</span>(<span class="ident">pkh</span>(<span class="self">self</span>.<span class="number">0</span>))
+<span class="kw">impl</span><K: IntoDescriptorKey<Legacy>> DescriptorTemplate <span class="kw">for </span>P2Pkh<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, _network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ <span class="macro">descriptor!</span>(pkh(<span class="self">self</span>.<span class="number">0</span>))
}
}
-<span class="doccomment">/// P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::P2Wpkh_P2Sh;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key =</span>
-<span class="doccomment">/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// P2Wpkh_P2Sh(key),</span>
-<span class="doccomment">/// None,</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default(),</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(</span>
-<span class="doccomment">/// wallet.get_address(New)?.to_string(),</span>
-<span class="doccomment">/// "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"</span>
-<span class="doccomment">/// );</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">non_camel_case_types</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">P2Wpkh_P2Sh</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>);
+<span class="doccomment">/// P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`
+///
+/// ## Example
+///
+/// ```
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::P2Wpkh_P2Sh;
+///
+/// let key =
+/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
+/// let wallet = Wallet::new(
+/// P2Wpkh_P2Sh(key),
+/// None,
+/// Network::Testnet,
+/// MemoryDatabase::default(),
+/// )?;
+///
+/// assert_eq!(
+/// wallet.get_address(New)?.to_string(),
+/// "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
+/// );
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="attr">#[allow(non_camel_case_types)]
+</span><span class="kw">pub struct </span>P2Wpkh_P2Sh<K: IntoDescriptorKey<Segwitv0>>(<span class="kw">pub </span>K);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">P2Wpkh_P2Sh</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">_network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">wpkh</span>(<span class="self">self</span>.<span class="number">0</span>)))
+<span class="kw">impl</span><K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate <span class="kw">for </span>P2Wpkh_P2Sh<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, _network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ <span class="macro">descriptor!</span>(sh(wpkh(<span class="self">self</span>.<span class="number">0</span>)))
}
}
-<span class="doccomment">/// P2WPKH template. Expands to a descriptor `wpkh(key)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::P2Wpkh;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key =</span>
-<span class="doccomment">/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// P2Wpkh(key),</span>
-<span class="doccomment">/// None,</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default(),</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(</span>
-<span class="doccomment">/// wallet.get_address(New)?.to_string(),</span>
-<span class="doccomment">/// "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"</span>
-<span class="doccomment">/// );</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">P2Wpkh</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>);
+<span class="doccomment">/// P2WPKH template. Expands to a descriptor `wpkh(key)`
+///
+/// ## Example
+///
+/// ```
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::P2Wpkh;
+///
+/// let key =
+/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
+/// let wallet = Wallet::new(
+/// P2Wpkh(key),
+/// None,
+/// Network::Testnet,
+/// MemoryDatabase::default(),
+/// )?;
+///
+/// assert_eq!(
+/// wallet.get_address(New)?.to_string(),
+/// "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
+/// );
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>P2Wpkh<K: IntoDescriptorKey<Segwitv0>>(<span class="kw">pub </span>K);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">P2Wpkh</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">_network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="macro">descriptor!</span>(<span class="ident">wpkh</span>(<span class="self">self</span>.<span class="number">0</span>))
+<span class="kw">impl</span><K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate <span class="kw">for </span>P2Wpkh<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, _network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ <span class="macro">descriptor!</span>(wpkh(<span class="self">self</span>.<span class="number">0</span>))
}
}
-<span class="doccomment">/// BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [`Bip44Public`] for a template that can work with a `xpub`/`tpub`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::Bip44;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// Bip44(key.clone(), KeychainKind::External),</span>
-<span class="doccomment">/// Some(Bip44(key, KeychainKind::Internal)),</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default()</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(wallet.get_address(New)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");</span>
-<span class="doccomment">/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Bip44</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>, <span class="kw">pub</span> <span class="ident">KeychainKind</span>);
+<span class="doccomment">/// BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
+///
+/// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
+///
+/// See [`Bip44Public`] for a template that can work with a `xpub`/`tpub`.
+///
+/// ## Example
+///
+/// ```
+/// # use std::str::FromStr;
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet, KeychainKind};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::Bip44;
+///
+/// let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
+/// let wallet = Wallet::new(
+/// Bip44(key.clone(), KeychainKind::External),
+/// Some(Bip44(key, KeychainKind::Internal)),
+/// Network::Testnet,
+/// MemoryDatabase::default()
+/// )?;
+///
+/// assert_eq!(wallet.get_address(New)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>Bip44<K: DerivableKey<Legacy>>(<span class="kw">pub </span>K, <span class="kw">pub </span>KeychainKind);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">Bip44</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">P2Pkh</span>(<span class="ident">legacy::make_bipxx_private</span>(<span class="number">44</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="ident">network</span>)<span class="question-mark">?</span>).<span class="ident">build</span>(<span class="ident">network</span>)
+<span class="kw">impl</span><K: DerivableKey<Legacy>> DescriptorTemplate <span class="kw">for </span>Bip44<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ P2Pkh(legacy::make_bipxx_private(<span class="number">44</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, network)<span class="question-mark">?</span>).build(network)
}
}
-<span class="doccomment">/// BIP44 public template. Expands to `pkh(key/{0,1}/*)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This assumes that the key used has already been derived with `m/44'/0'/0'` for Mainnet or `m/44'/1'/0'` for Testnet.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [`Bip44`] for a template that does the full derivation, but requires private data</span>
-<span class="doccomment">/// for the key.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::Bip44Public;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;</span>
-<span class="doccomment">/// let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// Bip44Public(key.clone(), fingerprint, KeychainKind::External),</span>
-<span class="doccomment">/// Some(Bip44Public(key, fingerprint, KeychainKind::Internal)),</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default()</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(wallet.get_address(New)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");</span>
-<span class="doccomment">/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "pkh([c55b303f/44'/0'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#xgaaevjx");</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Bip44Public</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>, <span class="kw">pub</span> <span class="ident">bip32::Fingerprint</span>, <span class="kw">pub</span> <span class="ident">KeychainKind</span>);
+<span class="doccomment">/// BIP44 public template. Expands to `pkh(key/{0,1}/*)`
+///
+/// This assumes that the key used has already been derived with `m/44'/0'/0'` for Mainnet or `m/44'/1'/0'` for Testnet.
+///
+/// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
+///
+/// See [`Bip44`] for a template that does the full derivation, but requires private data
+/// for the key.
+///
+/// ## Example
+///
+/// ```
+/// # use std::str::FromStr;
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet, KeychainKind};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::Bip44Public;
+///
+/// let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
+/// let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;
+/// let wallet = Wallet::new(
+/// Bip44Public(key.clone(), fingerprint, KeychainKind::External),
+/// Some(Bip44Public(key, fingerprint, KeychainKind::Internal)),
+/// Network::Testnet,
+/// MemoryDatabase::default()
+/// )?;
+///
+/// assert_eq!(wallet.get_address(New)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "pkh([c55b303f/44'/0'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#xgaaevjx");
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>Bip44Public<K: DerivableKey<Legacy>>(<span class="kw">pub </span>K, <span class="kw">pub </span>bip32::Fingerprint, <span class="kw">pub </span>KeychainKind);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Legacy</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">Bip44Public</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">P2Pkh</span>(<span class="ident">legacy::make_bipxx_public</span>(<span class="number">44</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="self">self</span>.<span class="number">2</span>)<span class="question-mark">?</span>).<span class="ident">build</span>(<span class="ident">network</span>)
+<span class="kw">impl</span><K: DerivableKey<Legacy>> DescriptorTemplate <span class="kw">for </span>Bip44Public<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ P2Pkh(legacy::make_bipxx_public(<span class="number">44</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="self">self</span>.<span class="number">2</span>)<span class="question-mark">?</span>).build(network)
}
}
-<span class="doccomment">/// BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [`Bip49Public`] for a template that can work with a `xpub`/`tpub`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::Bip49;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// Bip49(key.clone(), KeychainKind::External),</span>
-<span class="doccomment">/// Some(Bip49(key, KeychainKind::Internal)),</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default()</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(wallet.get_address(New)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");</span>
-<span class="doccomment">/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Bip49</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>, <span class="kw">pub</span> <span class="ident">KeychainKind</span>);
+<span class="doccomment">/// BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`
+///
+/// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
+///
+/// See [`Bip49Public`] for a template that can work with a `xpub`/`tpub`.
+///
+/// ## Example
+///
+/// ```
+/// # use std::str::FromStr;
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet, KeychainKind};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::Bip49;
+///
+/// let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
+/// let wallet = Wallet::new(
+/// Bip49(key.clone(), KeychainKind::External),
+/// Some(Bip49(key, KeychainKind::Internal)),
+/// Network::Testnet,
+/// MemoryDatabase::default()
+/// )?;
+///
+/// assert_eq!(wallet.get_address(New)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>Bip49<K: DerivableKey<Segwitv0>>(<span class="kw">pub </span>K, <span class="kw">pub </span>KeychainKind);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">Bip49</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">P2Wpkh_P2Sh</span>(<span class="ident">segwit_v0::make_bipxx_private</span>(<span class="number">49</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="ident">network</span>)<span class="question-mark">?</span>).<span class="ident">build</span>(<span class="ident">network</span>)
+<span class="kw">impl</span><K: DerivableKey<Segwitv0>> DescriptorTemplate <span class="kw">for </span>Bip49<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ P2Wpkh_P2Sh(segwit_v0::make_bipxx_private(<span class="number">49</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, network)<span class="question-mark">?</span>).build(network)
}
}
-<span class="doccomment">/// BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This assumes that the key used has already been derived with `m/49'/0'/0'`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [`Bip49`] for a template that does the full derivation, but requires private data</span>
-<span class="doccomment">/// for the key.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::Bip49Public;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;</span>
-<span class="doccomment">/// let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// Bip49Public(key.clone(), fingerprint, KeychainKind::External),</span>
-<span class="doccomment">/// Some(Bip49Public(key, fingerprint, KeychainKind::Internal)),</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default()</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(wallet.get_address(New)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");</span>
-<span class="doccomment">/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "sh(wpkh([c55b303f/49'/0'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#gsmdv4xr");</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Bip49Public</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>, <span class="kw">pub</span> <span class="ident">bip32::Fingerprint</span>, <span class="kw">pub</span> <span class="ident">KeychainKind</span>);
+<span class="doccomment">/// BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`
+///
+/// This assumes that the key used has already been derived with `m/49'/0'/0'`.
+///
+/// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
+///
+/// See [`Bip49`] for a template that does the full derivation, but requires private data
+/// for the key.
+///
+/// ## Example
+///
+/// ```
+/// # use std::str::FromStr;
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet, KeychainKind};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::Bip49Public;
+///
+/// let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
+/// let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;
+/// let wallet = Wallet::new(
+/// Bip49Public(key.clone(), fingerprint, KeychainKind::External),
+/// Some(Bip49Public(key, fingerprint, KeychainKind::Internal)),
+/// Network::Testnet,
+/// MemoryDatabase::default()
+/// )?;
+///
+/// assert_eq!(wallet.get_address(New)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "sh(wpkh([c55b303f/49'/0'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#gsmdv4xr");
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>Bip49Public<K: DerivableKey<Segwitv0>>(<span class="kw">pub </span>K, <span class="kw">pub </span>bip32::Fingerprint, <span class="kw">pub </span>KeychainKind);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">Bip49Public</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">P2Wpkh_P2Sh</span>(<span class="ident">segwit_v0::make_bipxx_public</span>(<span class="number">49</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="self">self</span>.<span class="number">2</span>)<span class="question-mark">?</span>).<span class="ident">build</span>(<span class="ident">network</span>)
+<span class="kw">impl</span><K: DerivableKey<Segwitv0>> DescriptorTemplate <span class="kw">for </span>Bip49Public<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ P2Wpkh_P2Sh(segwit_v0::make_bipxx_public(<span class="number">49</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="self">self</span>.<span class="number">2</span>)<span class="question-mark">?</span>).build(network)
}
}
-<span class="doccomment">/// BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [`Bip84Public`] for a template that can work with a `xpub`/`tpub`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::Bip84;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// Bip84(key.clone(), KeychainKind::External),</span>
-<span class="doccomment">/// Some(Bip84(key, KeychainKind::Internal)),</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default()</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(wallet.get_address(New)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");</span>
-<span class="doccomment">/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Bip84</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>, <span class="kw">pub</span> <span class="ident">KeychainKind</span>);
+<span class="doccomment">/// BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`
+///
+/// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
+///
+/// See [`Bip84Public`] for a template that can work with a `xpub`/`tpub`.
+///
+/// ## Example
+///
+/// ```
+/// # use std::str::FromStr;
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet, KeychainKind};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::Bip84;
+///
+/// let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
+/// let wallet = Wallet::new(
+/// Bip84(key.clone(), KeychainKind::External),
+/// Some(Bip84(key, KeychainKind::Internal)),
+/// Network::Testnet,
+/// MemoryDatabase::default()
+/// )?;
+///
+/// assert_eq!(wallet.get_address(New)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>Bip84<K: DerivableKey<Segwitv0>>(<span class="kw">pub </span>K, <span class="kw">pub </span>KeychainKind);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">Bip84</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">P2Wpkh</span>(<span class="ident">segwit_v0::make_bipxx_private</span>(<span class="number">84</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="ident">network</span>)<span class="question-mark">?</span>).<span class="ident">build</span>(<span class="ident">network</span>)
+<span class="kw">impl</span><K: DerivableKey<Segwitv0>> DescriptorTemplate <span class="kw">for </span>Bip84<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ P2Wpkh(segwit_v0::make_bipxx_private(<span class="number">84</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, network)<span class="question-mark">?</span>).build(network)
}
}
-<span class="doccomment">/// BIP84 public template. Expands to `wpkh(key/{0,1}/*)`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This assumes that the key used has already been derived with `m/84'/0'/0'`.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// See [`Bip84`] for a template that does the full derivation, but requires private data</span>
-<span class="doccomment">/// for the key.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Example</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use std::str::FromStr;</span>
-<span class="doccomment">/// # use bdk::bitcoin::{PrivateKey, Network};</span>
-<span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
-<span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">/// # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">/// use bdk::template::Bip84Public;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;</span>
-<span class="doccomment">/// let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;</span>
-<span class="doccomment">/// let wallet = Wallet::new(</span>
-<span class="doccomment">/// Bip84Public(key.clone(), fingerprint, KeychainKind::External),</span>
-<span class="doccomment">/// Some(Bip84Public(key, fingerprint, KeychainKind::Internal)),</span>
-<span class="doccomment">/// Network::Testnet,</span>
-<span class="doccomment">/// MemoryDatabase::default()</span>
-<span class="doccomment">/// )?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(wallet.get_address(New)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");</span>
-<span class="doccomment">/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "wpkh([c55b303f/84\'/0\'/0\']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#nkk5dtkg");</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Bip84Public</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span>(<span class="kw">pub</span> <span class="ident">K</span>, <span class="kw">pub</span> <span class="ident">bip32::Fingerprint</span>, <span class="kw">pub</span> <span class="ident">KeychainKind</span>);
+<span class="doccomment">/// BIP84 public template. Expands to `wpkh(key/{0,1}/*)`
+///
+/// This assumes that the key used has already been derived with `m/84'/0'/0'`.
+///
+/// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
+///
+/// See [`Bip84`] for a template that does the full derivation, but requires private data
+/// for the key.
+///
+/// ## Example
+///
+/// ```
+/// # use std::str::FromStr;
+/// # use bdk::bitcoin::{PrivateKey, Network};
+/// # use bdk::{Wallet, KeychainKind};
+/// # use bdk::database::MemoryDatabase;
+/// # use bdk::wallet::AddressIndex::New;
+/// use bdk::template::Bip84Public;
+///
+/// let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
+/// let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;
+/// let wallet = Wallet::new(
+/// Bip84Public(key.clone(), fingerprint, KeychainKind::External),
+/// Some(Bip84Public(key, fingerprint, KeychainKind::Internal)),
+/// Network::Testnet,
+/// MemoryDatabase::default()
+/// )?;
+///
+/// assert_eq!(wallet.get_address(New)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "wpkh([c55b303f/84\'/0\'/0\']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#nkk5dtkg");
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub struct </span>Bip84Public<K: DerivableKey<Segwitv0>>(<span class="kw">pub </span>K, <span class="kw">pub </span>bip32::Fingerprint, <span class="kw">pub </span>KeychainKind);
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Segwitv0</span><span class="op">></span><span class="op">></span> <span class="ident">DescriptorTemplate</span> <span class="kw">for</span> <span class="ident">Bip84Public</span><span class="op"><</span><span class="ident">K</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">build</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorTemplateOut</span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="ident">P2Wpkh</span>(<span class="ident">segwit_v0::make_bipxx_public</span>(<span class="number">84</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="self">self</span>.<span class="number">2</span>)<span class="question-mark">?</span>).<span class="ident">build</span>(<span class="ident">network</span>)
+<span class="kw">impl</span><K: DerivableKey<Segwitv0>> DescriptorTemplate <span class="kw">for </span>Bip84Public<K> {
+ <span class="kw">fn </span>build(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Result</span><DescriptorTemplateOut, DescriptorError> {
+ P2Wpkh(segwit_v0::make_bipxx_public(<span class="number">84</span>, <span class="self">self</span>.<span class="number">0</span>, <span class="self">self</span>.<span class="number">1</span>, <span class="self">self</span>.<span class="number">2</span>)<span class="question-mark">?</span>).build(network)
}
}
-<span class="macro">macro_rules!</span> <span class="ident">expand_make_bipxx</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">mod_name</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span>:<span class="ident">ty</span> ) => {
- <span class="kw">mod</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">mod_name</span> {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+<span class="macro">macro_rules! </span>expand_make_bipxx {
+ ( <span class="macro-nonterminal">$mod_name</span>:ident, <span class="macro-nonterminal">$ctx</span>:ty ) => {
+ <span class="kw">mod </span><span class="macro-nonterminal">$mod_name </span>{
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
- <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn</span> <span class="ident">make_bipxx_private</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span><span class="op">></span>(
- <span class="ident">bip</span>: <span class="ident">u32</span>,
- <span class="ident">key</span>: <span class="ident">K</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">derivation_path</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="number">4</span>);
- <span class="ident">derivation_path</span>.<span class="ident">push</span>(<span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="ident">bip</span>)<span class="question-mark">?</span>);
+ <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>make_bipxx_private<K: DerivableKey<<span class="macro-nonterminal">$ctx</span>>>(
+ bip: u32,
+ key: K,
+ keychain: KeychainKind,
+ network: Network,
+ ) -> <span class="prelude-ty">Result</span><<span class="kw">impl </span>IntoDescriptorKey<<span class="macro-nonterminal">$ctx</span>>, DescriptorError> {
+ <span class="kw">let </span><span class="kw-2">mut </span>derivation_path = Vec::with_capacity(<span class="number">4</span>);
+ derivation_path.push(bip32::ChildNumber::from_hardened_idx(bip)<span class="question-mark">?</span>);
- <span class="kw">match</span> <span class="ident">network</span> {
- <span class="ident">Network::Bitcoin</span> => {
- <span class="ident">derivation_path</span>.<span class="ident">push</span>(<span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="number">0</span>)<span class="question-mark">?</span>);
+ <span class="kw">match </span>network {
+ Network::Bitcoin => {
+ derivation_path.push(bip32::ChildNumber::from_hardened_idx(<span class="number">0</span>)<span class="question-mark">?</span>);
}
- <span class="kw">_</span> => {
- <span class="ident">derivation_path</span>.<span class="ident">push</span>(<span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="number">1</span>)<span class="question-mark">?</span>);
+ <span class="kw">_ </span>=> {
+ derivation_path.push(bip32::ChildNumber::from_hardened_idx(<span class="number">1</span>)<span class="question-mark">?</span>);
}
}
- <span class="ident">derivation_path</span>.<span class="ident">push</span>(<span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="number">0</span>)<span class="question-mark">?</span>);
+ derivation_path.push(bip32::ChildNumber::from_hardened_idx(<span class="number">0</span>)<span class="question-mark">?</span>);
- <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="ident">KeychainKind::External</span> => {
- <span class="ident">derivation_path</span>.<span class="ident">push</span>(<span class="ident">bip32::ChildNumber::from_normal_idx</span>(<span class="number">0</span>)<span class="question-mark">?</span>)
+ <span class="kw">match </span>keychain {
+ KeychainKind::External => {
+ derivation_path.push(bip32::ChildNumber::from_normal_idx(<span class="number">0</span>)<span class="question-mark">?</span>)
}
- <span class="ident">KeychainKind::Internal</span> => {
- <span class="ident">derivation_path</span>.<span class="ident">push</span>(<span class="ident">bip32::ChildNumber::from_normal_idx</span>(<span class="number">1</span>)<span class="question-mark">?</span>)
+ KeychainKind::Internal => {
+ derivation_path.push(bip32::ChildNumber::from_normal_idx(<span class="number">1</span>)<span class="question-mark">?</span>)
}
};
- <span class="kw">let</span> <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span> <span class="op">=</span> <span class="ident">derivation_path</span>.<span class="ident">into</span>();
+ <span class="kw">let </span>derivation_path: bip32::DerivationPath = derivation_path.into();
- <span class="prelude-val">Ok</span>((<span class="ident">key</span>, <span class="ident">derivation_path</span>))
+ <span class="prelude-val">Ok</span>((key, derivation_path))
}
- <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn</span> <span class="ident">make_bipxx_public</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span><span class="op">></span>(
- <span class="ident">bip</span>: <span class="ident">u32</span>,
- <span class="ident">key</span>: <span class="ident">K</span>,
- <span class="ident">parent_fingerprint</span>: <span class="ident">bip32::Fingerprint</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">ctx</span><span class="op">></span>, <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="ident">KeychainKind::External</span> => <span class="macro">vec!</span>[<span class="ident">bip32::ChildNumber::from_normal_idx</span>(<span class="number">0</span>)<span class="question-mark">?</span>].<span class="ident">into</span>(),
- <span class="ident">KeychainKind::Internal</span> => <span class="macro">vec!</span>[<span class="ident">bip32::ChildNumber::from_normal_idx</span>(<span class="number">1</span>)<span class="question-mark">?</span>].<span class="ident">into</span>(),
+ <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>make_bipxx_public<K: DerivableKey<<span class="macro-nonterminal">$ctx</span>>>(
+ bip: u32,
+ key: K,
+ parent_fingerprint: bip32::Fingerprint,
+ keychain: KeychainKind,
+ ) -> <span class="prelude-ty">Result</span><<span class="kw">impl </span>IntoDescriptorKey<<span class="macro-nonterminal">$ctx</span>>, DescriptorError> {
+ <span class="kw">let </span>derivation_path: bip32::DerivationPath = <span class="kw">match </span>keychain {
+ KeychainKind::External => <span class="macro">vec!</span>[bip32::ChildNumber::from_normal_idx(<span class="number">0</span>)<span class="question-mark">?</span>].into(),
+ KeychainKind::Internal => <span class="macro">vec!</span>[bip32::ChildNumber::from_normal_idx(<span class="number">1</span>)<span class="question-mark">?</span>].into(),
};
- <span class="kw">let</span> <span class="ident">source_path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from</span>(<span class="macro">vec!</span>[
- <span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="ident">bip</span>)<span class="question-mark">?</span>,
- <span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="number">0</span>)<span class="question-mark">?</span>,
- <span class="ident">bip32::ChildNumber::from_hardened_idx</span>(<span class="number">0</span>)<span class="question-mark">?</span>,
+ <span class="kw">let </span>source_path = bip32::DerivationPath::from(<span class="macro">vec!</span>[
+ bip32::ChildNumber::from_hardened_idx(bip)<span class="question-mark">?</span>,
+ bip32::ChildNumber::from_hardened_idx(<span class="number">0</span>)<span class="question-mark">?</span>,
+ bip32::ChildNumber::from_hardened_idx(<span class="number">0</span>)<span class="question-mark">?</span>,
]);
- <span class="prelude-val">Ok</span>((<span class="ident">key</span>, (<span class="ident">parent_fingerprint</span>, <span class="ident">source_path</span>), <span class="ident">derivation_path</span>))
+ <span class="prelude-val">Ok</span>((key, (parent_fingerprint, source_path), derivation_path))
}
}
};
}
-<span class="macro">expand_make_bipxx!</span>(<span class="ident">legacy</span>, <span class="ident">Legacy</span>);
-<span class="macro">expand_make_bipxx!</span>(<span class="ident">segwit_v0</span>, <span class="ident">Segwitv0</span>);
+<span class="macro">expand_make_bipxx!</span>(legacy, Legacy);
+<span class="macro">expand_make_bipxx!</span>(segwit_v0, Segwitv0);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="comment">// test existing descriptor templates, make sure they are expanded to the right descriptors</span>
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="comment">// test existing descriptor templates, make sure they are expanded to the right descriptors
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+ </span><span class="kw">use </span>std::str::FromStr;
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>::{<span class="ident">DescriptorError</span>, <span class="ident">DescriptorMeta</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys::ValidNetworks</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::network::constants::Network::Regtest</span>;
- <span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{<span class="ident">DescriptorPublicKey</span>, <span class="ident">KeyMap</span>};
- <span class="kw">use</span> <span class="ident">miniscript::Descriptor</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::{DescriptorError, DescriptorMeta};
+ <span class="kw">use </span><span class="kw">crate</span>::keys::ValidNetworks;
+ <span class="kw">use </span>bitcoin::network::constants::Network::Regtest;
+ <span class="kw">use </span>miniscript::descriptor::{DescriptorPublicKey, KeyMap};
+ <span class="kw">use </span>miniscript::Descriptor;
- <span class="comment">// BIP44 `pkh(key/44'/{0,1}'/0'/{0,1}/*)`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip44_template_cointype</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32::ChildNumber</span>::{<span class="self">self</span>, <span class="ident">Hardened</span>};
+ <span class="comment">// BIP44 `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip44_template_cointype() {
+ <span class="kw">use </span>bitcoin::util::bip32::ChildNumber::{<span class="self">self</span>, Hardened};
- <span class="kw">let</span> <span class="ident">xprvkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"xprv9s21ZrQH143K2fpbqApQL69a4oKdGVnVN52R82Ft7d1pSqgKmajF62acJo3aMszZb6qQ22QsVECSFxvf9uyxFUvFYQMq3QbtwtRSMjLAhMf"</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">Network::Bitcoin</span>, <span class="ident">xprvkey</span>.<span class="ident">network</span>);
- <span class="kw">let</span> <span class="ident">xdesc</span> <span class="op">=</span> <span class="ident">Bip44</span>(<span class="ident">xprvkey</span>, <span class="ident">KeychainKind::Internal</span>)
- .<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>xprvkey = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"xprv9s21ZrQH143K2fpbqApQL69a4oKdGVnVN52R82Ft7d1pSqgKmajF62acJo3aMszZb6qQ22QsVECSFxvf9uyxFUvFYQMq3QbtwtRSMjLAhMf"</span>).unwrap();
+ <span class="macro">assert_eq!</span>(Network::Bitcoin, xprvkey.network);
+ <span class="kw">let </span>xdesc = Bip44(xprvkey, KeychainKind::Internal)
+ .build(Network::Bitcoin)
+ .unwrap();
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">ExtendedDescriptor::Pkh</span>(<span class="ident">pkh</span>) <span class="op">=</span> <span class="ident">xdesc</span>.<span class="number">0</span> {
- <span class="kw">let</span> <span class="ident">path</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">ChildNumber</span><span class="op">></span> <span class="op">=</span> <span class="ident">pkh</span>.<span class="ident">into_inner</span>().<span class="ident">full_derivation_path</span>().<span class="ident">into</span>();
- <span class="kw">let</span> <span class="ident">purpose</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">get</span>(<span class="number">0</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">purpose</span>, <span class="ident">Hardened</span> { <span class="ident">index</span>: <span class="number">44</span> }));
- <span class="kw">let</span> <span class="ident">coin_type</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">get</span>(<span class="number">1</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">coin_type</span>, <span class="ident">Hardened</span> { <span class="ident">index</span>: <span class="number">0</span> }));
+ <span class="kw">if let </span>ExtendedDescriptor::Pkh(pkh) = xdesc.<span class="number">0 </span>{
+ <span class="kw">let </span>path: Vec<ChildNumber> = pkh.into_inner().full_derivation_path().into();
+ <span class="kw">let </span>purpose = path.get(<span class="number">0</span>).unwrap();
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(purpose, Hardened { index: <span class="number">44 </span>}));
+ <span class="kw">let </span>coin_type = path.get(<span class="number">1</span>).unwrap();
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(coin_type, Hardened { index: <span class="number">0 </span>}));
}
- <span class="kw">let</span> <span class="ident">tprvkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">Network::Testnet</span>, <span class="ident">tprvkey</span>.<span class="ident">network</span>);
- <span class="kw">let</span> <span class="ident">tdesc</span> <span class="op">=</span> <span class="ident">Bip44</span>(<span class="ident">tprvkey</span>, <span class="ident">KeychainKind::Internal</span>)
- .<span class="ident">build</span>(<span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>tprvkey = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="macro">assert_eq!</span>(Network::Testnet, tprvkey.network);
+ <span class="kw">let </span>tdesc = Bip44(tprvkey, KeychainKind::Internal)
+ .build(Network::Testnet)
+ .unwrap();
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">ExtendedDescriptor::Pkh</span>(<span class="ident">pkh</span>) <span class="op">=</span> <span class="ident">tdesc</span>.<span class="number">0</span> {
- <span class="kw">let</span> <span class="ident">path</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">ChildNumber</span><span class="op">></span> <span class="op">=</span> <span class="ident">pkh</span>.<span class="ident">into_inner</span>().<span class="ident">full_derivation_path</span>().<span class="ident">into</span>();
- <span class="kw">let</span> <span class="ident">purpose</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">get</span>(<span class="number">0</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">purpose</span>, <span class="ident">Hardened</span> { <span class="ident">index</span>: <span class="number">44</span> }));
- <span class="kw">let</span> <span class="ident">coin_type</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">get</span>(<span class="number">1</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">coin_type</span>, <span class="ident">Hardened</span> { <span class="ident">index</span>: <span class="number">1</span> }));
+ <span class="kw">if let </span>ExtendedDescriptor::Pkh(pkh) = tdesc.<span class="number">0 </span>{
+ <span class="kw">let </span>path: Vec<ChildNumber> = pkh.into_inner().full_derivation_path().into();
+ <span class="kw">let </span>purpose = path.get(<span class="number">0</span>).unwrap();
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(purpose, Hardened { index: <span class="number">44 </span>}));
+ <span class="kw">let </span>coin_type = path.get(<span class="number">1</span>).unwrap();
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(coin_type, Hardened { index: <span class="number">1 </span>}));
}
}
- <span class="comment">// verify template descriptor generates expected address(es)</span>
- <span class="kw">fn</span> <span class="ident">check</span>(
- <span class="ident">desc</span>: <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">DescriptorError</span><span class="op">></span>,
- <span class="ident">is_witness</span>: <span class="ident">bool</span>,
- <span class="ident">is_fixed</span>: <span class="ident">bool</span>,
- <span class="ident">expected</span>: <span class="kw-2">&</span>[<span class="kw-2">&</span><span class="ident">str</span>],
+ <span class="comment">// verify template descriptor generates expected address(es)
+ </span><span class="kw">fn </span>check(
+ desc: <span class="prelude-ty">Result</span><(Descriptor<DescriptorPublicKey>, KeyMap, ValidNetworks), DescriptorError>,
+ is_witness: bool,
+ is_fixed: bool,
+ expected: <span class="kw-2">&</span>[<span class="kw-2">&</span>str],
) {
- <span class="kw">let</span> (<span class="ident">desc</span>, <span class="ident">_key_map</span>, <span class="ident">_networks</span>) <span class="op">=</span> <span class="ident">desc</span>.<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">desc</span>.<span class="ident">is_witness</span>(), <span class="ident">is_witness</span>);
- <span class="macro">assert_eq!</span>(<span class="op">!</span><span class="ident">desc</span>.<span class="ident">has_wildcard</span>(), <span class="ident">is_fixed</span>);
- <span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">expected</span>.<span class="ident">len</span>() {
- <span class="kw">let</span> <span class="ident">index</span> <span class="op">=</span> <span class="ident">i</span> <span class="kw">as</span> <span class="ident">u32</span>;
- <span class="kw">let</span> <span class="ident">child_desc</span> <span class="op">=</span> <span class="kw">if</span> <span class="op">!</span><span class="ident">desc</span>.<span class="ident">has_wildcard</span>() {
- <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="number">0</span>)
- } <span class="kw">else</span> {
- <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="ident">index</span>)
+ <span class="kw">let </span>(desc, _key_map, _networks) = desc.unwrap();
+ <span class="macro">assert_eq!</span>(desc.is_witness(), is_witness);
+ <span class="macro">assert_eq!</span>(!desc.has_wildcard(), is_fixed);
+ <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..expected.len() {
+ <span class="kw">let </span>index = i <span class="kw">as </span>u32;
+ <span class="kw">let </span>child_desc = <span class="kw">if </span>!desc.has_wildcard() {
+ desc.at_derivation_index(<span class="number">0</span>)
+ } <span class="kw">else </span>{
+ desc.at_derivation_index(index)
};
- <span class="kw">let</span> <span class="ident">address</span> <span class="op">=</span> <span class="ident">child_desc</span>.<span class="ident">address</span>(<span class="ident">Regtest</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">address</span>.<span class="ident">to_string</span>(), <span class="kw-2">*</span><span class="ident">expected</span>.<span class="ident">get</span>(<span class="ident">i</span>).<span class="ident">unwrap</span>());
+ <span class="kw">let </span>address = child_desc.address(Regtest).unwrap();
+ <span class="macro">assert_eq!</span>(address.to_string(), <span class="kw-2">*</span>expected.get(i).unwrap());
}
}
- <span class="comment">// P2PKH</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_p2ph_template</span>() {
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)
- .<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">P2Pkh</span>(<span class="ident">prvkey</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// P2PKH
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_p2ph_template() {
+ <span class="kw">let </span>prvkey =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)
+ .unwrap();
+ check(
+ P2Pkh(prvkey).build(Network::Bitcoin),
<span class="bool-val">false</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"</span>],
);
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ <span class="kw">let </span>pubkey = bitcoin::PublicKey::from_str(
<span class="string">"03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">P2Pkh</span>(<span class="ident">pubkey</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ .unwrap();
+ check(
+ P2Pkh(pubkey).build(Network::Bitcoin),
<span class="bool-val">false</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"muZpTpBYhxmRFuCjLc7C6BBDF32C8XVJUi"</span>],
);
}
- <span class="comment">// P2WPKH-P2SH `sh(wpkh(key))`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_p2wphp2sh_template</span>() {
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)
- .<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">P2Wpkh_P2Sh</span>(<span class="ident">prvkey</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// P2WPKH-P2SH `sh(wpkh(key))`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_p2wphp2sh_template() {
+ <span class="kw">let </span>prvkey =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)
+ .unwrap();
+ check(
+ P2Wpkh_P2Sh(prvkey).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"</span>],
);
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ <span class="kw">let </span>pubkey = bitcoin::PublicKey::from_str(
<span class="string">"03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">P2Wpkh_P2Sh</span>(<span class="ident">pubkey</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ .unwrap();
+ check(
+ P2Wpkh_P2Sh(pubkey).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"2N5LiC3CqzxDamRTPG1kiNv1FpNJQ7x28sb"</span>],
);
}
- <span class="comment">// P2WPKH `wpkh(key)`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_p2wph_template</span>() {
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::from_wif</span>(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)
- .<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">P2Wpkh</span>(<span class="ident">prvkey</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// P2WPKH `wpkh(key)`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_p2wph_template() {
+ <span class="kw">let </span>prvkey =
+ bitcoin::PrivateKey::from_wif(<span class="string">"cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um"</span>)
+ .unwrap();
+ check(
+ P2Wpkh(prvkey).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"bcrt1q4525hmgw265tl3drrl8jjta7ayffu6jfcwxx9y"</span>],
);
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">bitcoin::PublicKey::from_str</span>(
+ <span class="kw">let </span>pubkey = bitcoin::PublicKey::from_str(
<span class="string">"03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"</span>,
)
- .<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">P2Wpkh</span>(<span class="ident">pubkey</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ .unwrap();
+ check(
+ P2Wpkh(pubkey).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">true</span>,
<span class="kw-2">&</span>[<span class="string">"bcrt1qngw83fg8dz0k749cg7k3emc7v98wy0c7azaa6h"</span>],
);
}
- <span class="comment">// BIP44 `pkh(key/44'/0'/0'/{0,1}/*)`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip44_template</span>() {
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">Bip44</span>(<span class="ident">prvkey</span>, <span class="ident">KeychainKind::External</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// BIP44 `pkh(key/44'/0'/0'/{0,1}/*)`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip44_template() {
+ <span class="kw">let </span>prvkey = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ check(
+ Bip44(prvkey, KeychainKind::External).build(Network::Bitcoin),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
<span class="string">"mzYvhRAuQqbdSKMVVzXNYyqihgNdRadAUQ"</span>,
],
);
- <span class="ident">check</span>(
- <span class="ident">Bip44</span>(<span class="ident">prvkey</span>, <span class="ident">KeychainKind::Internal</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ check(
+ Bip44(prvkey, KeychainKind::Internal).build(Network::Bitcoin),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="comment">// BIP44 public `pkh(key/{0,1}/*)`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip44_public_template</span>() {
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::Fingerprint::from_str</span>(<span class="string">"c55b303f"</span>).<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">Bip44Public</span>(<span class="ident">pubkey</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::External</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// BIP44 public `pkh(key/{0,1}/*)`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip44_public_template() {
+ <span class="kw">let </span>pubkey = bitcoin::util::bip32::ExtendedPubKey::from_str(<span class="string">"tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU"</span>).unwrap();
+ <span class="kw">let </span>fingerprint = bitcoin::util::bip32::Fingerprint::from_str(<span class="string">"c55b303f"</span>).unwrap();
+ check(
+ Bip44Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
<span class="string">"muCPpS6Ue7nkzeJMWDViw7Lkwr92Yc4K8g"</span>,
],
);
- <span class="ident">check</span>(
- <span class="ident">Bip44Public</span>(<span class="ident">pubkey</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::Internal</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ check(
+ Bip44Public(pubkey, fingerprint, KeychainKind::Internal).build(Network::Bitcoin),
<span class="bool-val">false</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="comment">// BIP49 `sh(wpkh(key/49'/0'/0'/{0,1}/*))`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip49_template</span>() {
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">Bip49</span>(<span class="ident">prvkey</span>, <span class="ident">KeychainKind::External</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// BIP49 `sh(wpkh(key/49'/0'/0'/{0,1}/*))`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip49_template() {
+ <span class="kw">let </span>prvkey = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ check(
+ Bip49(prvkey, KeychainKind::External).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
<span class="string">"2NAFTVtksF9T4a97M7nyCjwUBD24QevZ5Z4"</span>,
],
);
- <span class="ident">check</span>(
- <span class="ident">Bip49</span>(<span class="ident">prvkey</span>, <span class="ident">KeychainKind::Internal</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ check(
+ Bip49(prvkey, KeychainKind::Internal).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="comment">// BIP49 public `sh(wpkh(key/{0,1}/*))`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip49_public_template</span>() {
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::Fingerprint::from_str</span>(<span class="string">"c55b303f"</span>).<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">Bip49Public</span>(<span class="ident">pubkey</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::External</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// BIP49 public `sh(wpkh(key/{0,1}/*))`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip49_public_template() {
+ <span class="kw">let </span>pubkey = bitcoin::util::bip32::ExtendedPubKey::from_str(<span class="string">"tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L"</span>).unwrap();
+ <span class="kw">let </span>fingerprint = bitcoin::util::bip32::Fingerprint::from_str(<span class="string">"c55b303f"</span>).unwrap();
+ check(
+ Bip49Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
<span class="string">"2MveFxAuC8BYPzTybx7FxSzW8HSd8ATT4z7"</span>,
],
);
- <span class="ident">check</span>(
- <span class="ident">Bip49Public</span>(<span class="ident">pubkey</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::Internal</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ check(
+ Bip49Public(pubkey, fingerprint, KeychainKind::Internal).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="comment">// BIP84 `wpkh(key/84'/0'/0'/{0,1}/*)`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip84_template</span>() {
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">Bip84</span>(<span class="ident">prvkey</span>, <span class="ident">KeychainKind::External</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// BIP84 `wpkh(key/84'/0'/0'/{0,1}/*)`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip84_template() {
+ <span class="kw">let </span>prvkey = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ check(
+ Bip84(prvkey, KeychainKind::External).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
<span class="string">"bcrt1q4h7fq9zhxst6e69p3n882nfj649l7w9g3zccfp"</span>,
],
);
- <span class="ident">check</span>(
- <span class="ident">Bip84</span>(<span class="ident">prvkey</span>, <span class="ident">KeychainKind::Internal</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ check(
+ Bip84(prvkey, KeychainKind::Internal).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
);
}
- <span class="comment">// BIP84 public `wpkh(key/{0,1}/*)`</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bip84_public_template</span>() {
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::Fingerprint::from_str</span>(<span class="string">"c55b303f"</span>).<span class="ident">unwrap</span>();
- <span class="ident">check</span>(
- <span class="ident">Bip84Public</span>(<span class="ident">pubkey</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::External</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ <span class="comment">// BIP84 public `wpkh(key/{0,1}/*)`
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bip84_public_template() {
+ <span class="kw">let </span>pubkey = bitcoin::util::bip32::ExtendedPubKey::from_str(<span class="string">"tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q"</span>).unwrap();
+ <span class="kw">let </span>fingerprint = bitcoin::util::bip32::Fingerprint::from_str(<span class="string">"c55b303f"</span>).unwrap();
+ check(
+ Bip84Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
<span class="string">"bcrt1qt9800y6xl3922jy3uyl0z33jh5wfpycyhcylr9"</span>,
],
);
- <span class="ident">check</span>(
- <span class="ident">Bip84Public</span>(<span class="ident">pubkey</span>, <span class="ident">fingerprint</span>, <span class="ident">KeychainKind::Internal</span>).<span class="ident">build</span>(<span class="ident">Network::Bitcoin</span>),
+ check(
+ Bip84Public(pubkey, fingerprint, KeychainKind::Internal).build(Network::Bitcoin),
<span class="bool-val">true</span>,
<span class="bool-val">false</span>,
<span class="kw-2">&</span>[
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/error.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script><script defer src="../../source-script.js"></script><script defer src="../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/error.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../source-files.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
+</span><span class="kw">use </span>std::fmt;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin::Network</span>;
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">descriptor</span>, <span class="ident">wallet</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Txid</span>};
+<span class="kw">use </span><span class="kw">crate</span>::bitcoin::Network;
+<span class="kw">use crate</span>::{descriptor, wallet};
+<span class="kw">use </span>bitcoin::{OutPoint, Txid};
-<span class="doccomment">/// Errors that can be thrown by the [`Wallet`](crate::wallet::Wallet)</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Error</span> {
- <span class="doccomment">/// Wrong number of bytes found when trying to convert to u32</span>
- <span class="ident">InvalidU32Bytes</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span>),
- <span class="doccomment">/// Generic error</span>
- <span class="ident">Generic</span>(<span class="ident">String</span>),
- <span class="doccomment">/// This error is thrown when trying to convert Bare and Public key script to address</span>
- <span class="ident">ScriptDoesntHaveAddressForm</span>,
- <span class="doccomment">/// Cannot build a tx without recipients</span>
- <span class="ident">NoRecipients</span>,
- <span class="doccomment">/// `manually_selected_only` option is selected but no utxo has been passed</span>
- <span class="ident">NoUtxosSelected</span>,
- <span class="doccomment">/// Output created is under the dust limit, 546 satoshis</span>
- <span class="ident">OutputBelowDustLimit</span>(<span class="ident">usize</span>),
- <span class="doccomment">/// Wallet's UTXO set is not enough to cover recipient's requested plus fee</span>
- <span class="ident">InsufficientFunds</span> {
- <span class="doccomment">/// Sats needed for some transaction</span>
- <span class="ident">needed</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Sats available for spending</span>
- <span class="ident">available</span>: <span class="ident">u64</span>,
+<span class="doccomment">/// Errors that can be thrown by the [`Wallet`](crate::wallet::Wallet)
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>Error {
+ <span class="doccomment">/// Wrong number of bytes found when trying to convert to u32
+ </span>InvalidU32Bytes(Vec<u8>),
+ <span class="doccomment">/// Generic error
+ </span>Generic(String),
+ <span class="doccomment">/// This error is thrown when trying to convert Bare and Public key script to address
+ </span>ScriptDoesntHaveAddressForm,
+ <span class="doccomment">/// Cannot build a tx without recipients
+ </span>NoRecipients,
+ <span class="doccomment">/// `manually_selected_only` option is selected but no utxo has been passed
+ </span>NoUtxosSelected,
+ <span class="doccomment">/// Output created is under the dust limit, 546 satoshis
+ </span>OutputBelowDustLimit(usize),
+ <span class="doccomment">/// Wallet's UTXO set is not enough to cover recipient's requested plus fee
+ </span>InsufficientFunds {
+ <span class="doccomment">/// Sats needed for some transaction
+ </span>needed: u64,
+ <span class="doccomment">/// Sats available for spending
+ </span>available: u64,
},
- <span class="doccomment">/// Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow</span>
- <span class="doccomment">/// exponentially, thus a limit is set, and when hit, this error is thrown</span>
- <span class="ident">BnBTotalTriesExceeded</span>,
- <span class="doccomment">/// Branch and bound coin selection tries to avoid needing a change by finding the right inputs for</span>
- <span class="doccomment">/// the desired outputs plus fee, if there is not such combination this error is thrown</span>
- <span class="ident">BnBNoExactMatch</span>,
- <span class="doccomment">/// Happens when trying to spend an UTXO that is not in the internal database</span>
- <span class="ident">UnknownUtxo</span>,
- <span class="doccomment">/// Thrown when a tx is not found in the internal database</span>
- <span class="ident">TransactionNotFound</span>,
- <span class="doccomment">/// Happens when trying to bump a transaction that is already confirmed</span>
- <span class="ident">TransactionConfirmed</span>,
- <span class="doccomment">/// Trying to replace a tx that has a sequence >= `0xFFFFFFFE`</span>
- <span class="ident">IrreplaceableTransaction</span>,
- <span class="doccomment">/// When bumping a tx the fee rate requested is lower than required</span>
- <span class="ident">FeeRateTooLow</span> {
- <span class="doccomment">/// Required fee rate (satoshi/vbyte)</span>
- <span class="ident">required</span>: <span class="ident"><span class="kw">crate</span>::types::FeeRate</span>,
+ <span class="doccomment">/// Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow
+ /// exponentially, thus a limit is set, and when hit, this error is thrown
+ </span>BnBTotalTriesExceeded,
+ <span class="doccomment">/// Branch and bound coin selection tries to avoid needing a change by finding the right inputs for
+ /// the desired outputs plus fee, if there is not such combination this error is thrown
+ </span>BnBNoExactMatch,
+ <span class="doccomment">/// Happens when trying to spend an UTXO that is not in the internal database
+ </span>UnknownUtxo,
+ <span class="doccomment">/// Thrown when a tx is not found in the internal database
+ </span>TransactionNotFound,
+ <span class="doccomment">/// Happens when trying to bump a transaction that is already confirmed
+ </span>TransactionConfirmed,
+ <span class="doccomment">/// Trying to replace a tx that has a sequence >= `0xFFFFFFFE`
+ </span>IrreplaceableTransaction,
+ <span class="doccomment">/// When bumping a tx the fee rate requested is lower than required
+ </span>FeeRateTooLow {
+ <span class="doccomment">/// Required fee rate (satoshi/vbyte)
+ </span>required: <span class="kw">crate</span>::types::FeeRate,
},
- <span class="doccomment">/// When bumping a tx the absolute fee requested is lower than replaced tx absolute fee</span>
- <span class="ident">FeeTooLow</span> {
- <span class="doccomment">/// Required fee absolute value (satoshi)</span>
- <span class="ident">required</span>: <span class="ident">u64</span>,
+ <span class="doccomment">/// When bumping a tx the absolute fee requested is lower than replaced tx absolute fee
+ </span>FeeTooLow {
+ <span class="doccomment">/// Required fee absolute value (satoshi)
+ </span>required: u64,
},
- <span class="doccomment">/// Node doesn't have data to estimate a fee rate</span>
- <span class="ident">FeeRateUnavailable</span>,
- <span class="doccomment">/// In order to use the [`TxBuilder::add_global_xpubs`] option every extended</span>
- <span class="doccomment">/// key in the descriptor must either be a master key itself (having depth = 0) or have an</span>
- <span class="doccomment">/// explicit origin provided</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`TxBuilder::add_global_xpubs`]: crate::wallet::tx_builder::TxBuilder::add_global_xpubs</span>
- <span class="ident">MissingKeyOrigin</span>(<span class="ident">String</span>),
- <span class="doccomment">/// Error while working with [`keys`](crate::keys)</span>
- <span class="ident">Key</span>(<span class="ident"><span class="kw">crate</span>::keys::KeyError</span>),
- <span class="doccomment">/// Descriptor checksum mismatch</span>
- <span class="ident">ChecksumMismatch</span>,
- <span class="doccomment">/// Spending policy is not compatible with this [`KeychainKind`](crate::types::KeychainKind)</span>
- <span class="ident">SpendingPolicyRequired</span>(<span class="ident"><span class="kw">crate</span>::types::KeychainKind</span>),
- <span class="doccomment">/// Error while extracting and manipulating policies</span>
- <span class="ident">InvalidPolicyPathError</span>(<span class="ident"><span class="kw">crate</span>::descriptor::policy::PolicyError</span>),
- <span class="doccomment">/// Signing error</span>
- <span class="ident">Signer</span>(<span class="ident"><span class="kw">crate</span>::wallet::signer::SignerError</span>),
- <span class="doccomment">/// Invalid network</span>
- <span class="ident">InvalidNetwork</span> {
- <span class="doccomment">/// requested network, for example what is given as bdk-cli option</span>
- <span class="ident">requested</span>: <span class="ident">Network</span>,
- <span class="doccomment">/// found network, for example the network of the bitcoin node</span>
- <span class="ident">found</span>: <span class="ident">Network</span>,
+ <span class="doccomment">/// Node doesn't have data to estimate a fee rate
+ </span>FeeRateUnavailable,
+ <span class="doccomment">/// In order to use the [`TxBuilder::add_global_xpubs`] option every extended
+ /// key in the descriptor must either be a master key itself (having depth = 0) or have an
+ /// explicit origin provided
+ ///
+ /// [`TxBuilder::add_global_xpubs`]: crate::wallet::tx_builder::TxBuilder::add_global_xpubs
+ </span>MissingKeyOrigin(String),
+ <span class="doccomment">/// Error while working with [`keys`](crate::keys)
+ </span>Key(<span class="kw">crate</span>::keys::KeyError),
+ <span class="doccomment">/// Descriptor checksum mismatch
+ </span>ChecksumMismatch,
+ <span class="doccomment">/// Spending policy is not compatible with this [`KeychainKind`](crate::types::KeychainKind)
+ </span>SpendingPolicyRequired(<span class="kw">crate</span>::types::KeychainKind),
+ <span class="doccomment">/// Error while extracting and manipulating policies
+ </span>InvalidPolicyPathError(<span class="kw">crate</span>::descriptor::policy::PolicyError),
+ <span class="doccomment">/// Signing error
+ </span>Signer(<span class="kw">crate</span>::wallet::signer::SignerError),
+ <span class="doccomment">/// Invalid network
+ </span>InvalidNetwork {
+ <span class="doccomment">/// requested network, for example what is given as bdk-cli option
+ </span>requested: Network,
+ <span class="doccomment">/// found network, for example the network of the bitcoin node
+ </span>found: Network,
},
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"verify"</span>)]</span>
- <span class="doccomment">/// Transaction verification error</span>
- <span class="ident">Verification</span>(<span class="ident"><span class="kw">crate</span>::wallet::verify::VerifyError</span>),
+ <span class="attr">#[cfg(feature = <span class="string">"verify"</span>)]
+ </span><span class="doccomment">/// Transaction verification error
+ </span>Verification(<span class="kw">crate</span>::wallet::verify::VerifyError),
- <span class="doccomment">/// Progress value must be between `0.0` (included) and `100.0` (included)</span>
- <span class="ident">InvalidProgressValue</span>(<span class="ident">f32</span>),
- <span class="doccomment">/// Progress update error (maybe the channel has been closed)</span>
- <span class="ident">ProgressUpdateError</span>,
- <span class="doccomment">/// Requested outpoint doesn't exist in the tx (vout greater than available outputs)</span>
- <span class="ident">InvalidOutpoint</span>(<span class="ident">OutPoint</span>),
+ <span class="doccomment">/// Progress value must be between `0.0` (included) and `100.0` (included)
+ </span>InvalidProgressValue(f32),
+ <span class="doccomment">/// Progress update error (maybe the channel has been closed)
+ </span>ProgressUpdateError,
+ <span class="doccomment">/// Requested outpoint doesn't exist in the tx (vout greater than available outputs)
+ </span>InvalidOutpoint(OutPoint),
- <span class="doccomment">/// Error related to the parsing and usage of descriptors</span>
- <span class="ident">Descriptor</span>(<span class="ident"><span class="kw">crate</span>::descriptor::error::Error</span>),
- <span class="doccomment">/// Encoding error</span>
- <span class="ident">Encode</span>(<span class="ident">bitcoin::consensus::encode::Error</span>),
- <span class="doccomment">/// Miniscript error</span>
- <span class="ident">Miniscript</span>(<span class="ident">miniscript::Error</span>),
- <span class="doccomment">/// Miniscript PSBT error</span>
- <span class="ident">MiniscriptPsbt</span>(<span class="ident">MiniscriptPsbtError</span>),
- <span class="doccomment">/// BIP32 error</span>
- <span class="ident">Bip32</span>(<span class="ident">bitcoin::util::bip32::Error</span>),
- <span class="doccomment">/// An ECDSA error</span>
- <span class="ident">Secp256k1</span>(<span class="ident">bitcoin::secp256k1::Error</span>),
- <span class="doccomment">/// Error serializing or deserializing JSON data</span>
- <span class="ident">Json</span>(<span class="ident">serde_json::Error</span>),
- <span class="doccomment">/// Hex decoding error</span>
- <span class="ident">Hex</span>(<span class="ident">bitcoin::hashes::hex::Error</span>),
- <span class="doccomment">/// Partially signed bitcoin transaction error</span>
- <span class="ident">Psbt</span>(<span class="ident">bitcoin::util::psbt::Error</span>),
- <span class="doccomment">/// Partially signed bitcoin transaction parse error</span>
- <span class="ident">PsbtParse</span>(<span class="ident">bitcoin::util::psbt::PsbtParseError</span>),
+ <span class="doccomment">/// Error related to the parsing and usage of descriptors
+ </span>Descriptor(<span class="kw">crate</span>::descriptor::error::Error),
+ <span class="doccomment">/// Encoding error
+ </span>Encode(bitcoin::consensus::encode::Error),
+ <span class="doccomment">/// Miniscript error
+ </span>Miniscript(miniscript::Error),
+ <span class="doccomment">/// Miniscript PSBT error
+ </span>MiniscriptPsbt(MiniscriptPsbtError),
+ <span class="doccomment">/// BIP32 error
+ </span>Bip32(bitcoin::util::bip32::Error),
+ <span class="doccomment">/// An ECDSA error
+ </span>Secp256k1(bitcoin::secp256k1::Error),
+ <span class="doccomment">/// Error serializing or deserializing JSON data
+ </span>Json(serde_json::Error),
+ <span class="doccomment">/// Hex decoding error
+ </span>Hex(bitcoin::hashes::hex::Error),
+ <span class="doccomment">/// Partially signed bitcoin transaction error
+ </span>Psbt(bitcoin::util::psbt::Error),
+ <span class="doccomment">/// Partially signed bitcoin transaction parse error
+ </span>PsbtParse(bitcoin::util::psbt::PsbtParseError),
- <span class="comment">//KeyMismatch(bitcoin::secp256k1::PublicKey, bitcoin::secp256k1::PublicKey),</span>
- <span class="comment">//MissingInputUTXO(usize),</span>
- <span class="comment">//InvalidAddressNetwork(Address),</span>
- <span class="comment">//DifferentTransactions,</span>
- <span class="comment">//DifferentDescriptorStructure,</span>
- <span class="comment">//Uncapable(crate::blockchain::Capability),</span>
- <span class="comment">//MissingCachedAddresses,</span>
- <span class="doccomment">/// [`crate::blockchain::WalletSync`] sync attempt failed due to missing scripts in cache which</span>
- <span class="doccomment">/// are needed to satisfy `stop_gap`.</span>
- <span class="ident">MissingCachedScripts</span>(<span class="ident">MissingCachedScripts</span>),
+ <span class="comment">//KeyMismatch(bitcoin::secp256k1::PublicKey, bitcoin::secp256k1::PublicKey),
+ //MissingInputUTXO(usize),
+ //InvalidAddressNetwork(Address),
+ //DifferentTransactions,
+ //DifferentDescriptorStructure,
+ //Uncapable(crate::blockchain::Capability),
+ //MissingCachedAddresses,
+ </span><span class="doccomment">/// [`crate::blockchain::WalletSync`] sync attempt failed due to missing scripts in cache which
+ /// are needed to satisfy `stop_gap`.
+ </span>MissingCachedScripts(MissingCachedScripts),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
- <span class="doccomment">/// Electrum client error</span>
- <span class="ident">Electrum</span>(<span class="ident">electrum_client::Error</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
- <span class="doccomment">/// Esplora client error</span>
- <span class="ident">Esplora</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::blockchain::esplora::EsploraError</span><span class="op">></span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
- <span class="doccomment">/// Compact filters client error)</span>
- <span class="ident">CompactFilters</span>(<span class="ident"><span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
- <span class="doccomment">/// Sled database error</span>
- <span class="ident">Sled</span>(<span class="ident">sled::Error</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
- <span class="doccomment">/// Rpc client error</span>
- <span class="ident">Rpc</span>(<span class="ident">bitcoincore_rpc::Error</span>),
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
- <span class="doccomment">/// Rusqlite client error</span>
- <span class="ident">Rusqlite</span>(<span class="ident">rusqlite::Error</span>),
+ <span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+ </span><span class="doccomment">/// Electrum client error
+ </span>Electrum(electrum_client::Error),
+ <span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+ </span><span class="doccomment">/// Esplora client error
+ </span>Esplora(Box<<span class="kw">crate</span>::blockchain::esplora::EsploraError>),
+ <span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+ </span><span class="doccomment">/// Compact filters client error)
+ </span>CompactFilters(<span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError),
+ <span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+ </span><span class="doccomment">/// Sled database error
+ </span>Sled(sled::Error),
+ <span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+ </span><span class="doccomment">/// Rpc client error
+ </span>Rpc(bitcoincore_rpc::Error),
+ <span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+ </span><span class="doccomment">/// Rusqlite client error
+ </span>Rusqlite(rusqlite::Error),
}
-<span class="doccomment">/// Errors returned by miniscript when updating inconsistent PSBTs</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">MiniscriptPsbtError</span> {
- <span class="ident">Conversion</span>(<span class="ident">miniscript::descriptor::ConversionError</span>),
- <span class="ident">UtxoUpdate</span>(<span class="ident">miniscript::psbt::UtxoUpdateError</span>),
- <span class="ident">OutputUpdate</span>(<span class="ident">miniscript::psbt::OutputUpdateError</span>),
+<span class="doccomment">/// Errors returned by miniscript when updating inconsistent PSBTs
+</span><span class="attr">#[derive(Debug, Clone)]
+</span><span class="kw">pub enum </span>MiniscriptPsbtError {
+ Conversion(miniscript::descriptor::ConversionError),
+ UtxoUpdate(miniscript::psbt::UtxoUpdateError),
+ OutputUpdate(miniscript::psbt::OutputUpdateError),
}
-<span class="doccomment">/// Represents the last failed [`crate::blockchain::WalletSync`] sync attempt in which we were short</span>
-<span class="doccomment">/// on cached `scriptPubKey`s.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MissingCachedScripts</span> {
- <span class="doccomment">/// Number of scripts in which txs were requested during last request.</span>
- <span class="kw">pub</span> <span class="ident">last_count</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// Minimum number of scripts to cache more of in order to satisfy `stop_gap`.</span>
- <span class="kw">pub</span> <span class="ident">missing_count</span>: <span class="ident">usize</span>,
+<span class="doccomment">/// Represents the last failed [`crate::blockchain::WalletSync`] sync attempt in which we were short
+/// on cached `scriptPubKey`s.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>MissingCachedScripts {
+ <span class="doccomment">/// Number of scripts in which txs were requested during last request.
+ </span><span class="kw">pub </span>last_count: usize,
+ <span class="doccomment">/// Minimum number of scripts to cache more of in order to satisfy `stop_gap`.
+ </span><span class="kw">pub </span>missing_count: usize,
}
-<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>fmt::Display <span class="kw">for </span>Error {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">Error</span> {}
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>Error {}
-<span class="macro">macro_rules!</span> <span class="ident">impl_error</span> {
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>:<span class="ident">ident</span> ) => {
- <span class="macro">impl_error!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>, <span class="ident">Error</span>);
+<span class="macro">macro_rules! </span>impl_error {
+ ( <span class="macro-nonterminal">$from</span>:ty, <span class="macro-nonterminal">$to</span>:ident ) => {
+ <span class="macro">impl_error!</span>(<span class="macro-nonterminal">$from</span>, <span class="macro-nonterminal">$to</span>, Error);
};
- ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>:<span class="ident">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">impl_for</span>:<span class="ident">ty</span> ) => {
- <span class="kw">impl</span> <span class="ident">std::convert::From</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span><span class="op">></span> <span class="kw">for</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">impl_for</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">err</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">from</span>) -> <span class="self">Self</span> {
- <span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">impl_for</span><span class="op">></span>::<span class="macro-nonterminal">$</span><span class="macro-nonterminal">to</span>(<span class="ident">err</span>)
+ ( <span class="macro-nonterminal">$from</span>:ty, <span class="macro-nonterminal">$to</span>:ident, <span class="macro-nonterminal">$impl_for</span>:ty ) => {
+ <span class="kw">impl </span>std::convert::From<<span class="macro-nonterminal">$from</span>> <span class="kw">for </span><span class="macro-nonterminal">$impl_for </span>{
+ <span class="kw">fn </span>from(err: <span class="macro-nonterminal">$from</span>) -> <span class="self">Self </span>{
+ <<span class="macro-nonterminal">$impl_for</span>>::<span class="macro-nonterminal">$to</span>(err)
}
}
};
}
-<span class="macro">impl_error!</span>(<span class="ident">descriptor::error::Error</span>, <span class="ident">Descriptor</span>);
-<span class="macro">impl_error!</span>(<span class="ident">descriptor::policy::PolicyError</span>, <span class="ident">InvalidPolicyPathError</span>);
-<span class="macro">impl_error!</span>(<span class="ident">wallet::signer::SignerError</span>, <span class="ident">Signer</span>);
+<span class="macro">impl_error!</span>(descriptor::error::Error, Descriptor);
+<span class="macro">impl_error!</span>(descriptor::policy::PolicyError, InvalidPolicyPathError);
+<span class="macro">impl_error!</span>(wallet::signer::SignerError, Signer);
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::keys::KeyError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">key_error</span>: <span class="ident"><span class="kw">crate</span>::keys::KeyError</span>) -> <span class="ident">Error</span> {
- <span class="kw">match</span> <span class="ident">key_error</span> {
- <span class="ident"><span class="kw">crate</span>::keys::KeyError::Miniscript</span>(<span class="ident">inner</span>) => <span class="ident">Error::Miniscript</span>(<span class="ident">inner</span>),
- <span class="ident"><span class="kw">crate</span>::keys::KeyError::Bip32</span>(<span class="ident">inner</span>) => <span class="ident">Error::Bip32</span>(<span class="ident">inner</span>),
- <span class="ident"><span class="kw">crate</span>::keys::KeyError::InvalidChecksum</span> => <span class="ident">Error::ChecksumMismatch</span>,
- <span class="ident">e</span> => <span class="ident">Error::Key</span>(<span class="ident">e</span>),
+<span class="kw">impl </span>From<<span class="kw">crate</span>::keys::KeyError> <span class="kw">for </span>Error {
+ <span class="kw">fn </span>from(key_error: <span class="kw">crate</span>::keys::KeyError) -> Error {
+ <span class="kw">match </span>key_error {
+ <span class="kw">crate</span>::keys::KeyError::Miniscript(inner) => Error::Miniscript(inner),
+ <span class="kw">crate</span>::keys::KeyError::Bip32(inner) => Error::Bip32(inner),
+ <span class="kw">crate</span>::keys::KeyError::InvalidChecksum => Error::ChecksumMismatch,
+ e => Error::Key(e),
}
}
}
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::consensus::encode::Error</span>, <span class="ident">Encode</span>);
-<span class="macro">impl_error!</span>(<span class="ident">miniscript::Error</span>, <span class="ident">Miniscript</span>);
-<span class="macro">impl_error!</span>(<span class="ident">MiniscriptPsbtError</span>, <span class="ident">MiniscriptPsbt</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::bip32::Error</span>, <span class="ident">Bip32</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::secp256k1::Error</span>, <span class="ident">Secp256k1</span>);
-<span class="macro">impl_error!</span>(<span class="ident">serde_json::Error</span>, <span class="ident">Json</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::hashes::hex::Error</span>, <span class="ident">Hex</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::psbt::Error</span>, <span class="ident">Psbt</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::psbt::PsbtParseError</span>, <span class="ident">PsbtParse</span>);
+<span class="macro">impl_error!</span>(bitcoin::consensus::encode::Error, Encode);
+<span class="macro">impl_error!</span>(miniscript::Error, Miniscript);
+<span class="macro">impl_error!</span>(MiniscriptPsbtError, MiniscriptPsbt);
+<span class="macro">impl_error!</span>(bitcoin::util::bip32::Error, Bip32);
+<span class="macro">impl_error!</span>(bitcoin::secp256k1::Error, Secp256k1);
+<span class="macro">impl_error!</span>(serde_json::Error, Json);
+<span class="macro">impl_error!</span>(bitcoin::hashes::hex::Error, Hex);
+<span class="macro">impl_error!</span>(bitcoin::util::psbt::Error, Psbt);
+<span class="macro">impl_error!</span>(bitcoin::util::psbt::PsbtParseError, PsbtParse);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
-<span class="macro">impl_error!</span>(<span class="ident">electrum_client::Error</span>, <span class="ident">Electrum</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
-<span class="macro">impl_error!</span>(<span class="ident">sled::Error</span>, <span class="ident">Sled</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
-<span class="macro">impl_error!</span>(<span class="ident">bitcoincore_rpc::Error</span>, <span class="ident">Rpc</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
-<span class="macro">impl_error!</span>(<span class="ident">rusqlite::Error</span>, <span class="ident">Rusqlite</span>);
+<span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+</span><span class="macro">impl_error!</span>(electrum_client::Error, Electrum);
+<span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+</span><span class="macro">impl_error!</span>(sled::Error, Sled);
+<span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+</span><span class="macro">impl_error!</span>(bitcoincore_rpc::Error, Rpc);
+<span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+</span><span class="macro">impl_error!</span>(rusqlite::Error, Rusqlite);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>)]</span>
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">other</span>: <span class="ident"><span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError</span>) -> <span class="self">Self</span> {
- <span class="kw">match</span> <span class="ident">other</span> {
- <span class="ident"><span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError::Global</span>(<span class="ident">e</span>) => <span class="kw-2">*</span><span class="ident">e</span>,
- <span class="ident">err</span> => <span class="ident">Error::CompactFilters</span>(<span class="ident">err</span>),
+<span class="attr">#[cfg(feature = <span class="string">"compact_filters"</span>)]
+</span><span class="kw">impl </span>From<<span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError> <span class="kw">for </span>Error {
+ <span class="kw">fn </span>from(other: <span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError) -> <span class="self">Self </span>{
+ <span class="kw">match </span>other {
+ <span class="kw">crate</span>::blockchain::compact_filters::CompactFiltersError::Global(e) => <span class="kw-2">*</span>e,
+ err => Error::CompactFilters(err),
}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"verify"</span>)]</span>
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::wallet::verify::VerifyError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">other</span>: <span class="ident"><span class="kw">crate</span>::wallet::verify::VerifyError</span>) -> <span class="self">Self</span> {
- <span class="kw">match</span> <span class="ident">other</span> {
- <span class="ident"><span class="kw">crate</span>::wallet::verify::VerifyError::Global</span>(<span class="ident">inner</span>) => <span class="kw-2">*</span><span class="ident">inner</span>,
- <span class="ident">err</span> => <span class="ident">Error::Verification</span>(<span class="ident">err</span>),
+<span class="attr">#[cfg(feature = <span class="string">"verify"</span>)]
+</span><span class="kw">impl </span>From<<span class="kw">crate</span>::wallet::verify::VerifyError> <span class="kw">for </span>Error {
+ <span class="kw">fn </span>from(other: <span class="kw">crate</span>::wallet::verify::VerifyError) -> <span class="self">Self </span>{
+ <span class="kw">match </span>other {
+ <span class="kw">crate</span>::wallet::verify::VerifyError::Global(inner) => <span class="kw-2">*</span>inner,
+ err => Error::Verification(err),
}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident"><span class="kw">crate</span>::blockchain::esplora::EsploraError</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Error</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">other</span>: <span class="ident"><span class="kw">crate</span>::blockchain::esplora::EsploraError</span>) -> <span class="self">Self</span> {
- <span class="ident">Error::Esplora</span>(<span class="ident">Box::new</span>(<span class="ident">other</span>))
+<span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+</span><span class="kw">impl </span>From<<span class="kw">crate</span>::blockchain::esplora::EsploraError> <span class="kw">for </span>Error {
+ <span class="kw">fn </span>from(other: <span class="kw">crate</span>::blockchain::esplora::EsploraError) -> <span class="self">Self </span>{
+ Error::Esplora(Box::new(other))
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/keys/bip39.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>bip39.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! BIP-0039</span>
-
-<span class="comment">// TODO: maybe write our own implementation of bip39? Seems stupid to have an extra dependency for</span>
-<span class="comment">// something that should be fairly simple to re-implement.</span>
-
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::Network</span>;
-
-<span class="kw">use</span> <span class="ident">miniscript::ScriptContext</span>;
-
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">bip39</span>::{<span class="ident">Error</span>, <span class="ident">Language</span>, <span class="ident">Mnemonic</span>};
-
-<span class="kw">type</span> <span class="ident">Seed</span> <span class="op">=</span> [<span class="ident">u8</span>; <span class="number">64</span>];
-
-<span class="doccomment">/// Type describing entropy length (aka word count) in the mnemonic</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">WordCount</span> {
- <span class="doccomment">/// 12 words mnemonic (128 bits entropy)</span>
- <span class="ident">Words12</span> <span class="op">=</span> <span class="number">128</span>,
- <span class="doccomment">/// 15 words mnemonic (160 bits entropy)</span>
- <span class="ident">Words15</span> <span class="op">=</span> <span class="number">160</span>,
- <span class="doccomment">/// 18 words mnemonic (192 bits entropy)</span>
- <span class="ident">Words18</span> <span class="op">=</span> <span class="number">192</span>,
- <span class="doccomment">/// 21 words mnemonic (224 bits entropy)</span>
- <span class="ident">Words21</span> <span class="op">=</span> <span class="number">224</span>,
- <span class="doccomment">/// 24 words mnemonic (256 bits entropy)</span>
- <span class="ident">Words24</span> <span class="op">=</span> <span class="number">256</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/keys/bip39.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>bip39.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! BIP-0039
+
+</span><span class="comment">// TODO: maybe write our own implementation of bip39? Seems stupid to have an extra dependency for
+// something that should be fairly simple to re-implement.
+
+</span><span class="kw">use </span>bitcoin::util::bip32;
+<span class="kw">use </span>bitcoin::Network;
+
+<span class="kw">use </span>miniscript::ScriptContext;
+
+<span class="kw">pub use </span>bip39::{Error, Language, Mnemonic};
+
+<span class="kw">type </span>Seed = [u8; <span class="number">64</span>];
+
+<span class="doccomment">/// Type describing entropy length (aka word count) in the mnemonic
+</span><span class="kw">pub enum </span>WordCount {
+ <span class="doccomment">/// 12 words mnemonic (128 bits entropy)
+ </span>Words12 = <span class="number">128</span>,
+ <span class="doccomment">/// 15 words mnemonic (160 bits entropy)
+ </span>Words15 = <span class="number">160</span>,
+ <span class="doccomment">/// 18 words mnemonic (192 bits entropy)
+ </span>Words18 = <span class="number">192</span>,
+ <span class="doccomment">/// 21 words mnemonic (224 bits entropy)
+ </span>Words21 = <span class="number">224</span>,
+ <span class="doccomment">/// 24 words mnemonic (256 bits entropy)
+ </span>Words24 = <span class="number">256</span>,
}
-<span class="kw">use</span> <span class="kw">super</span>::{
- <span class="ident">any_network</span>, <span class="ident">DerivableKey</span>, <span class="ident">DescriptorKey</span>, <span class="ident">ExtendedKey</span>, <span class="ident">GeneratableKey</span>, <span class="ident">GeneratedKey</span>, <span class="ident">KeyError</span>,
+<span class="kw">use super</span>::{
+ any_network, DerivableKey, DescriptorKey, ExtendedKey, GeneratableKey, GeneratedKey, KeyError,
};
-<span class="kw">fn</span> <span class="ident">set_valid_on_any_network</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">descriptor_key</span>: <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
-) -> <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="comment">// We have to pick one network to build the xprv, but since the bip39 standard doesn't</span>
- <span class="comment">// encode the network, the xprv we create is actually valid everywhere. So we override the</span>
- <span class="comment">// valid networks with `any_network()`.</span>
- <span class="ident">descriptor_key</span>.<span class="ident">override_valid_networks</span>(<span class="ident">any_network</span>())
+<span class="kw">fn </span>set_valid_on_any_network<Ctx: ScriptContext>(
+ descriptor_key: DescriptorKey<Ctx>,
+) -> DescriptorKey<Ctx> {
+ <span class="comment">// We have to pick one network to build the xprv, but since the bip39 standard doesn't
+ // encode the network, the xprv we create is actually valid everywhere. So we override the
+ // valid networks with `any_network()`.
+ </span>descriptor_key.override_valid_networks(any_network())
}
-<span class="doccomment">/// Type for a BIP39 mnemonic with an optional passphrase</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">MnemonicWithPassphrase</span> <span class="op">=</span> (<span class="ident">Mnemonic</span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>);
+<span class="doccomment">/// Type for a BIP39 mnemonic with an optional passphrase
+</span><span class="kw">pub type </span>MnemonicWithPassphrase = (Mnemonic, <span class="prelude-ty">Option</span><String>);
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)))]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Seed</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="ident">bip32::ExtendedPrivKey::new_master</span>(<span class="ident">Network::Bitcoin</span>, <span class="kw-2">&</span><span class="self">self</span>[..])<span class="question-mark">?</span>.<span class="ident">into</span>())
+<span class="attr">#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"keys-bip39"</span>)))]
+</span><span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>Seed {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="prelude-val">Ok</span>(bip32::ExtendedPrivKey::new_master(Network::Bitcoin, <span class="kw-2">&</span><span class="self">self</span>[..])<span class="question-mark">?</span>.into())
}
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">source</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor_key</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">into_extended_key</span>()<span class="question-mark">?</span>
- .<span class="ident">into_descriptor_key</span>(<span class="ident">source</span>, <span class="ident">derivation_path</span>)<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>(<span class="ident">set_valid_on_any_network</span>(<span class="ident">descriptor_key</span>))
+ source: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>descriptor_key = <span class="self">self
+ </span>.into_extended_key()<span class="question-mark">?
+ </span>.into_descriptor_key(source, derivation_path)<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>(set_valid_on_any_network(descriptor_key))
}
}
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)))]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">MnemonicWithPassphrase</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">mnemonic</span>, <span class="ident">passphrase</span>) <span class="op">=</span> <span class="self">self</span>;
- <span class="kw">let</span> <span class="ident">seed</span>: <span class="ident">Seed</span> <span class="op">=</span> <span class="ident">mnemonic</span>.<span class="ident">to_seed</span>(<span class="ident">passphrase</span>.<span class="ident">as_deref</span>().<span class="ident">unwrap_or</span>(<span class="string">""</span>));
+<span class="attr">#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"keys-bip39"</span>)))]
+</span><span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>MnemonicWithPassphrase {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="kw">let </span>(mnemonic, passphrase) = <span class="self">self</span>;
+ <span class="kw">let </span>seed: Seed = mnemonic.to_seed(passphrase.as_deref().unwrap_or(<span class="string">""</span>));
- <span class="ident">seed</span>.<span class="ident">into_extended_key</span>()
+ seed.into_extended_key()
}
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">source</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor_key</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">into_extended_key</span>()<span class="question-mark">?</span>
- .<span class="ident">into_descriptor_key</span>(<span class="ident">source</span>, <span class="ident">derivation_path</span>)<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>(<span class="ident">set_valid_on_any_network</span>(<span class="ident">descriptor_key</span>))
+ source: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>descriptor_key = <span class="self">self
+ </span>.into_extended_key()<span class="question-mark">?
+ </span>.into_descriptor_key(source, derivation_path)<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>(set_valid_on_any_network(descriptor_key))
}
}
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)))]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> (<span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">Mnemonic</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>) {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">mnemonic</span>, <span class="ident">passphrase</span>) <span class="op">=</span> <span class="self">self</span>;
- (<span class="ident">mnemonic</span>.<span class="ident">into_key</span>(), <span class="ident">passphrase</span>).<span class="ident">into_extended_key</span>()
+<span class="attr">#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"keys-bip39"</span>)))]
+</span><span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>(GeneratedKey<Mnemonic, Ctx>, <span class="prelude-ty">Option</span><String>) {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="kw">let </span>(mnemonic, passphrase) = <span class="self">self</span>;
+ (mnemonic.into_key(), passphrase).into_extended_key()
}
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">source</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">mnemonic</span>, <span class="ident">passphrase</span>) <span class="op">=</span> <span class="self">self</span>;
- (<span class="ident">mnemonic</span>.<span class="ident">into_key</span>(), <span class="ident">passphrase</span>).<span class="ident">into_descriptor_key</span>(<span class="ident">source</span>, <span class="ident">derivation_path</span>)
+ source: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>(mnemonic, passphrase) = <span class="self">self</span>;
+ (mnemonic.into_key(), passphrase).into_descriptor_key(source, derivation_path)
}
}
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)))]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Mnemonic</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- (<span class="self">self</span>, <span class="prelude-val">None</span>).<span class="ident">into_extended_key</span>()
+<span class="attr">#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"keys-bip39"</span>)))]
+</span><span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>Mnemonic {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ (<span class="self">self</span>, <span class="prelude-val">None</span>).into_extended_key()
}
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">source</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor_key</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">into_extended_key</span>()<span class="question-mark">?</span>
- .<span class="ident">into_descriptor_key</span>(<span class="ident">source</span>, <span class="ident">derivation_path</span>)<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>(<span class="ident">set_valid_on_any_network</span>(<span class="ident">descriptor_key</span>))
+ source: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>descriptor_key = <span class="self">self
+ </span>.into_extended_key()<span class="question-mark">?
+ </span>.into_descriptor_key(source, derivation_path)<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>(set_valid_on_any_network(descriptor_key))
}
}
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)))]</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Mnemonic</span> {
- <span class="kw">type</span> <span class="ident">Entropy</span> <span class="op">=</span> [<span class="ident">u8</span>; <span class="number">32</span>];
+<span class="attr">#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"keys-bip39"</span>)))]
+</span><span class="kw">impl</span><Ctx: ScriptContext> GeneratableKey<Ctx> <span class="kw">for </span>Mnemonic {
+ <span class="kw">type </span>Entropy = [u8; <span class="number">32</span>];
- <span class="kw">type</span> <span class="ident">Options</span> <span class="op">=</span> (<span class="ident">WordCount</span>, <span class="ident">Language</span>);
- <span class="kw">type</span> <span class="ident">Error</span> <span class="op">=</span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip39::Error</span><span class="op">></span>;
+ <span class="kw">type </span>Options = (WordCount, Language);
+ <span class="kw">type </span>Error = <span class="prelude-ty">Option</span><bip39::Error>;
- <span class="kw">fn</span> <span class="ident">generate_with_entropy</span>(
- (<span class="ident">word_count</span>, <span class="ident">language</span>): <span class="ident"><span class="self">Self</span>::Options</span>,
- <span class="ident">entropy</span>: <span class="ident"><span class="self">Self</span>::Entropy</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">entropy</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">entropy</span>.<span class="ident">as_ref</span>()[..(<span class="ident">word_count</span> <span class="kw">as</span> <span class="ident">usize</span> <span class="op">/</span> <span class="number">8</span>)];
- <span class="kw">let</span> <span class="ident">mnemonic</span> <span class="op">=</span> <span class="ident">Mnemonic::from_entropy_in</span>(<span class="ident">language</span>, <span class="ident">entropy</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>generate_with_entropy(
+ (word_count, language): <span class="self">Self</span>::Options,
+ entropy: <span class="self">Self</span>::Entropy,
+ ) -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error> {
+ <span class="kw">let </span>entropy = <span class="kw-2">&</span>entropy.as_ref()[..(word_count <span class="kw">as </span>usize / <span class="number">8</span>)];
+ <span class="kw">let </span>mnemonic = Mnemonic::from_entropy_in(language, entropy)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">GeneratedKey::new</span>(<span class="ident">mnemonic</span>, <span class="ident">any_network</span>()))
+ <span class="prelude-val">Ok</span>(GeneratedKey::new(mnemonic, any_network()))
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
+ <span class="kw">use </span>bitcoin::util::bip32;
- <span class="kw">use</span> <span class="ident">bip39</span>::{<span class="ident">Language</span>, <span class="ident">Mnemonic</span>};
+ <span class="kw">use </span>bip39::{Language, Mnemonic};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">any_network</span>, <span class="ident">GeneratableKey</span>, <span class="ident">GeneratedKey</span>};
+ <span class="kw">use </span><span class="kw">crate</span>::keys::{any_network, GeneratableKey, GeneratedKey};
- <span class="kw">use</span> <span class="ident"><span class="kw">super</span>::WordCount</span>;
+ <span class="kw">use </span><span class="kw">super</span>::WordCount;
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_bip39_mnemonic</span>() {
- <span class="kw">let</span> <span class="ident">mnemonic</span> <span class="op">=</span>
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_keys_bip39_mnemonic() {
+ <span class="kw">let </span>mnemonic =
<span class="string">"aim bunker wash balance finish force paper analyst cabin spoon stable organ"</span>;
- <span class="kw">let</span> <span class="ident">mnemonic</span> <span class="op">=</span> <span class="ident">Mnemonic::parse_in</span>(<span class="ident">Language::English</span>, <span class="ident">mnemonic</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/0"</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> (<span class="ident">mnemonic</span>, <span class="ident">path</span>);
- <span class="kw">let</span> (<span class="ident">desc</span>, <span class="ident">keys</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">crate::descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">key</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">desc</span>.<span class="ident">to_string</span>(), <span class="string">"wpkh([be83839f/44'/0'/0']xpub6DCQ1YcqvZtSwGWMrwHELPehjWV3f2MGZ69yBADTxFEUAoLwb5Mp5GniQK6tTp3AgbngVz9zEFbBJUPVnkG7LFYt8QMTfbrNqs6FNEwAPKA/0/*)#0r8v4nkv"</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">keys</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">networks</span>.<span class="ident">len</span>(), <span class="number">4</span>);
+ <span class="kw">let </span>mnemonic = Mnemonic::parse_in(Language::English, mnemonic).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/44'/0'/0'/0"</span>).unwrap();
+
+ <span class="kw">let </span>key = (mnemonic, path);
+ <span class="kw">let </span>(desc, keys, networks) = <span class="macro">crate::descriptor!</span>(wpkh(key)).unwrap();
+ <span class="macro">assert_eq!</span>(desc.to_string(), <span class="string">"wpkh([be83839f/44'/0'/0']xpub6DCQ1YcqvZtSwGWMrwHELPehjWV3f2MGZ69yBADTxFEUAoLwb5Mp5GniQK6tTp3AgbngVz9zEFbBJUPVnkG7LFYt8QMTfbrNqs6FNEwAPKA/0/*)#0r8v4nkv"</span>);
+ <span class="macro">assert_eq!</span>(keys.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(networks.len(), <span class="number">4</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_bip39_mnemonic_passphrase</span>() {
- <span class="kw">let</span> <span class="ident">mnemonic</span> <span class="op">=</span>
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_keys_bip39_mnemonic_passphrase() {
+ <span class="kw">let </span>mnemonic =
<span class="string">"aim bunker wash balance finish force paper analyst cabin spoon stable organ"</span>;
- <span class="kw">let</span> <span class="ident">mnemonic</span> <span class="op">=</span> <span class="ident">Mnemonic::parse_in</span>(<span class="ident">Language::English</span>, <span class="ident">mnemonic</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/0"</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> ((<span class="ident">mnemonic</span>, <span class="prelude-val">Some</span>(<span class="string">"passphrase"</span>.<span class="ident">into</span>())), <span class="ident">path</span>);
- <span class="kw">let</span> (<span class="ident">desc</span>, <span class="ident">keys</span>, <span class="ident">networks</span>) <span class="op">=</span> <span class="macro">crate::descriptor!</span>(<span class="ident">wpkh</span>(<span class="ident">key</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">desc</span>.<span class="ident">to_string</span>(), <span class="string">"wpkh([8f6cb80c/44'/0'/0']xpub6DWYS8bbihFevy29M4cbw4ZR3P5E12jB8R88gBDWCTCNpYiDHhYWNywrCF9VZQYagzPmsZpxXpytzSoxynyeFr4ZyzheVjnpLKuse4fiwZw/0/*)#h0j0tg5m"</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">keys</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">networks</span>.<span class="ident">len</span>(), <span class="number">4</span>);
+ <span class="kw">let </span>mnemonic = Mnemonic::parse_in(Language::English, mnemonic).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/44'/0'/0'/0"</span>).unwrap();
+
+ <span class="kw">let </span>key = ((mnemonic, <span class="prelude-val">Some</span>(<span class="string">"passphrase"</span>.into())), path);
+ <span class="kw">let </span>(desc, keys, networks) = <span class="macro">crate::descriptor!</span>(wpkh(key)).unwrap();
+ <span class="macro">assert_eq!</span>(desc.to_string(), <span class="string">"wpkh([8f6cb80c/44'/0'/0']xpub6DWYS8bbihFevy29M4cbw4ZR3P5E12jB8R88gBDWCTCNpYiDHhYWNywrCF9VZQYagzPmsZpxXpytzSoxynyeFr4ZyzheVjnpLKuse4fiwZw/0/*)#h0j0tg5m"</span>);
+ <span class="macro">assert_eq!</span>(keys.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(networks.len(), <span class="number">4</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_generate_bip39</span>() {
- <span class="kw">let</span> <span class="ident">generated_mnemonic</span>: <span class="ident">GeneratedKey</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">Mnemonic::generate_with_entropy</span>(
- (<span class="ident">WordCount::Words12</span>, <span class="ident">Language::English</span>),
- <span class="ident"><span class="kw">crate</span>::keys::test::TEST_ENTROPY</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_keys_generate_bip39() {
+ <span class="kw">let </span>generated_mnemonic: GeneratedKey<<span class="kw">_</span>, miniscript::Segwitv0> =
+ Mnemonic::generate_with_entropy(
+ (WordCount::Words12, Language::English),
+ <span class="kw">crate</span>::keys::test::TEST_ENTROPY,
)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">generated_mnemonic</span>.<span class="ident">valid_networks</span>, <span class="ident">any_network</span>());
+ .unwrap();
+ <span class="macro">assert_eq!</span>(generated_mnemonic.valid_networks, any_network());
<span class="macro">assert_eq!</span>(
- <span class="ident">generated_mnemonic</span>.<span class="ident">to_string</span>(),
- <span class="string">"primary fetch primary fetch primary fetch primary fetch primary fetch primary fever"</span>
- );
-
- <span class="kw">let</span> <span class="ident">generated_mnemonic</span>: <span class="ident">GeneratedKey</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">Mnemonic::generate_with_entropy</span>(
- (<span class="ident">WordCount::Words24</span>, <span class="ident">Language::English</span>),
- <span class="ident"><span class="kw">crate</span>::keys::test::TEST_ENTROPY</span>,
+ generated_mnemonic.to_string(),
+ <span class="string">"primary fetch primary fetch primary fetch primary fetch primary fetch primary fever"
+ </span>);
+
+ <span class="kw">let </span>generated_mnemonic: GeneratedKey<<span class="kw">_</span>, miniscript::Segwitv0> =
+ Mnemonic::generate_with_entropy(
+ (WordCount::Words24, Language::English),
+ <span class="kw">crate</span>::keys::test::TEST_ENTROPY,
)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">generated_mnemonic</span>.<span class="ident">valid_networks</span>, <span class="ident">any_network</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">generated_mnemonic</span>.<span class="ident">to_string</span>(), <span class="string">"primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary foster"</span>);
+ .unwrap();
+ <span class="macro">assert_eq!</span>(generated_mnemonic.valid_networks, any_network());
+ <span class="macro">assert_eq!</span>(generated_mnemonic.to_string(), <span class="string">"primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary foster"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_generate_bip39_random</span>() {
- <span class="kw">let</span> <span class="ident">generated_mnemonic</span>: <span class="ident">GeneratedKey</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">Mnemonic::generate</span>((<span class="ident">WordCount::Words12</span>, <span class="ident">Language::English</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">generated_mnemonic</span>.<span class="ident">valid_networks</span>, <span class="ident">any_network</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_keys_generate_bip39_random() {
+ <span class="kw">let </span>generated_mnemonic: GeneratedKey<<span class="kw">_</span>, miniscript::Segwitv0> =
+ Mnemonic::generate((WordCount::Words12, Language::English)).unwrap();
+ <span class="macro">assert_eq!</span>(generated_mnemonic.valid_networks, any_network());
- <span class="kw">let</span> <span class="ident">generated_mnemonic</span>: <span class="ident">GeneratedKey</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">Mnemonic::generate</span>((<span class="ident">WordCount::Words24</span>, <span class="ident">Language::English</span>)).<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">generated_mnemonic</span>.<span class="ident">valid_networks</span>, <span class="ident">any_network</span>());
+ <span class="kw">let </span>generated_mnemonic: GeneratedKey<<span class="kw">_</span>, miniscript::Segwitv0> =
+ Mnemonic::generate((WordCount::Words24, Language::English)).unwrap();
+ <span class="macro">assert_eq!</span>(generated_mnemonic.valid_networks, any_network());
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/keys/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-<span id="658">658</span>
-<span id="659">659</span>
-<span id="660">660</span>
-<span id="661">661</span>
-<span id="662">662</span>
-<span id="663">663</span>
-<span id="664">664</span>
-<span id="665">665</span>
-<span id="666">666</span>
-<span id="667">667</span>
-<span id="668">668</span>
-<span id="669">669</span>
-<span id="670">670</span>
-<span id="671">671</span>
-<span id="672">672</span>
-<span id="673">673</span>
-<span id="674">674</span>
-<span id="675">675</span>
-<span id="676">676</span>
-<span id="677">677</span>
-<span id="678">678</span>
-<span id="679">679</span>
-<span id="680">680</span>
-<span id="681">681</span>
-<span id="682">682</span>
-<span id="683">683</span>
-<span id="684">684</span>
-<span id="685">685</span>
-<span id="686">686</span>
-<span id="687">687</span>
-<span id="688">688</span>
-<span id="689">689</span>
-<span id="690">690</span>
-<span id="691">691</span>
-<span id="692">692</span>
-<span id="693">693</span>
-<span id="694">694</span>
-<span id="695">695</span>
-<span id="696">696</span>
-<span id="697">697</span>
-<span id="698">698</span>
-<span id="699">699</span>
-<span id="700">700</span>
-<span id="701">701</span>
-<span id="702">702</span>
-<span id="703">703</span>
-<span id="704">704</span>
-<span id="705">705</span>
-<span id="706">706</span>
-<span id="707">707</span>
-<span id="708">708</span>
-<span id="709">709</span>
-<span id="710">710</span>
-<span id="711">711</span>
-<span id="712">712</span>
-<span id="713">713</span>
-<span id="714">714</span>
-<span id="715">715</span>
-<span id="716">716</span>
-<span id="717">717</span>
-<span id="718">718</span>
-<span id="719">719</span>
-<span id="720">720</span>
-<span id="721">721</span>
-<span id="722">722</span>
-<span id="723">723</span>
-<span id="724">724</span>
-<span id="725">725</span>
-<span id="726">726</span>
-<span id="727">727</span>
-<span id="728">728</span>
-<span id="729">729</span>
-<span id="730">730</span>
-<span id="731">731</span>
-<span id="732">732</span>
-<span id="733">733</span>
-<span id="734">734</span>
-<span id="735">735</span>
-<span id="736">736</span>
-<span id="737">737</span>
-<span id="738">738</span>
-<span id="739">739</span>
-<span id="740">740</span>
-<span id="741">741</span>
-<span id="742">742</span>
-<span id="743">743</span>
-<span id="744">744</span>
-<span id="745">745</span>
-<span id="746">746</span>
-<span id="747">747</span>
-<span id="748">748</span>
-<span id="749">749</span>
-<span id="750">750</span>
-<span id="751">751</span>
-<span id="752">752</span>
-<span id="753">753</span>
-<span id="754">754</span>
-<span id="755">755</span>
-<span id="756">756</span>
-<span id="757">757</span>
-<span id="758">758</span>
-<span id="759">759</span>
-<span id="760">760</span>
-<span id="761">761</span>
-<span id="762">762</span>
-<span id="763">763</span>
-<span id="764">764</span>
-<span id="765">765</span>
-<span id="766">766</span>
-<span id="767">767</span>
-<span id="768">768</span>
-<span id="769">769</span>
-<span id="770">770</span>
-<span id="771">771</span>
-<span id="772">772</span>
-<span id="773">773</span>
-<span id="774">774</span>
-<span id="775">775</span>
-<span id="776">776</span>
-<span id="777">777</span>
-<span id="778">778</span>
-<span id="779">779</span>
-<span id="780">780</span>
-<span id="781">781</span>
-<span id="782">782</span>
-<span id="783">783</span>
-<span id="784">784</span>
-<span id="785">785</span>
-<span id="786">786</span>
-<span id="787">787</span>
-<span id="788">788</span>
-<span id="789">789</span>
-<span id="790">790</span>
-<span id="791">791</span>
-<span id="792">792</span>
-<span id="793">793</span>
-<span id="794">794</span>
-<span id="795">795</span>
-<span id="796">796</span>
-<span id="797">797</span>
-<span id="798">798</span>
-<span id="799">799</span>
-<span id="800">800</span>
-<span id="801">801</span>
-<span id="802">802</span>
-<span id="803">803</span>
-<span id="804">804</span>
-<span id="805">805</span>
-<span id="806">806</span>
-<span id="807">807</span>
-<span id="808">808</span>
-<span id="809">809</span>
-<span id="810">810</span>
-<span id="811">811</span>
-<span id="812">812</span>
-<span id="813">813</span>
-<span id="814">814</span>
-<span id="815">815</span>
-<span id="816">816</span>
-<span id="817">817</span>
-<span id="818">818</span>
-<span id="819">819</span>
-<span id="820">820</span>
-<span id="821">821</span>
-<span id="822">822</span>
-<span id="823">823</span>
-<span id="824">824</span>
-<span id="825">825</span>
-<span id="826">826</span>
-<span id="827">827</span>
-<span id="828">828</span>
-<span id="829">829</span>
-<span id="830">830</span>
-<span id="831">831</span>
-<span id="832">832</span>
-<span id="833">833</span>
-<span id="834">834</span>
-<span id="835">835</span>
-<span id="836">836</span>
-<span id="837">837</span>
-<span id="838">838</span>
-<span id="839">839</span>
-<span id="840">840</span>
-<span id="841">841</span>
-<span id="842">842</span>
-<span id="843">843</span>
-<span id="844">844</span>
-<span id="845">845</span>
-<span id="846">846</span>
-<span id="847">847</span>
-<span id="848">848</span>
-<span id="849">849</span>
-<span id="850">850</span>
-<span id="851">851</span>
-<span id="852">852</span>
-<span id="853">853</span>
-<span id="854">854</span>
-<span id="855">855</span>
-<span id="856">856</span>
-<span id="857">857</span>
-<span id="858">858</span>
-<span id="859">859</span>
-<span id="860">860</span>
-<span id="861">861</span>
-<span id="862">862</span>
-<span id="863">863</span>
-<span id="864">864</span>
-<span id="865">865</span>
-<span id="866">866</span>
-<span id="867">867</span>
-<span id="868">868</span>
-<span id="869">869</span>
-<span id="870">870</span>
-<span id="871">871</span>
-<span id="872">872</span>
-<span id="873">873</span>
-<span id="874">874</span>
-<span id="875">875</span>
-<span id="876">876</span>
-<span id="877">877</span>
-<span id="878">878</span>
-<span id="879">879</span>
-<span id="880">880</span>
-<span id="881">881</span>
-<span id="882">882</span>
-<span id="883">883</span>
-<span id="884">884</span>
-<span id="885">885</span>
-<span id="886">886</span>
-<span id="887">887</span>
-<span id="888">888</span>
-<span id="889">889</span>
-<span id="890">890</span>
-<span id="891">891</span>
-<span id="892">892</span>
-<span id="893">893</span>
-<span id="894">894</span>
-<span id="895">895</span>
-<span id="896">896</span>
-<span id="897">897</span>
-<span id="898">898</span>
-<span id="899">899</span>
-<span id="900">900</span>
-<span id="901">901</span>
-<span id="902">902</span>
-<span id="903">903</span>
-<span id="904">904</span>
-<span id="905">905</span>
-<span id="906">906</span>
-<span id="907">907</span>
-<span id="908">908</span>
-<span id="909">909</span>
-<span id="910">910</span>
-<span id="911">911</span>
-<span id="912">912</span>
-<span id="913">913</span>
-<span id="914">914</span>
-<span id="915">915</span>
-<span id="916">916</span>
-<span id="917">917</span>
-<span id="918">918</span>
-<span id="919">919</span>
-<span id="920">920</span>
-<span id="921">921</span>
-<span id="922">922</span>
-<span id="923">923</span>
-<span id="924">924</span>
-<span id="925">925</span>
-<span id="926">926</span>
-<span id="927">927</span>
-<span id="928">928</span>
-<span id="929">929</span>
-<span id="930">930</span>
-<span id="931">931</span>
-<span id="932">932</span>
-<span id="933">933</span>
-<span id="934">934</span>
-<span id="935">935</span>
-<span id="936">936</span>
-<span id="937">937</span>
-<span id="938">938</span>
-<span id="939">939</span>
-<span id="940">940</span>
-<span id="941">941</span>
-<span id="942">942</span>
-<span id="943">943</span>
-<span id="944">944</span>
-<span id="945">945</span>
-<span id="946">946</span>
-<span id="947">947</span>
-<span id="948">948</span>
-<span id="949">949</span>
-<span id="950">950</span>
-<span id="951">951</span>
-<span id="952">952</span>
-<span id="953">953</span>
-<span id="954">954</span>
-<span id="955">955</span>
-<span id="956">956</span>
-<span id="957">957</span>
-<span id="958">958</span>
-<span id="959">959</span>
-<span id="960">960</span>
-<span id="961">961</span>
-<span id="962">962</span>
-<span id="963">963</span>
-<span id="964">964</span>
-<span id="965">965</span>
-<span id="966">966</span>
-<span id="967">967</span>
-<span id="968">968</span>
-<span id="969">969</span>
-<span id="970">970</span>
-<span id="971">971</span>
-<span id="972">972</span>
-<span id="973">973</span>
-<span id="974">974</span>
-<span id="975">975</span>
-<span id="976">976</span>
-<span id="977">977</span>
-<span id="978">978</span>
-<span id="979">979</span>
-<span id="980">980</span>
-<span id="981">981</span>
-<span id="982">982</span>
-<span id="983">983</span>
-<span id="984">984</span>
-<span id="985">985</span>
-<span id="986">986</span>
-<span id="987">987</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Key formats</span>
-
-<span class="kw">use</span> <span class="ident">std::any::TypeId</span>;
-<span class="kw">use</span> <span class="ident">std::collections::HashSet</span>;
-<span class="kw">use</span> <span class="ident">std::marker::PhantomData</span>;
-<span class="kw">use</span> <span class="ident">std::ops::Deref</span>;
-<span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::secp256k1</span>::{<span class="self">self</span>, <span class="ident">Secp256k1</span>, <span class="ident">Signing</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Network</span>, <span class="ident">PrivateKey</span>, <span class="ident">PublicKey</span>, <span class="ident">XOnlyPublicKey</span>};
-
-<span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorXKey</span>, <span class="ident">Wildcard</span>};
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{
- <span class="ident">DescriptorPublicKey</span>, <span class="ident">DescriptorSecretKey</span>, <span class="ident">KeyMap</span>, <span class="ident">SinglePriv</span>, <span class="ident">SinglePub</span>, <span class="ident">SinglePubKey</span>,
- <span class="ident">SortedMultiVec</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/keys/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Key formats
+
+</span><span class="kw">use </span>std::any::TypeId;
+<span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::marker::PhantomData;
+<span class="kw">use </span>std::ops::Deref;
+<span class="kw">use </span>std::str::FromStr;
+
+<span class="kw">use </span>bitcoin::secp256k1::{<span class="self">self</span>, Secp256k1, Signing};
+
+<span class="kw">use </span>bitcoin::util::bip32;
+<span class="kw">use </span>bitcoin::{Network, PrivateKey, PublicKey, XOnlyPublicKey};
+
+<span class="kw">use </span>miniscript::descriptor::{Descriptor, DescriptorXKey, Wildcard};
+<span class="kw">pub use </span>miniscript::descriptor::{
+ DescriptorPublicKey, DescriptorSecretKey, KeyMap, SinglePriv, SinglePub, SinglePubKey,
+ SortedMultiVec,
};
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">miniscript::ScriptContext</span>;
-<span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">Miniscript</span>, <span class="ident">Terminal</span>};
+<span class="kw">pub use </span>miniscript::ScriptContext;
+<span class="kw">use </span>miniscript::{Miniscript, Terminal};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>::{<span class="ident">CheckMiniscript</span>, <span class="ident">DescriptorError</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::utils::SecpCtx</span>;
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::{CheckMiniscript, DescriptorError};
+<span class="kw">use </span><span class="kw">crate</span>::wallet::utils::SecpCtx;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">bip39</span>;
+<span class="attr">#[cfg(feature = <span class="string">"keys-bip39"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"keys-bip39"</span>)))]
+</span><span class="kw">pub mod </span>bip39;
-<span class="doccomment">/// Set of valid networks for a key</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">ValidNetworks</span> <span class="op">=</span> <span class="ident">HashSet</span><span class="op"><</span><span class="ident">Network</span><span class="op">></span>;
+<span class="doccomment">/// Set of valid networks for a key
+</span><span class="kw">pub type </span>ValidNetworks = HashSet<Network>;
-<span class="doccomment">/// Create a set containing mainnet, testnet and regtest</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">any_network</span>() -> <span class="ident">ValidNetworks</span> {
+<span class="doccomment">/// Create a set containing mainnet, testnet and regtest
+</span><span class="kw">pub fn </span>any_network() -> ValidNetworks {
<span class="macro">vec!</span>[
- <span class="ident">Network::Bitcoin</span>,
- <span class="ident">Network::Testnet</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">Network::Signet</span>,
+ Network::Bitcoin,
+ Network::Testnet,
+ Network::Regtest,
+ Network::Signet,
]
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>()
+ .into_iter()
+ .collect()
}
-<span class="doccomment">/// Create a set only containing mainnet</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">mainnet_network</span>() -> <span class="ident">ValidNetworks</span> {
- <span class="macro">vec!</span>[<span class="ident">Network::Bitcoin</span>].<span class="ident">into_iter</span>().<span class="ident">collect</span>()
+<span class="doccomment">/// Create a set only containing mainnet
+</span><span class="kw">pub fn </span>mainnet_network() -> ValidNetworks {
+ <span class="macro">vec!</span>[Network::Bitcoin].into_iter().collect()
}
-<span class="doccomment">/// Create a set containing testnet and regtest</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_networks</span>() -> <span class="ident">ValidNetworks</span> {
- <span class="macro">vec!</span>[<span class="ident">Network::Testnet</span>, <span class="ident">Network::Regtest</span>, <span class="ident">Network::Signet</span>]
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>()
+<span class="doccomment">/// Create a set containing testnet and regtest
+</span><span class="kw">pub fn </span>test_networks() -> ValidNetworks {
+ <span class="macro">vec!</span>[Network::Testnet, Network::Regtest, Network::Signet]
+ .into_iter()
+ .collect()
}
-<span class="doccomment">/// Compute the intersection of two sets</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">merge_networks</span>(<span class="ident">a</span>: <span class="kw-2">&</span><span class="ident">ValidNetworks</span>, <span class="ident">b</span>: <span class="kw-2">&</span><span class="ident">ValidNetworks</span>) -> <span class="ident">ValidNetworks</span> {
- <span class="ident">a</span>.<span class="ident">intersection</span>(<span class="ident">b</span>).<span class="ident">cloned</span>().<span class="ident">collect</span>()
+<span class="doccomment">/// Compute the intersection of two sets
+</span><span class="kw">pub fn </span>merge_networks(a: <span class="kw-2">&</span>ValidNetworks, b: <span class="kw-2">&</span>ValidNetworks) -> ValidNetworks {
+ a.intersection(b).cloned().collect()
}
-<span class="doccomment">/// Container for public or secret keys</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> {
- <span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
- <span class="ident">Public</span>(<span class="ident">DescriptorPublicKey</span>, <span class="ident">ValidNetworks</span>, <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>),
- <span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
- <span class="ident">Secret</span>(<span class="ident">DescriptorSecretKey</span>, <span class="ident">ValidNetworks</span>, <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>),
+<span class="doccomment">/// Container for public or secret keys
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>DescriptorKey<Ctx: ScriptContext> {
+ <span class="attr">#[doc(hidden)]
+ </span>Public(DescriptorPublicKey, ValidNetworks, PhantomData<Ctx>),
+ <span class="attr">#[doc(hidden)]
+ </span>Secret(DescriptorSecretKey, ValidNetworks, PhantomData<Ctx>),
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="doccomment">/// Create an instance given a public key and a set of valid networks</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_public</span>(<span class="ident">public</span>: <span class="ident">DescriptorPublicKey</span>, <span class="ident">networks</span>: <span class="ident">ValidNetworks</span>) -> <span class="self">Self</span> {
- <span class="ident">DescriptorKey::Public</span>(<span class="ident">public</span>, <span class="ident">networks</span>, <span class="ident">PhantomData</span>)
+<span class="kw">impl</span><Ctx: ScriptContext> DescriptorKey<Ctx> {
+ <span class="doccomment">/// Create an instance given a public key and a set of valid networks
+ </span><span class="kw">pub fn </span>from_public(public: DescriptorPublicKey, networks: ValidNetworks) -> <span class="self">Self </span>{
+ DescriptorKey::Public(public, networks, PhantomData)
}
- <span class="doccomment">/// Create an instance given a secret key and a set of valid networks</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_secret</span>(<span class="ident">secret</span>: <span class="ident">DescriptorSecretKey</span>, <span class="ident">networks</span>: <span class="ident">ValidNetworks</span>) -> <span class="self">Self</span> {
- <span class="ident">DescriptorKey::Secret</span>(<span class="ident">secret</span>, <span class="ident">networks</span>, <span class="ident">PhantomData</span>)
+ <span class="doccomment">/// Create an instance given a secret key and a set of valid networks
+ </span><span class="kw">pub fn </span>from_secret(secret: DescriptorSecretKey, networks: ValidNetworks) -> <span class="self">Self </span>{
+ DescriptorKey::Secret(secret, networks, PhantomData)
}
- <span class="doccomment">/// Override the computed set of valid networks</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">override_valid_networks</span>(<span class="self">self</span>, <span class="ident">networks</span>: <span class="ident">ValidNetworks</span>) -> <span class="self">Self</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">DescriptorKey::Public</span>(<span class="ident">key</span>, <span class="kw">_</span>, <span class="kw">_</span>) => <span class="ident">DescriptorKey::Public</span>(<span class="ident">key</span>, <span class="ident">networks</span>, <span class="ident">PhantomData</span>),
- <span class="ident">DescriptorKey::Secret</span>(<span class="ident">key</span>, <span class="kw">_</span>, <span class="kw">_</span>) => <span class="ident">DescriptorKey::Secret</span>(<span class="ident">key</span>, <span class="ident">networks</span>, <span class="ident">PhantomData</span>),
+ <span class="doccomment">/// Override the computed set of valid networks
+ </span><span class="kw">pub fn </span>override_valid_networks(<span class="self">self</span>, networks: ValidNetworks) -> <span class="self">Self </span>{
+ <span class="kw">match </span><span class="self">self </span>{
+ DescriptorKey::Public(key, <span class="kw">_</span>, <span class="kw">_</span>) => DescriptorKey::Public(key, networks, PhantomData),
+ DescriptorKey::Secret(key, <span class="kw">_</span>, <span class="kw">_</span>) => DescriptorKey::Secret(key, networks, PhantomData),
}
}
- <span class="comment">// This method is used internally by `bdk::fragment!` and `bdk::descriptor!`. It has to be</span>
- <span class="comment">// public because it is effectively called by external crates, once the macros are expanded,</span>
- <span class="comment">// but since it is not meant to be part of the public api we hide it from the docs.</span>
- <span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">extract</span>(
+ <span class="comment">// This method is used internally by `bdk::fragment!` and `bdk::descriptor!`. It has to be
+ // public because it is effectively called by external crates, once the macros are expanded,
+ // but since it is not meant to be part of the public api we hide it from the docs.
+ </span><span class="attr">#[doc(hidden)]
+ </span><span class="kw">pub fn </span>extract(
<span class="self">self</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">DescriptorPublicKey</span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">DescriptorKey::Public</span>(<span class="ident">public</span>, <span class="ident">valid_networks</span>, <span class="kw">_</span>) => {
- <span class="prelude-val">Ok</span>((<span class="ident">public</span>, <span class="ident">KeyMap::default</span>(), <span class="ident">valid_networks</span>))
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(DescriptorPublicKey, KeyMap, ValidNetworks), KeyError> {
+ <span class="kw">match </span><span class="self">self </span>{
+ DescriptorKey::Public(public, valid_networks, <span class="kw">_</span>) => {
+ <span class="prelude-val">Ok</span>((public, KeyMap::default(), valid_networks))
}
- <span class="ident">DescriptorKey::Secret</span>(<span class="ident">secret</span>, <span class="ident">valid_networks</span>, <span class="kw">_</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key_map</span> <span class="op">=</span> <span class="ident">KeyMap::with_capacity</span>(<span class="number">1</span>);
+ DescriptorKey::Secret(secret, valid_networks, <span class="kw">_</span>) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>key_map = KeyMap::with_capacity(<span class="number">1</span>);
- <span class="kw">let</span> <span class="ident">public</span> <span class="op">=</span> <span class="ident">secret</span>
- .<span class="ident">to_public</span>(<span class="ident">secp</span>)
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="ident">e</span><span class="op">|</span> <span class="ident">miniscript::Error::Unexpected</span>(<span class="ident">e</span>.<span class="ident">to_string</span>()))<span class="question-mark">?</span>;
- <span class="ident">key_map</span>.<span class="ident">insert</span>(<span class="ident">public</span>.<span class="ident">clone</span>(), <span class="ident">secret</span>);
+ <span class="kw">let </span>public = secret
+ .to_public(secp)
+ .map_err(|e| miniscript::Error::Unexpected(e.to_string()))<span class="question-mark">?</span>;
+ key_map.insert(public.clone(), secret);
- <span class="prelude-val">Ok</span>((<span class="ident">public</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+ <span class="prelude-val">Ok</span>((public, key_map, valid_networks))
}
}
}
}
-<span class="doccomment">/// Enum representation of the known valid [`ScriptContext`]s</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Eq</span>, <span class="ident">PartialEq</span>, <span class="ident">Copy</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">ScriptContextEnum</span> {
- <span class="doccomment">/// Legacy scripts</span>
- <span class="ident">Legacy</span>,
- <span class="doccomment">/// Segwitv0 scripts</span>
- <span class="ident">Segwitv0</span>,
- <span class="doccomment">/// Taproot scripts</span>
- <span class="ident">Tap</span>,
+<span class="doccomment">/// Enum representation of the known valid [`ScriptContext`]s
+</span><span class="attr">#[derive(Debug, Eq, PartialEq, Copy, Clone)]
+</span><span class="kw">pub enum </span>ScriptContextEnum {
+ <span class="doccomment">/// Legacy scripts
+ </span>Legacy,
+ <span class="doccomment">/// Segwitv0 scripts
+ </span>Segwitv0,
+ <span class="doccomment">/// Taproot scripts
+ </span>Tap,
}
-<span class="kw">impl</span> <span class="ident">ScriptContextEnum</span> {
- <span class="doccomment">/// Returns whether the script context is [`ScriptContextEnum::Legacy`]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_legacy</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">ScriptContextEnum::Legacy</span>
+<span class="kw">impl </span>ScriptContextEnum {
+ <span class="doccomment">/// Returns whether the script context is [`ScriptContextEnum::Legacy`]
+ </span><span class="kw">pub fn </span>is_legacy(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="self">self </span>== <span class="kw-2">&</span>ScriptContextEnum::Legacy
}
- <span class="doccomment">/// Returns whether the script context is [`ScriptContextEnum::Segwitv0`]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_segwit_v0</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">ScriptContextEnum::Segwitv0</span>
+ <span class="doccomment">/// Returns whether the script context is [`ScriptContextEnum::Segwitv0`]
+ </span><span class="kw">pub fn </span>is_segwit_v0(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="self">self </span>== <span class="kw-2">&</span>ScriptContextEnum::Segwitv0
}
- <span class="doccomment">/// Returns whether the script context is [`ScriptContextEnum::Tap`]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_taproot</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span> <span class="op">==</span> <span class="kw-2">&</span><span class="ident">ScriptContextEnum::Tap</span>
+ <span class="doccomment">/// Returns whether the script context is [`ScriptContextEnum::Tap`]
+ </span><span class="kw">pub fn </span>is_taproot(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="self">self </span>== <span class="kw-2">&</span>ScriptContextEnum::Tap
}
}
-<span class="doccomment">/// Trait that adds extra useful methods to [`ScriptContext`]s</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">ExtScriptContext</span>: <span class="ident">ScriptContext</span> {
- <span class="doccomment">/// Returns the [`ScriptContext`] as a [`ScriptContextEnum`]</span>
- <span class="kw">fn</span> <span class="ident">as_enum</span>() -> <span class="ident">ScriptContextEnum</span>;
+<span class="doccomment">/// Trait that adds extra useful methods to [`ScriptContext`]s
+</span><span class="kw">pub trait </span>ExtScriptContext: ScriptContext {
+ <span class="doccomment">/// Returns the [`ScriptContext`] as a [`ScriptContextEnum`]
+ </span><span class="kw">fn </span>as_enum() -> ScriptContextEnum;
- <span class="doccomment">/// Returns whether the script context is [`Legacy`](miniscript::Legacy)</span>
- <span class="kw">fn</span> <span class="ident">is_legacy</span>() -> <span class="ident">bool</span> {
- <span class="ident"><span class="self">Self</span>::as_enum</span>().<span class="ident">is_legacy</span>()
+ <span class="doccomment">/// Returns whether the script context is [`Legacy`](miniscript::Legacy)
+ </span><span class="kw">fn </span>is_legacy() -> bool {
+ <span class="self">Self</span>::as_enum().is_legacy()
}
- <span class="doccomment">/// Returns whether the script context is [`Segwitv0`](miniscript::Segwitv0)</span>
- <span class="kw">fn</span> <span class="ident">is_segwit_v0</span>() -> <span class="ident">bool</span> {
- <span class="ident"><span class="self">Self</span>::as_enum</span>().<span class="ident">is_segwit_v0</span>()
+ <span class="doccomment">/// Returns whether the script context is [`Segwitv0`](miniscript::Segwitv0)
+ </span><span class="kw">fn </span>is_segwit_v0() -> bool {
+ <span class="self">Self</span>::as_enum().is_segwit_v0()
}
- <span class="doccomment">/// Returns whether the script context is [`Tap`](miniscript::Tap), aka Taproot or Segwit V1</span>
- <span class="kw">fn</span> <span class="ident">is_taproot</span>() -> <span class="ident">bool</span> {
- <span class="ident"><span class="self">Self</span>::as_enum</span>().<span class="ident">is_taproot</span>()
+ <span class="doccomment">/// Returns whether the script context is [`Tap`](miniscript::Tap), aka Taproot or Segwit V1
+ </span><span class="kw">fn </span>is_taproot() -> bool {
+ <span class="self">Self</span>::as_enum().is_taproot()
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">+</span> <span class="lifetime">'static</span><span class="op">></span> <span class="ident">ExtScriptContext</span> <span class="kw">for</span> <span class="ident">Ctx</span> {
- <span class="kw">fn</span> <span class="ident">as_enum</span>() -> <span class="ident">ScriptContextEnum</span> {
- <span class="kw">match</span> <span class="ident">TypeId::of</span>::<span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>() {
- <span class="ident">t</span> <span class="kw">if</span> <span class="ident">t</span> <span class="op">==</span> <span class="ident">TypeId::of</span>::<span class="op"><</span><span class="ident">miniscript::Legacy</span><span class="op">></span>() => <span class="ident">ScriptContextEnum::Legacy</span>,
- <span class="ident">t</span> <span class="kw">if</span> <span class="ident">t</span> <span class="op">==</span> <span class="ident">TypeId::of</span>::<span class="op"><</span><span class="ident">miniscript::Segwitv0</span><span class="op">></span>() => <span class="ident">ScriptContextEnum::Segwitv0</span>,
- <span class="ident">t</span> <span class="kw">if</span> <span class="ident">t</span> <span class="op">==</span> <span class="ident">TypeId::of</span>::<span class="op"><</span><span class="ident">miniscript::Tap</span><span class="op">></span>() => <span class="ident">ScriptContextEnum::Tap</span>,
- <span class="kw">_</span> => <span class="macro">unimplemented!</span>(<span class="string">"Unknown ScriptContext type"</span>),
+<span class="kw">impl</span><Ctx: ScriptContext + <span class="lifetime">'static</span>> ExtScriptContext <span class="kw">for </span>Ctx {
+ <span class="kw">fn </span>as_enum() -> ScriptContextEnum {
+ <span class="kw">match </span>TypeId::of::<Ctx>() {
+ t <span class="kw">if </span>t == TypeId::of::<miniscript::Legacy>() => ScriptContextEnum::Legacy,
+ t <span class="kw">if </span>t == TypeId::of::<miniscript::Segwitv0>() => ScriptContextEnum::Segwitv0,
+ t <span class="kw">if </span>t == TypeId::of::<miniscript::Tap>() => ScriptContextEnum::Tap,
+ <span class="kw">_ </span>=> <span class="macro">unimplemented!</span>(<span class="string">"Unknown ScriptContext type"</span>),
}
}
}
-<span class="doccomment">/// Trait for objects that can be turned into a public or secret [`DescriptorKey`]</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The generic type `Ctx` is used to define the context in which the key is valid: some key</span>
-<span class="doccomment">/// formats, like the mnemonics used by Electrum wallets, encode internally whether the wallet is</span>
-<span class="doccomment">/// legacy or segwit. Thus, trying to turn a valid legacy mnemonic into a `DescriptorKey`</span>
-<span class="doccomment">/// that would become part of a segwit descriptor should fail.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// For key types that do care about this, the [`ExtScriptContext`] trait provides some useful</span>
-<span class="doccomment">/// methods that can be used to check at runtime which `Ctx` is being used.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// For key types that can do this check statically (because they can only work within a</span>
-<span class="doccomment">/// single `Ctx`), the "specialized" trait can be implemented to make the compiler handle the type</span>
-<span class="doccomment">/// checking.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Keys also have control over the networks they support: constructing the return object with</span>
-<span class="doccomment">/// [`DescriptorKey::from_public`] or [`DescriptorKey::from_secret`] allows to specify a set of</span>
-<span class="doccomment">/// [`ValidNetworks`].</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Examples</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Key type valid in any context:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// use bdk::bitcoin::PublicKey;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// use bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError, ScriptContext};</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// pub struct MyKeyType {</span>
-<span class="doccomment">/// pubkey: PublicKey,</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for MyKeyType {</span>
-<span class="doccomment">/// fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {</span>
-<span class="doccomment">/// self.pubkey.into_descriptor_key()</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Key type that is only valid on mainnet:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// use bdk::bitcoin::PublicKey;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// use bdk::keys::{</span>
-<span class="doccomment">/// mainnet_network, DescriptorKey, DescriptorPublicKey, IntoDescriptorKey, KeyError,</span>
-<span class="doccomment">/// ScriptContext, SinglePub, SinglePubKey,</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// pub struct MyKeyType {</span>
-<span class="doccomment">/// pubkey: PublicKey,</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for MyKeyType {</span>
-<span class="doccomment">/// fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {</span>
-<span class="doccomment">/// Ok(DescriptorKey::from_public(</span>
-<span class="doccomment">/// DescriptorPublicKey::Single(SinglePub {</span>
-<span class="doccomment">/// origin: None,</span>
-<span class="doccomment">/// key: SinglePubKey::FullKey(self.pubkey),</span>
-<span class="doccomment">/// }),</span>
-<span class="doccomment">/// mainnet_network(),</span>
-<span class="doccomment">/// ))</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Key type that internally encodes in which context it's valid. The context is checked at runtime:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// use bdk::bitcoin::PublicKey;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// use bdk::keys::{DescriptorKey, ExtScriptContext, IntoDescriptorKey, KeyError, ScriptContext};</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// pub struct MyKeyType {</span>
-<span class="doccomment">/// is_legacy: bool,</span>
-<span class="doccomment">/// pubkey: PublicKey,</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl<Ctx: ScriptContext + 'static> IntoDescriptorKey<Ctx> for MyKeyType {</span>
-<span class="doccomment">/// fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {</span>
-<span class="doccomment">/// if Ctx::is_legacy() == self.is_legacy {</span>
-<span class="doccomment">/// self.pubkey.into_descriptor_key()</span>
-<span class="doccomment">/// } else {</span>
-<span class="doccomment">/// Err(KeyError::InvalidScriptContext)</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Key type that can only work within [`miniscript::Segwitv0`] context. Only the specialized version</span>
-<span class="doccomment">/// of the trait is implemented.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This example deliberately fails to compile, to demonstrate how the compiler can catch when keys</span>
-<span class="doccomment">/// are misused. In this case, the "segwit-only" key is used to build a `pkh()` descriptor, which</span>
-<span class="doccomment">/// makes the compiler (correctly) fail.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```compile_fail</span>
-<span class="doccomment">/// use bdk::bitcoin::PublicKey;</span>
-<span class="doccomment">/// use std::str::FromStr;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// use bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError};</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// pub struct MySegwitOnlyKeyType {</span>
-<span class="doccomment">/// pubkey: PublicKey,</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl IntoDescriptorKey<bdk::miniscript::Segwitv0> for MySegwitOnlyKeyType {</span>
-<span class="doccomment">/// fn into_descriptor_key(self) -> Result<DescriptorKey<bdk::miniscript::Segwitv0>, KeyError> {</span>
-<span class="doccomment">/// self.pubkey.into_descriptor_key()</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// let key = MySegwitOnlyKeyType {</span>
-<span class="doccomment">/// pubkey: PublicKey::from_str("...")?,</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">/// let (descriptor, _, _) = bdk::descriptor!(pkh(key))?;</span>
-<span class="doccomment">/// // ^^^^^ changing this to `wpkh` would make it compile</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// # Ok::<_, Box<dyn std::error::Error>>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>: <span class="ident">Sized</span> {
- <span class="doccomment">/// Turn the key into a [`DescriptorKey`] within the requested [`ScriptContext`]</span>
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span>;
+<span class="doccomment">/// Trait for objects that can be turned into a public or secret [`DescriptorKey`]
+///
+/// The generic type `Ctx` is used to define the context in which the key is valid: some key
+/// formats, like the mnemonics used by Electrum wallets, encode internally whether the wallet is
+/// legacy or segwit. Thus, trying to turn a valid legacy mnemonic into a `DescriptorKey`
+/// that would become part of a segwit descriptor should fail.
+///
+/// For key types that do care about this, the [`ExtScriptContext`] trait provides some useful
+/// methods that can be used to check at runtime which `Ctx` is being used.
+///
+/// For key types that can do this check statically (because they can only work within a
+/// single `Ctx`), the "specialized" trait can be implemented to make the compiler handle the type
+/// checking.
+///
+/// Keys also have control over the networks they support: constructing the return object with
+/// [`DescriptorKey::from_public`] or [`DescriptorKey::from_secret`] allows to specify a set of
+/// [`ValidNetworks`].
+///
+/// ## Examples
+///
+/// Key type valid in any context:
+///
+/// ```
+/// use bdk::bitcoin::PublicKey;
+///
+/// use bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError, ScriptContext};
+///
+/// pub struct MyKeyType {
+/// pubkey: PublicKey,
+/// }
+///
+/// impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for MyKeyType {
+/// fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
+/// self.pubkey.into_descriptor_key()
+/// }
+/// }
+/// ```
+///
+/// Key type that is only valid on mainnet:
+///
+/// ```
+/// use bdk::bitcoin::PublicKey;
+///
+/// use bdk::keys::{
+/// mainnet_network, DescriptorKey, DescriptorPublicKey, IntoDescriptorKey, KeyError,
+/// ScriptContext, SinglePub, SinglePubKey,
+/// };
+///
+/// pub struct MyKeyType {
+/// pubkey: PublicKey,
+/// }
+///
+/// impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for MyKeyType {
+/// fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
+/// Ok(DescriptorKey::from_public(
+/// DescriptorPublicKey::Single(SinglePub {
+/// origin: None,
+/// key: SinglePubKey::FullKey(self.pubkey),
+/// }),
+/// mainnet_network(),
+/// ))
+/// }
+/// }
+/// ```
+///
+/// Key type that internally encodes in which context it's valid. The context is checked at runtime:
+///
+/// ```
+/// use bdk::bitcoin::PublicKey;
+///
+/// use bdk::keys::{DescriptorKey, ExtScriptContext, IntoDescriptorKey, KeyError, ScriptContext};
+///
+/// pub struct MyKeyType {
+/// is_legacy: bool,
+/// pubkey: PublicKey,
+/// }
+///
+/// impl<Ctx: ScriptContext + 'static> IntoDescriptorKey<Ctx> for MyKeyType {
+/// fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
+/// if Ctx::is_legacy() == self.is_legacy {
+/// self.pubkey.into_descriptor_key()
+/// } else {
+/// Err(KeyError::InvalidScriptContext)
+/// }
+/// }
+/// }
+/// ```
+///
+/// Key type that can only work within [`miniscript::Segwitv0`] context. Only the specialized version
+/// of the trait is implemented.
+///
+/// This example deliberately fails to compile, to demonstrate how the compiler can catch when keys
+/// are misused. In this case, the "segwit-only" key is used to build a `pkh()` descriptor, which
+/// makes the compiler (correctly) fail.
+///
+/// ```compile_fail
+/// use bdk::bitcoin::PublicKey;
+/// use std::str::FromStr;
+///
+/// use bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError};
+///
+/// pub struct MySegwitOnlyKeyType {
+/// pubkey: PublicKey,
+/// }
+///
+/// impl IntoDescriptorKey<bdk::miniscript::Segwitv0> for MySegwitOnlyKeyType {
+/// fn into_descriptor_key(self) -> Result<DescriptorKey<bdk::miniscript::Segwitv0>, KeyError> {
+/// self.pubkey.into_descriptor_key()
+/// }
+/// }
+///
+/// let key = MySegwitOnlyKeyType {
+/// pubkey: PublicKey::from_str("...")?,
+/// };
+/// let (descriptor, _, _) = bdk::descriptor!(pkh(key))?;
+/// // ^^^^^ changing this to `wpkh` would make it compile
+///
+/// # Ok::<_, Box<dyn std::error::Error>>(())
+/// ```
+</span><span class="kw">pub trait </span>IntoDescriptorKey<Ctx: ScriptContext>: Sized {
+ <span class="doccomment">/// Turn the key into a [`DescriptorKey`] within the requested [`ScriptContext`]
+ </span><span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError>;
}
-<span class="doccomment">/// Enum for extended keys that can be either `xprv` or `xpub`</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// An instance of [`ExtendedKey`] can be constructed from an [`ExtendedPrivKey`](bip32::ExtendedPrivKey)</span>
-<span class="doccomment">/// or an [`ExtendedPubKey`](bip32::ExtendedPubKey) by using the `From` trait.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Defaults to the [`Legacy`](miniscript::Legacy) context.</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">=</span> <span class="ident">miniscript::Legacy</span><span class="op">></span> {
- <span class="doccomment">/// A private extended key, aka an `xprv`</span>
- <span class="ident">Private</span>((<span class="ident">bip32::ExtendedPrivKey</span>, <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>)),
- <span class="doccomment">/// A public extended key, aka an `xpub`</span>
- <span class="ident">Public</span>((<span class="ident">bip32::ExtendedPubKey</span>, <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>)),
+<span class="doccomment">/// Enum for extended keys that can be either `xprv` or `xpub`
+///
+/// An instance of [`ExtendedKey`] can be constructed from an [`ExtendedPrivKey`](bip32::ExtendedPrivKey)
+/// or an [`ExtendedPubKey`](bip32::ExtendedPubKey) by using the `From` trait.
+///
+/// Defaults to the [`Legacy`](miniscript::Legacy) context.
+</span><span class="kw">pub enum </span>ExtendedKey<Ctx: ScriptContext = miniscript::Legacy> {
+ <span class="doccomment">/// A private extended key, aka an `xprv`
+ </span>Private((bip32::ExtendedPrivKey, PhantomData<Ctx>)),
+ <span class="doccomment">/// A public extended key, aka an `xpub`
+ </span>Public((bip32::ExtendedPubKey, PhantomData<Ctx>)),
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="doccomment">/// Return whether or not the key contains the private data</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">has_secret</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">ExtendedKey::Private</span>(<span class="kw">_</span>) => <span class="bool-val">true</span>,
- <span class="ident">ExtendedKey::Public</span>(<span class="kw">_</span>) => <span class="bool-val">false</span>,
+<span class="kw">impl</span><Ctx: ScriptContext> ExtendedKey<Ctx> {
+ <span class="doccomment">/// Return whether or not the key contains the private data
+ </span><span class="kw">pub fn </span>has_secret(<span class="kw-2">&</span><span class="self">self</span>) -> bool {
+ <span class="kw">match </span><span class="self">self </span>{
+ ExtendedKey::Private(<span class="kw">_</span>) => <span class="bool-val">true</span>,
+ ExtendedKey::Public(<span class="kw">_</span>) => <span class="bool-val">false</span>,
}
}
- <span class="doccomment">/// Transform the [`ExtendedKey`] into an [`ExtendedPrivKey`](bip32::ExtendedPrivKey) for the</span>
- <span class="doccomment">/// given [`Network`], if the key contains the private data</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">into_xprv</span>(<span class="self">self</span>, <span class="ident">network</span>: <span class="ident">Network</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::ExtendedPrivKey</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">ExtendedKey::Private</span>((<span class="kw-2">mut</span> <span class="ident">xprv</span>, <span class="kw">_</span>)) => {
- <span class="ident">xprv</span>.<span class="ident">network</span> <span class="op">=</span> <span class="ident">network</span>;
- <span class="prelude-val">Some</span>(<span class="ident">xprv</span>)
+ <span class="doccomment">/// Transform the [`ExtendedKey`] into an [`ExtendedPrivKey`](bip32::ExtendedPrivKey) for the
+ /// given [`Network`], if the key contains the private data
+ </span><span class="kw">pub fn </span>into_xprv(<span class="self">self</span>, network: Network) -> <span class="prelude-ty">Option</span><bip32::ExtendedPrivKey> {
+ <span class="kw">match </span><span class="self">self </span>{
+ ExtendedKey::Private((<span class="kw-2">mut </span>xprv, <span class="kw">_</span>)) => {
+ xprv.network = network;
+ <span class="prelude-val">Some</span>(xprv)
}
- <span class="ident">ExtendedKey::Public</span>(<span class="kw">_</span>) => <span class="prelude-val">None</span>,
+ ExtendedKey::Public(<span class="kw">_</span>) => <span class="prelude-val">None</span>,
}
}
- <span class="doccomment">/// Transform the [`ExtendedKey`] into an [`ExtendedPubKey`](bip32::ExtendedPubKey) for the</span>
- <span class="doccomment">/// given [`Network`]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">into_xpub</span><span class="op"><</span><span class="ident">C</span>: <span class="ident">Signing</span><span class="op">></span>(
+ <span class="doccomment">/// Transform the [`ExtendedKey`] into an [`ExtendedPubKey`](bip32::ExtendedPubKey) for the
+ /// given [`Network`]
+ </span><span class="kw">pub fn </span>into_xpub<C: Signing>(
<span class="self">self</span>,
- <span class="ident">network</span>: <span class="ident">bitcoin::Network</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">Secp256k1</span><span class="op"><</span><span class="ident">C</span><span class="op">></span>,
- ) -> <span class="ident">bip32::ExtendedPubKey</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">xpub</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">ExtendedKey::Private</span>((<span class="ident">xprv</span>, <span class="kw">_</span>)) => <span class="ident">bip32::ExtendedPubKey::from_priv</span>(<span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">xprv</span>),
- <span class="ident">ExtendedKey::Public</span>((<span class="ident">xpub</span>, <span class="kw">_</span>)) => <span class="ident">xpub</span>,
+ network: bitcoin::Network,
+ secp: <span class="kw-2">&</span>Secp256k1<C>,
+ ) -> bip32::ExtendedPubKey {
+ <span class="kw">let </span><span class="kw-2">mut </span>xpub = <span class="kw">match </span><span class="self">self </span>{
+ ExtendedKey::Private((xprv, <span class="kw">_</span>)) => bip32::ExtendedPubKey::from_priv(secp, <span class="kw-2">&</span>xprv),
+ ExtendedKey::Public((xpub, <span class="kw">_</span>)) => xpub,
};
- <span class="ident">xpub</span>.<span class="ident">network</span> <span class="op">=</span> <span class="ident">network</span>;
- <span class="ident">xpub</span>
+ xpub.network = network;
+ xpub
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">From</span><span class="op"><</span><span class="ident">bip32::ExtendedPubKey</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">xpub</span>: <span class="ident">bip32::ExtendedPubKey</span>) -> <span class="self">Self</span> {
- <span class="ident">ExtendedKey::Public</span>((<span class="ident">xpub</span>, <span class="ident">PhantomData</span>))
+<span class="kw">impl</span><Ctx: ScriptContext> From<bip32::ExtendedPubKey> <span class="kw">for </span>ExtendedKey<Ctx> {
+ <span class="kw">fn </span>from(xpub: bip32::ExtendedPubKey) -> <span class="self">Self </span>{
+ ExtendedKey::Public((xpub, PhantomData))
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">From</span><span class="op"><</span><span class="ident">bip32::ExtendedPrivKey</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">xprv</span>: <span class="ident">bip32::ExtendedPrivKey</span>) -> <span class="self">Self</span> {
- <span class="ident">ExtendedKey::Private</span>((<span class="ident">xprv</span>, <span class="ident">PhantomData</span>))
+<span class="kw">impl</span><Ctx: ScriptContext> From<bip32::ExtendedPrivKey> <span class="kw">for </span>ExtendedKey<Ctx> {
+ <span class="kw">fn </span>from(xprv: bip32::ExtendedPrivKey) -> <span class="self">Self </span>{
+ ExtendedKey::Private((xprv, PhantomData))
}
}
-<span class="doccomment">/// Trait for keys that can be derived.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// When extra metadata are provided, a [`DerivableKey`] can be transformed into a</span>
-<span class="doccomment">/// [`DescriptorKey`]: the trait [`IntoDescriptorKey`] is automatically implemented</span>
-<span class="doccomment">/// for `(DerivableKey, DerivationPath)` and</span>
-<span class="doccomment">/// `(DerivableKey, KeySource, DerivationPath)` tuples.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// For key types that don't encode any indication about the path to use (like bip39), it's</span>
-<span class="doccomment">/// generally recommended to implemented this trait instead of [`IntoDescriptorKey`]. The same</span>
-<span class="doccomment">/// rules regarding script context and valid networks apply.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ## Examples</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Key types that can be directly converted into an [`ExtendedPrivKey`] or</span>
-<span class="doccomment">/// an [`ExtendedPubKey`] can implement only the required `into_extended_key()` method.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// use bdk::bitcoin;</span>
-<span class="doccomment">/// use bdk::bitcoin::util::bip32;</span>
-<span class="doccomment">/// use bdk::keys::{DerivableKey, ExtendedKey, KeyError, ScriptContext};</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// struct MyCustomKeyType {</span>
-<span class="doccomment">/// key_data: bitcoin::PrivateKey,</span>
-<span class="doccomment">/// chain_code: Vec<u8>,</span>
-<span class="doccomment">/// network: bitcoin::Network,</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl<Ctx: ScriptContext> DerivableKey<Ctx> for MyCustomKeyType {</span>
-<span class="doccomment">/// fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError> {</span>
-<span class="doccomment">/// let xprv = bip32::ExtendedPrivKey {</span>
-<span class="doccomment">/// network: self.network,</span>
-<span class="doccomment">/// depth: 0,</span>
-<span class="doccomment">/// parent_fingerprint: bip32::Fingerprint::default(),</span>
-<span class="doccomment">/// private_key: self.key_data.inner,</span>
-<span class="doccomment">/// chain_code: bip32::ChainCode::from(self.chain_code.as_ref()),</span>
-<span class="doccomment">/// child_number: bip32::ChildNumber::Normal { index: 0 },</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// xprv.into_extended_key()</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Types that don't internally encode the [`Network`](bitcoin::Network) in which they are valid need some extra</span>
-<span class="doccomment">/// steps to override the set of valid networks, otherwise only the network specified in the</span>
-<span class="doccomment">/// [`ExtendedPrivKey`] or [`ExtendedPubKey`] will be considered valid.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// use bdk::bitcoin;</span>
-<span class="doccomment">/// use bdk::bitcoin::util::bip32;</span>
-<span class="doccomment">/// use bdk::keys::{</span>
-<span class="doccomment">/// any_network, DerivableKey, DescriptorKey, ExtendedKey, KeyError, ScriptContext,</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// struct MyCustomKeyType {</span>
-<span class="doccomment">/// key_data: bitcoin::PrivateKey,</span>
-<span class="doccomment">/// chain_code: Vec<u8>,</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// impl<Ctx: ScriptContext> DerivableKey<Ctx> for MyCustomKeyType {</span>
-<span class="doccomment">/// fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError> {</span>
-<span class="doccomment">/// let xprv = bip32::ExtendedPrivKey {</span>
-<span class="doccomment">/// network: bitcoin::Network::Bitcoin, // pick an arbitrary network here</span>
-<span class="doccomment">/// depth: 0,</span>
-<span class="doccomment">/// parent_fingerprint: bip32::Fingerprint::default(),</span>
-<span class="doccomment">/// private_key: self.key_data.inner,</span>
-<span class="doccomment">/// chain_code: bip32::ChainCode::from(self.chain_code.as_ref()),</span>
-<span class="doccomment">/// child_number: bip32::ChildNumber::Normal { index: 0 },</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// xprv.into_extended_key()</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// fn into_descriptor_key(</span>
-<span class="doccomment">/// self,</span>
-<span class="doccomment">/// source: Option<bip32::KeySource>,</span>
-<span class="doccomment">/// derivation_path: bip32::DerivationPath,</span>
-<span class="doccomment">/// ) -> Result<DescriptorKey<Ctx>, KeyError> {</span>
-<span class="doccomment">/// let descriptor_key = self</span>
-<span class="doccomment">/// .into_extended_key()?</span>
-<span class="doccomment">/// .into_descriptor_key(source, derivation_path)?;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// // Override the set of valid networks here</span>
-<span class="doccomment">/// Ok(descriptor_key.override_valid_networks(any_network()))</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`DerivationPath`]: (bip32::DerivationPath)</span>
-<span class="doccomment">/// [`ExtendedPrivKey`]: (bip32::ExtendedPrivKey)</span>
-<span class="doccomment">/// [`ExtendedPubKey`]: (bip32::ExtendedPubKey)</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span> <span class="op">=</span> <span class="ident">miniscript::Legacy</span><span class="op">></span>: <span class="ident">Sized</span> {
- <span class="doccomment">/// Consume `self` and turn it into an [`ExtendedKey`]</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This can be used to get direct access to `xprv`s and `xpub`s for types that implement this trait,</span>
- <span class="doccomment">/// like [`Mnemonic`](bip39::Mnemonic) when the `keys-bip39` feature is enabled.</span>
- <span class="attribute">#[<span class="ident">cfg_attr</span>(
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>,
- <span class="ident">doc</span> <span class="op">=</span> <span class="string">r##"
+<span class="doccomment">/// Trait for keys that can be derived.
+///
+/// When extra metadata are provided, a [`DerivableKey`] can be transformed into a
+/// [`DescriptorKey`]: the trait [`IntoDescriptorKey`] is automatically implemented
+/// for `(DerivableKey, DerivationPath)` and
+/// `(DerivableKey, KeySource, DerivationPath)` tuples.
+///
+/// For key types that don't encode any indication about the path to use (like bip39), it's
+/// generally recommended to implemented this trait instead of [`IntoDescriptorKey`]. The same
+/// rules regarding script context and valid networks apply.
+///
+/// ## Examples
+///
+/// Key types that can be directly converted into an [`ExtendedPrivKey`] or
+/// an [`ExtendedPubKey`] can implement only the required `into_extended_key()` method.
+///
+/// ```
+/// use bdk::bitcoin;
+/// use bdk::bitcoin::util::bip32;
+/// use bdk::keys::{DerivableKey, ExtendedKey, KeyError, ScriptContext};
+///
+/// struct MyCustomKeyType {
+/// key_data: bitcoin::PrivateKey,
+/// chain_code: Vec<u8>,
+/// network: bitcoin::Network,
+/// }
+///
+/// impl<Ctx: ScriptContext> DerivableKey<Ctx> for MyCustomKeyType {
+/// fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError> {
+/// let xprv = bip32::ExtendedPrivKey {
+/// network: self.network,
+/// depth: 0,
+/// parent_fingerprint: bip32::Fingerprint::default(),
+/// private_key: self.key_data.inner,
+/// chain_code: bip32::ChainCode::from(self.chain_code.as_ref()),
+/// child_number: bip32::ChildNumber::Normal { index: 0 },
+/// };
+///
+/// xprv.into_extended_key()
+/// }
+/// }
+/// ```
+///
+/// Types that don't internally encode the [`Network`](bitcoin::Network) in which they are valid need some extra
+/// steps to override the set of valid networks, otherwise only the network specified in the
+/// [`ExtendedPrivKey`] or [`ExtendedPubKey`] will be considered valid.
+///
+/// ```
+/// use bdk::bitcoin;
+/// use bdk::bitcoin::util::bip32;
+/// use bdk::keys::{
+/// any_network, DerivableKey, DescriptorKey, ExtendedKey, KeyError, ScriptContext,
+/// };
+///
+/// struct MyCustomKeyType {
+/// key_data: bitcoin::PrivateKey,
+/// chain_code: Vec<u8>,
+/// }
+///
+/// impl<Ctx: ScriptContext> DerivableKey<Ctx> for MyCustomKeyType {
+/// fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError> {
+/// let xprv = bip32::ExtendedPrivKey {
+/// network: bitcoin::Network::Bitcoin, // pick an arbitrary network here
+/// depth: 0,
+/// parent_fingerprint: bip32::Fingerprint::default(),
+/// private_key: self.key_data.inner,
+/// chain_code: bip32::ChainCode::from(self.chain_code.as_ref()),
+/// child_number: bip32::ChildNumber::Normal { index: 0 },
+/// };
+///
+/// xprv.into_extended_key()
+/// }
+///
+/// fn into_descriptor_key(
+/// self,
+/// source: Option<bip32::KeySource>,
+/// derivation_path: bip32::DerivationPath,
+/// ) -> Result<DescriptorKey<Ctx>, KeyError> {
+/// let descriptor_key = self
+/// .into_extended_key()?
+/// .into_descriptor_key(source, derivation_path)?;
+///
+/// // Override the set of valid networks here
+/// Ok(descriptor_key.override_valid_networks(any_network()))
+/// }
+/// }
+/// ```
+///
+/// [`DerivationPath`]: (bip32::DerivationPath)
+/// [`ExtendedPrivKey`]: (bip32::ExtendedPrivKey)
+/// [`ExtendedPubKey`]: (bip32::ExtendedPubKey)
+</span><span class="kw">pub trait </span>DerivableKey<Ctx: ScriptContext = miniscript::Legacy>: Sized {
+ <span class="doccomment">/// Consume `self` and turn it into an [`ExtendedKey`]
+ ///
+ /// This can be used to get direct access to `xprv`s and `xpub`s for types that implement this trait,
+ /// like [`Mnemonic`](bip39::Mnemonic) when the `keys-bip39` feature is enabled.
+ </span><span class="attr">#[cfg_attr(
+ feature = <span class="string">"keys-bip39"</span>,
+ doc = <span class="string">r##"
```rust
use bdk::bitcoin::Network;
use bdk::keys::{DerivableKey, ExtendedKey};
let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
# Ok(()) }
```
-"##</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span>;
+"##
+ </span>)]
+ </span><span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError>;
- <span class="doccomment">/// Consume `self` and turn it into a [`DescriptorKey`] by adding the extra metadata, such as</span>
- <span class="doccomment">/// key origin and derivation path</span>
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="doccomment">/// Consume `self` and turn it into a [`DescriptorKey`] by adding the extra metadata, such as
+ /// key origin and derivation path
+ </span><span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">origin</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">into_extended_key</span>()<span class="question-mark">?</span> {
- <span class="ident">ExtendedKey::Private</span>((<span class="ident">xprv</span>, <span class="kw">_</span>)) => <span class="ident">DescriptorSecretKey::XPrv</span>(<span class="ident">DescriptorXKey</span> {
- <span class="ident">origin</span>,
- <span class="ident">xkey</span>: <span class="ident">xprv</span>,
- <span class="ident">derivation_path</span>,
- <span class="ident">wildcard</span>: <span class="ident">Wildcard::Unhardened</span>,
+ origin: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">match </span><span class="self">self</span>.into_extended_key()<span class="question-mark">? </span>{
+ ExtendedKey::Private((xprv, <span class="kw">_</span>)) => DescriptorSecretKey::XPrv(DescriptorXKey {
+ origin,
+ xkey: xprv,
+ derivation_path,
+ wildcard: Wildcard::Unhardened,
})
- .<span class="ident">into_descriptor_key</span>(),
- <span class="ident">ExtendedKey::Public</span>((<span class="ident">xpub</span>, <span class="kw">_</span>)) => <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">DescriptorXKey</span> {
- <span class="ident">origin</span>,
- <span class="ident">xkey</span>: <span class="ident">xpub</span>,
- <span class="ident">derivation_path</span>,
- <span class="ident">wildcard</span>: <span class="ident">Wildcard::Unhardened</span>,
+ .into_descriptor_key(),
+ ExtendedKey::Public((xpub, <span class="kw">_</span>)) => DescriptorPublicKey::XPub(DescriptorXKey {
+ origin,
+ xkey: xpub,
+ derivation_path,
+ wildcard: Wildcard::Unhardened,
})
- .<span class="ident">into_descriptor_key</span>(),
+ .into_descriptor_key(),
}
}
}
-<span class="doccomment">/// Identity conversion</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
+<span class="doccomment">/// Identity conversion
+</span><span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>ExtendedKey<Ctx> {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">bip32::ExtendedPubKey</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">into</span>())
+<span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>bip32::ExtendedPubKey {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.into())
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">bip32::ExtendedPrivKey</span> {
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">into</span>())
+<span class="kw">impl</span><Ctx: ScriptContext> DerivableKey<Ctx> <span class="kw">for </span>bip32::ExtendedPrivKey {
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="prelude-val">Ok</span>(<span class="self">self</span>.into())
}
}
-<span class="doccomment">/// Output of a [`GeneratableKey`] key generation</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> {
- <span class="ident">key</span>: <span class="ident">K</span>,
- <span class="ident">valid_networks</span>: <span class="ident">ValidNetworks</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
+<span class="doccomment">/// Output of a [`GeneratableKey`] key generation
+</span><span class="kw">pub struct </span>GeneratedKey<K, Ctx: ScriptContext> {
+ key: K,
+ valid_networks: ValidNetworks,
+ phantom: PhantomData<Ctx>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">key</span>: <span class="ident">K</span>, <span class="ident">valid_networks</span>: <span class="ident">ValidNetworks</span>) -> <span class="self">Self</span> {
- <span class="ident">GeneratedKey</span> {
- <span class="ident">key</span>,
- <span class="ident">valid_networks</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span>,
+<span class="kw">impl</span><K, Ctx: ScriptContext> GeneratedKey<K, Ctx> {
+ <span class="kw">fn </span>new(key: K, valid_networks: ValidNetworks) -> <span class="self">Self </span>{
+ GeneratedKey {
+ key,
+ valid_networks,
+ phantom: PhantomData,
}
}
- <span class="doccomment">/// Consumes `self` and returns the key</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">into_key</span>(<span class="self">self</span>) -> <span class="ident">K</span> {
- <span class="self">self</span>.<span class="ident">key</span>
+ <span class="doccomment">/// Consumes `self` and returns the key
+ </span><span class="kw">pub fn </span>into_key(<span class="self">self</span>) -> K {
+ <span class="self">self</span>.key
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">Deref</span> <span class="kw">for</span> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">type</span> <span class="ident">Target</span> <span class="op">=</span> <span class="ident">K</span>;
+<span class="kw">impl</span><K, Ctx: ScriptContext> Deref <span class="kw">for </span>GeneratedKey<K, Ctx> {
+ <span class="kw">type </span>Target = K;
- <span class="kw">fn</span> <span class="ident">deref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Target</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">key</span>
+ <span class="kw">fn </span>deref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="self">Self</span>::Target {
+ <span class="kw-2">&</span><span class="self">self</span>.key
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">K</span>: <span class="ident">Clone</span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">Clone</span> <span class="kw">for</span> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="ident">GeneratedKey</span> {
- <span class="ident">key</span>: <span class="self">self</span>.<span class="ident">key</span>.<span class="ident">clone</span>(),
- <span class="ident">valid_networks</span>: <span class="self">self</span>.<span class="ident">valid_networks</span>.<span class="ident">clone</span>(),
- <span class="ident">phantom</span>: <span class="self">self</span>.<span class="ident">phantom</span>,
+<span class="kw">impl</span><K: Clone, Ctx: ScriptContext> Clone <span class="kw">for </span>GeneratedKey<K, Ctx> {
+ <span class="kw">fn </span>clone(<span class="kw-2">&</span><span class="self">self</span>) -> GeneratedKey<K, Ctx> {
+ GeneratedKey {
+ key: <span class="self">self</span>.key.clone(),
+ valid_networks: <span class="self">self</span>.valid_networks.clone(),
+ phantom: <span class="self">self</span>.phantom,
}
}
}
-<span class="comment">// Make generated "derivable" keys themselves "derivable". Also make sure they are assigned the</span>
-<span class="comment">// right `valid_networks`.</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>, <span class="ident">K</span><span class="op">></span> <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>,
- <span class="ident">K</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
+<span class="comment">// Make generated "derivable" keys themselves "derivable". Also make sure they are assigned the
+// right `valid_networks`.
+</span><span class="kw">impl</span><Ctx, K> DerivableKey<Ctx> <span class="kw">for </span>GeneratedKey<K, Ctx>
+<span class="kw">where
+ </span>Ctx: ScriptContext,
+ K: DerivableKey<Ctx>,
{
- <span class="kw">fn</span> <span class="ident">into_extended_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">ExtendedKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">key</span>.<span class="ident">into_extended_key</span>()
+ <span class="kw">fn </span>into_extended_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><ExtendedKey<Ctx>, KeyError> {
+ <span class="self">self</span>.key.into_extended_key()
}
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(
+ <span class="kw">fn </span>into_descriptor_key(
<span class="self">self</span>,
- <span class="ident">origin</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bip32::KeySource</span><span class="op">></span>,
- <span class="ident">derivation_path</span>: <span class="ident">bip32::DerivationPath</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor_key</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">key</span>.<span class="ident">into_descriptor_key</span>(<span class="ident">origin</span>, <span class="ident">derivation_path</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">descriptor_key</span>.<span class="ident">override_valid_networks</span>(<span class="self">self</span>.<span class="ident">valid_networks</span>))
+ origin: <span class="prelude-ty">Option</span><bip32::KeySource>,
+ derivation_path: bip32::DerivationPath,
+ ) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>descriptor_key = <span class="self">self</span>.key.into_descriptor_key(origin, derivation_path)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(descriptor_key.override_valid_networks(<span class="self">self</span>.valid_networks))
}
}
-<span class="comment">// Make generated keys directly usable in descriptors, and make sure they get assigned the right</span>
-<span class="comment">// `valid_networks`.</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>, <span class="ident">K</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">GeneratedKey</span><span class="op"><</span><span class="ident">K</span>, <span class="ident">Ctx</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>,
- <span class="ident">K</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
+<span class="comment">// Make generated keys directly usable in descriptors, and make sure they get assigned the right
+// `valid_networks`.
+</span><span class="kw">impl</span><Ctx, K> IntoDescriptorKey<Ctx> <span class="kw">for </span>GeneratedKey<K, Ctx>
+<span class="kw">where
+ </span>Ctx: ScriptContext,
+ K: IntoDescriptorKey<Ctx>,
{
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">desc_key</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">key</span>.<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">desc_key</span>.<span class="ident">override_valid_networks</span>(<span class="self">self</span>.<span class="ident">valid_networks</span>))
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>desc_key = <span class="self">self</span>.key.into_descriptor_key()<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(desc_key.override_valid_networks(<span class="self">self</span>.valid_networks))
}
}
-<span class="doccomment">/// Trait for keys that can be generated</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The same rules about [`ScriptContext`] and [`ValidNetworks`] from [`IntoDescriptorKey`] apply.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait is particularly useful when combined with [`DerivableKey`]: if `Self`</span>
-<span class="doccomment">/// implements it, the returned [`GeneratedKey`] will also implement it. The same is true for</span>
-<span class="doccomment">/// [`IntoDescriptorKey`]: the generated keys can be directly used in descriptors if `Self` is also</span>
-<span class="doccomment">/// [`IntoDescriptorKey`].</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>: <span class="ident">Sized</span> {
- <span class="doccomment">/// Type specifying the amount of entropy required e.g. `[u8;32]`</span>
- <span class="kw">type</span> <span class="ident">Entropy</span>: <span class="ident">AsMut</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span> <span class="op">+</span> <span class="ident">Default</span>;
-
- <span class="doccomment">/// Extra options required by the `generate_with_entropy`</span>
- <span class="kw">type</span> <span class="ident">Options</span>;
- <span class="doccomment">/// Returned error in case of failure</span>
- <span class="kw">type</span> <span class="ident">Error</span>: <span class="ident">std::fmt::Debug</span>;
-
- <span class="doccomment">/// Generate a key given the extra options and the entropy</span>
- <span class="kw">fn</span> <span class="ident">generate_with_entropy</span>(
- <span class="ident">options</span>: <span class="ident"><span class="self">Self</span>::Options</span>,
- <span class="ident">entropy</span>: <span class="ident"><span class="self">Self</span>::Entropy</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span>;
-
- <span class="doccomment">/// Generate a key given the options with a random entropy</span>
- <span class="kw">fn</span> <span class="ident">generate</span>(<span class="ident">options</span>: <span class="ident"><span class="self">Self</span>::Options</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span> {
- <span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">thread_rng</span>, <span class="ident">Rng</span>};
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">entropy</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::Entropy::default</span>();
- <span class="ident">thread_rng</span>().<span class="ident">fill</span>(<span class="ident">entropy</span>.<span class="ident">as_mut</span>());
- <span class="ident"><span class="self">Self</span>::generate_with_entropy</span>(<span class="ident">options</span>, <span class="ident">entropy</span>)
+<span class="doccomment">/// Trait for keys that can be generated
+///
+/// The same rules about [`ScriptContext`] and [`ValidNetworks`] from [`IntoDescriptorKey`] apply.
+///
+/// This trait is particularly useful when combined with [`DerivableKey`]: if `Self`
+/// implements it, the returned [`GeneratedKey`] will also implement it. The same is true for
+/// [`IntoDescriptorKey`]: the generated keys can be directly used in descriptors if `Self` is also
+/// [`IntoDescriptorKey`].
+</span><span class="kw">pub trait </span>GeneratableKey<Ctx: ScriptContext>: Sized {
+ <span class="doccomment">/// Type specifying the amount of entropy required e.g. `[u8;32]`
+ </span><span class="kw">type </span>Entropy: AsMut<[u8]> + Default;
+
+ <span class="doccomment">/// Extra options required by the `generate_with_entropy`
+ </span><span class="kw">type </span>Options;
+ <span class="doccomment">/// Returned error in case of failure
+ </span><span class="kw">type </span>Error: std::fmt::Debug;
+
+ <span class="doccomment">/// Generate a key given the extra options and the entropy
+ </span><span class="kw">fn </span>generate_with_entropy(
+ options: <span class="self">Self</span>::Options,
+ entropy: <span class="self">Self</span>::Entropy,
+ ) -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error>;
+
+ <span class="doccomment">/// Generate a key given the options with a random entropy
+ </span><span class="kw">fn </span>generate(options: <span class="self">Self</span>::Options) -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error> {
+ <span class="kw">use </span>rand::{thread_rng, Rng};
+
+ <span class="kw">let </span><span class="kw-2">mut </span>entropy = <span class="self">Self</span>::Entropy::default();
+ thread_rng().fill(entropy.as_mut());
+ <span class="self">Self</span>::generate_with_entropy(options, entropy)
}
}
-<span class="doccomment">/// Trait that allows generating a key with the default options</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait is automatically implemented if the [`GeneratableKey::Options`] implements [`Default`].</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">GeneratableDefaultOptions</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>: <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>,
- <span class="op"><</span><span class="self">Self</span> <span class="kw">as</span> <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span><span class="op">></span><span class="ident">::Options</span>: <span class="ident">Default</span>,
+<span class="doccomment">/// Trait that allows generating a key with the default options
+///
+/// This trait is automatically implemented if the [`GeneratableKey::Options`] implements [`Default`].
+</span><span class="kw">pub trait </span>GeneratableDefaultOptions<Ctx>: GeneratableKey<Ctx>
+<span class="kw">where
+ </span>Ctx: ScriptContext,
+ <<span class="self">Self </span><span class="kw">as </span>GeneratableKey<Ctx>>::Options: Default,
{
- <span class="doccomment">/// Generate a key with the default options and a given entropy</span>
- <span class="kw">fn</span> <span class="ident">generate_with_entropy_default</span>(
- <span class="ident">entropy</span>: <span class="ident"><span class="self">Self</span>::Entropy</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span> {
- <span class="ident"><span class="self">Self</span>::generate_with_entropy</span>(<span class="ident">Default::default</span>(), <span class="ident">entropy</span>)
+ <span class="doccomment">/// Generate a key with the default options and a given entropy
+ </span><span class="kw">fn </span>generate_with_entropy_default(
+ entropy: <span class="self">Self</span>::Entropy,
+ ) -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error> {
+ <span class="self">Self</span>::generate_with_entropy(Default::default(), entropy)
}
- <span class="doccomment">/// Generate a key with the default options and a random entropy</span>
- <span class="kw">fn</span> <span class="ident">generate_default</span>() -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span> {
- <span class="ident"><span class="self">Self</span>::generate</span>(<span class="ident">Default::default</span>())
+ <span class="doccomment">/// Generate a key with the default options and a random entropy
+ </span><span class="kw">fn </span>generate_default() -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error> {
+ <span class="self">Self</span>::generate(Default::default())
}
}
-<span class="doccomment">/// Automatic implementation of [`GeneratableDefaultOptions`] for [`GeneratableKey`]s where</span>
-<span class="doccomment">/// `Options` implements `Default`</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>, <span class="ident">K</span><span class="op">></span> <span class="ident">GeneratableDefaultOptions</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">K</span>
-<span class="kw">where</span>
- <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>,
- <span class="ident">K</span>: <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
- <span class="op"><</span><span class="ident">K</span> <span class="kw">as</span> <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span><span class="op">></span><span class="ident">::Options</span>: <span class="ident">Default</span>,
+<span class="doccomment">/// Automatic implementation of [`GeneratableDefaultOptions`] for [`GeneratableKey`]s where
+/// `Options` implements `Default`
+</span><span class="kw">impl</span><Ctx, K> GeneratableDefaultOptions<Ctx> <span class="kw">for </span>K
+<span class="kw">where
+ </span>Ctx: ScriptContext,
+ K: GeneratableKey<Ctx>,
+ <K <span class="kw">as </span>GeneratableKey<Ctx>>::Options: Default,
{
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">bip32::ExtendedPrivKey</span> {
- <span class="kw">type</span> <span class="ident">Entropy</span> <span class="op">=</span> [<span class="ident">u8</span>; <span class="number">32</span>];
+<span class="kw">impl</span><Ctx: ScriptContext> GeneratableKey<Ctx> <span class="kw">for </span>bip32::ExtendedPrivKey {
+ <span class="kw">type </span>Entropy = [u8; <span class="number">32</span>];
- <span class="kw">type</span> <span class="ident">Options</span> <span class="op">=</span> ();
- <span class="kw">type</span> <span class="ident">Error</span> <span class="op">=</span> <span class="ident">bip32::Error</span>;
+ <span class="kw">type </span>Options = ();
+ <span class="kw">type </span>Error = bip32::Error;
- <span class="kw">fn</span> <span class="ident">generate_with_entropy</span>(
- <span class="kw">_</span>: <span class="ident"><span class="self">Self</span>::Options</span>,
- <span class="ident">entropy</span>: <span class="ident"><span class="self">Self</span>::Entropy</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span> {
- <span class="comment">// pick a arbitrary network here, but say that we support all of them</span>
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::new_master</span>(<span class="ident">Network::Bitcoin</span>, <span class="ident">entropy</span>.<span class="ident">as_ref</span>())<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">GeneratedKey::new</span>(<span class="ident">xprv</span>, <span class="ident">any_network</span>()))
+ <span class="kw">fn </span>generate_with_entropy(
+ <span class="kw">_</span>: <span class="self">Self</span>::Options,
+ entropy: <span class="self">Self</span>::Entropy,
+ ) -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error> {
+ <span class="comment">// pick a arbitrary network here, but say that we support all of them
+ </span><span class="kw">let </span>xprv = bip32::ExtendedPrivKey::new_master(Network::Bitcoin, entropy.as_ref())<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(GeneratedKey::new(xprv, any_network()))
}
}
-<span class="doccomment">/// Options for generating a [`PrivateKey`]</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Defaults to creating compressed keys, which save on-chain bytes and fees</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Copy</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">PrivateKeyGenerateOptions</span> {
- <span class="doccomment">/// Whether the generated key should be "compressed" or not</span>
- <span class="kw">pub</span> <span class="ident">compressed</span>: <span class="ident">bool</span>,
+<span class="doccomment">/// Options for generating a [`PrivateKey`]
+///
+/// Defaults to creating compressed keys, which save on-chain bytes and fees
+</span><span class="attr">#[derive(Debug, Copy, Clone)]
+</span><span class="kw">pub struct </span>PrivateKeyGenerateOptions {
+ <span class="doccomment">/// Whether the generated key should be "compressed" or not
+ </span><span class="kw">pub </span>compressed: bool,
}
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">PrivateKeyGenerateOptions</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">PrivateKeyGenerateOptions</span> { <span class="ident">compressed</span>: <span class="bool-val">true</span> }
+<span class="kw">impl </span>Default <span class="kw">for </span>PrivateKeyGenerateOptions {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ PrivateKeyGenerateOptions { compressed: <span class="bool-val">true </span>}
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">GeneratableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">PrivateKey</span> {
- <span class="kw">type</span> <span class="ident">Entropy</span> <span class="op">=</span> [<span class="ident">u8</span>; <span class="ident">secp256k1::constants::SECRET_KEY_SIZE</span>];
-
- <span class="kw">type</span> <span class="ident">Options</span> <span class="op">=</span> <span class="ident">PrivateKeyGenerateOptions</span>;
- <span class="kw">type</span> <span class="ident">Error</span> <span class="op">=</span> <span class="ident">bip32::Error</span>;
-
- <span class="kw">fn</span> <span class="ident">generate_with_entropy</span>(
- <span class="ident">options</span>: <span class="ident"><span class="self">Self</span>::Options</span>,
- <span class="ident">entropy</span>: <span class="ident"><span class="self">Self</span>::Entropy</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">GeneratedKey</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident"><span class="self">Self</span>::Error</span><span class="op">></span> {
- <span class="comment">// pick a arbitrary network here, but say that we support all of them</span>
- <span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="ident">secp256k1::SecretKey::from_slice</span>(<span class="kw-2">&</span><span class="ident">entropy</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">private_key</span> <span class="op">=</span> <span class="ident">PrivateKey</span> {
- <span class="ident">compressed</span>: <span class="ident">options</span>.<span class="ident">compressed</span>,
- <span class="ident">network</span>: <span class="ident">Network::Bitcoin</span>,
- <span class="ident">inner</span>,
+<span class="kw">impl</span><Ctx: ScriptContext> GeneratableKey<Ctx> <span class="kw">for </span>PrivateKey {
+ <span class="kw">type </span>Entropy = [u8; secp256k1::constants::SECRET_KEY_SIZE];
+
+ <span class="kw">type </span>Options = PrivateKeyGenerateOptions;
+ <span class="kw">type </span>Error = bip32::Error;
+
+ <span class="kw">fn </span>generate_with_entropy(
+ options: <span class="self">Self</span>::Options,
+ entropy: <span class="self">Self</span>::Entropy,
+ ) -> <span class="prelude-ty">Result</span><GeneratedKey<<span class="self">Self</span>, Ctx>, <span class="self">Self</span>::Error> {
+ <span class="comment">// pick a arbitrary network here, but say that we support all of them
+ </span><span class="kw">let </span>inner = secp256k1::SecretKey::from_slice(<span class="kw-2">&</span>entropy)<span class="question-mark">?</span>;
+ <span class="kw">let </span>private_key = PrivateKey {
+ compressed: options.compressed,
+ network: Network::Bitcoin,
+ inner,
};
- <span class="prelude-val">Ok</span>(<span class="ident">GeneratedKey::new</span>(<span class="ident">private_key</span>, <span class="ident">any_network</span>()))
+ <span class="prelude-val">Ok</span>(GeneratedKey::new(private_key, any_network()))
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>, <span class="ident">T</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>
- <span class="kw">for</span> (<span class="ident">T</span>, <span class="ident">bip32::DerivationPath</span>)
+<span class="kw">impl</span><Ctx: ScriptContext, T: DerivableKey<Ctx>> IntoDescriptorKey<Ctx>
+ <span class="kw">for </span>(T, bip32::DerivationPath)
{
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">into_descriptor_key</span>(<span class="prelude-val">None</span>, <span class="self">self</span>.<span class="number">1</span>)
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="self">self</span>.<span class="number">0</span>.into_descriptor_key(<span class="prelude-val">None</span>, <span class="self">self</span>.<span class="number">1</span>)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>, <span class="ident">T</span>: <span class="ident">DerivableKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>
- <span class="kw">for</span> (<span class="ident">T</span>, <span class="ident">bip32::KeySource</span>, <span class="ident">bip32::DerivationPath</span>)
+<span class="kw">impl</span><Ctx: ScriptContext, T: DerivableKey<Ctx>> IntoDescriptorKey<Ctx>
+ <span class="kw">for </span>(T, bip32::KeySource, bip32::DerivationPath)
{
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">into_descriptor_key</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="number">1</span>), <span class="self">self</span>.<span class="number">2</span>)
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="self">self</span>.<span class="number">0</span>.into_descriptor_key(<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="number">1</span>), <span class="self">self</span>.<span class="number">2</span>)
}
}
-<span class="kw">fn</span> <span class="ident">expand_multi_keys</span><span class="op"><</span><span class="ident">Pk</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">pks</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Pk</span><span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">pks</span>, <span class="ident">key_maps_networks</span>): (<span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>) <span class="op">=</span> <span class="ident">pks</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">key</span><span class="op">|</span> <span class="ident">key</span>.<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>.<span class="ident">extract</span>(<span class="ident">secp</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>)<span class="op">|</span> (<span class="ident">a</span>, (<span class="ident">b</span>, <span class="ident">c</span>)))
- .<span class="ident">unzip</span>();
-
- <span class="kw">let</span> (<span class="ident">key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="ident">key_maps_networks</span>.<span class="ident">into_iter</span>().<span class="ident">fold</span>(
- (<span class="ident">KeyMap::default</span>(), <span class="ident">any_network</span>()),
- <span class="op">|</span>(<span class="kw-2">mut</span> <span class="ident">keys_acc</span>, <span class="ident">net_acc</span>), (<span class="ident">key</span>, <span class="ident">net</span>)<span class="op">|</span> {
- <span class="ident">keys_acc</span>.<span class="ident">extend</span>(<span class="ident">key</span>.<span class="ident">into_iter</span>());
- <span class="kw">let</span> <span class="ident">net_acc</span> <span class="op">=</span> <span class="ident">merge_networks</span>(<span class="kw-2">&</span><span class="ident">net_acc</span>, <span class="kw-2">&</span><span class="ident">net</span>);
-
- (<span class="ident">keys_acc</span>, <span class="ident">net_acc</span>)
+<span class="kw">fn </span>expand_multi_keys<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
+ pks: Vec<Pk>,
+ secp: <span class="kw-2">&</span>SecpCtx,
+) -> <span class="prelude-ty">Result</span><(Vec<DescriptorPublicKey>, KeyMap, ValidNetworks), KeyError> {
+ <span class="kw">let </span>(pks, key_maps_networks): (Vec<<span class="kw">_</span>>, Vec<<span class="kw">_</span>>) = pks
+ .into_iter()
+ .map(|key| key.into_descriptor_key()<span class="question-mark">?</span>.extract(secp))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?
+ </span>.into_iter()
+ .map(|(a, b, c)| (a, (b, c)))
+ .unzip();
+
+ <span class="kw">let </span>(key_map, valid_networks) = key_maps_networks.into_iter().fold(
+ (KeyMap::default(), any_network()),
+ |(<span class="kw-2">mut </span>keys_acc, net_acc), (key, net)| {
+ keys_acc.extend(key.into_iter());
+ <span class="kw">let </span>net_acc = merge_networks(<span class="kw-2">&</span>net_acc, <span class="kw-2">&</span>net);
+
+ (keys_acc, net_acc)
},
);
- <span class="prelude-val">Ok</span>((<span class="ident">pks</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+ <span class="prelude-val">Ok</span>((pks, key_map, valid_networks))
}
-<span class="comment">// Used internally by `bdk::fragment!` to build `pk_k()` fragments</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">make_pk</span><span class="op"><</span><span class="ident">Pk</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">descriptor_key</span>: <span class="ident">Pk</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Miniscript</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">key</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="ident">descriptor_key</span>.<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>.<span class="ident">extract</span>(<span class="ident">secp</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">minisc</span> <span class="op">=</span> <span class="ident">Miniscript::from_ast</span>(<span class="ident">Terminal::PkK</span>(<span class="ident">key</span>))<span class="question-mark">?</span>;
+<span class="comment">// Used internally by `bdk::fragment!` to build `pk_k()` fragments
+</span><span class="attr">#[doc(hidden)]
+</span><span class="kw">pub fn </span>make_pk<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
+ descriptor_key: Pk,
+ secp: <span class="kw-2">&</span>SecpCtx,
+) -> <span class="prelude-ty">Result</span><(Miniscript<DescriptorPublicKey, Ctx>, KeyMap, ValidNetworks), DescriptorError> {
+ <span class="kw">let </span>(key, key_map, valid_networks) = descriptor_key.into_descriptor_key()<span class="question-mark">?</span>.extract(secp)<span class="question-mark">?</span>;
+ <span class="kw">let </span>minisc = Miniscript::from_ast(Terminal::PkK(key))<span class="question-mark">?</span>;
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
+ minisc.check_miniscript()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">minisc</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+ <span class="prelude-val">Ok</span>((minisc, key_map, valid_networks))
}
-<span class="comment">// Used internally by `bdk::fragment!` to build `pk_h()` fragments</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">make_pkh</span><span class="op"><</span><span class="ident">Pk</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">descriptor_key</span>: <span class="ident">Pk</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Miniscript</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">key</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="ident">descriptor_key</span>.<span class="ident">into_descriptor_key</span>()<span class="question-mark">?</span>.<span class="ident">extract</span>(<span class="ident">secp</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">minisc</span> <span class="op">=</span> <span class="ident">Miniscript::from_ast</span>(<span class="ident">Terminal::PkH</span>(<span class="ident">key</span>))<span class="question-mark">?</span>;
+<span class="comment">// Used internally by `bdk::fragment!` to build `pk_h()` fragments
+</span><span class="attr">#[doc(hidden)]
+</span><span class="kw">pub fn </span>make_pkh<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
+ descriptor_key: Pk,
+ secp: <span class="kw-2">&</span>SecpCtx,
+) -> <span class="prelude-ty">Result</span><(Miniscript<DescriptorPublicKey, Ctx>, KeyMap, ValidNetworks), DescriptorError> {
+ <span class="kw">let </span>(key, key_map, valid_networks) = descriptor_key.into_descriptor_key()<span class="question-mark">?</span>.extract(secp)<span class="question-mark">?</span>;
+ <span class="kw">let </span>minisc = Miniscript::from_ast(Terminal::PkH(key))<span class="question-mark">?</span>;
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
+ minisc.check_miniscript()<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">minisc</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+ <span class="prelude-val">Ok</span>((minisc, key_map, valid_networks))
}
-<span class="comment">// Used internally by `bdk::fragment!` to build `multi()` fragments</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">make_multi</span><span class="op"><</span>
- <span class="ident">Pk</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
- <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>,
- <span class="ident">V</span>: <span class="ident">Fn</span>(<span class="ident">usize</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>) -> <span class="ident">Terminal</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">Ctx</span><span class="op">></span>,
-<span class="op">></span>(
- <span class="ident">thresh</span>: <span class="ident">usize</span>,
- <span class="ident">variant</span>: <span class="ident">V</span>,
- <span class="ident">pks</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Pk</span><span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Miniscript</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span>, <span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">DescriptorError</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">pks</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="ident">expand_multi_keys</span>(<span class="ident">pks</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">minisc</span> <span class="op">=</span> <span class="ident">Miniscript::from_ast</span>(<span class="ident">variant</span>(<span class="ident">thresh</span>, <span class="ident">pks</span>))<span class="question-mark">?</span>;
-
- <span class="ident">minisc</span>.<span class="ident">check_miniscript</span>()<span class="question-mark">?</span>;
-
- <span class="prelude-val">Ok</span>((<span class="ident">minisc</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+<span class="comment">// Used internally by `bdk::fragment!` to build `multi()` fragments
+</span><span class="attr">#[doc(hidden)]
+</span><span class="kw">pub fn </span>make_multi<
+ Pk: IntoDescriptorKey<Ctx>,
+ Ctx: ScriptContext,
+ V: Fn(usize, Vec<DescriptorPublicKey>) -> Terminal<DescriptorPublicKey, Ctx>,
+>(
+ thresh: usize,
+ variant: V,
+ pks: Vec<Pk>,
+ secp: <span class="kw-2">&</span>SecpCtx,
+) -> <span class="prelude-ty">Result</span><(Miniscript<DescriptorPublicKey, Ctx>, KeyMap, ValidNetworks), DescriptorError> {
+ <span class="kw">let </span>(pks, key_map, valid_networks) = expand_multi_keys(pks, secp)<span class="question-mark">?</span>;
+ <span class="kw">let </span>minisc = Miniscript::from_ast(variant(thresh, pks))<span class="question-mark">?</span>;
+
+ minisc.check_miniscript()<span class="question-mark">?</span>;
+
+ <span class="prelude-val">Ok</span>((minisc, key_map, valid_networks))
}
-<span class="comment">// Used internally by `bdk::descriptor!` to build `sortedmulti()` fragments</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">make_sortedmulti</span><span class="op"><</span><span class="ident">Pk</span>, <span class="ident">Ctx</span>, <span class="ident">F</span><span class="op">></span>(
- <span class="ident">thresh</span>: <span class="ident">usize</span>,
- <span class="ident">pks</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Pk</span><span class="op">></span>,
- <span class="ident">build_desc</span>: <span class="ident">F</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>, <span class="ident">KeyMap</span>, <span class="ident">ValidNetworks</span>), <span class="ident">DescriptorError</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">Pk</span>: <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
- <span class="ident">Ctx</span>: <span class="ident">ScriptContext</span>,
- <span class="ident">F</span>: <span class="ident">Fn</span>(
- <span class="ident">usize</span>,
- <span class="ident">Vec</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>, <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>), <span class="ident">DescriptorError</span><span class="op">></span>,
+<span class="comment">// Used internally by `bdk::descriptor!` to build `sortedmulti()` fragments
+</span><span class="attr">#[doc(hidden)]
+</span><span class="kw">pub fn </span>make_sortedmulti<Pk, Ctx, F>(
+ thresh: usize,
+ pks: Vec<Pk>,
+ build_desc: F,
+ secp: <span class="kw-2">&</span>SecpCtx,
+) -> <span class="prelude-ty">Result</span><(Descriptor<DescriptorPublicKey>, KeyMap, ValidNetworks), DescriptorError>
+<span class="kw">where
+ </span>Pk: IntoDescriptorKey<Ctx>,
+ Ctx: ScriptContext,
+ F: Fn(
+ usize,
+ Vec<DescriptorPublicKey>,
+ ) -> <span class="prelude-ty">Result</span><(Descriptor<DescriptorPublicKey>, PhantomData<Ctx>), DescriptorError>,
{
- <span class="kw">let</span> (<span class="ident">pks</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>) <span class="op">=</span> <span class="ident">expand_multi_keys</span>(<span class="ident">pks</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">build_desc</span>(<span class="ident">thresh</span>, <span class="ident">pks</span>)<span class="question-mark">?</span>.<span class="number">0</span>;
+ <span class="kw">let </span>(pks, key_map, valid_networks) = expand_multi_keys(pks, secp)<span class="question-mark">?</span>;
+ <span class="kw">let </span>descriptor = build_desc(thresh, pks)<span class="question-mark">?</span>.<span class="number">0</span>;
- <span class="prelude-val">Ok</span>((<span class="ident">descriptor</span>, <span class="ident">key_map</span>, <span class="ident">valid_networks</span>))
+ <span class="prelude-val">Ok</span>((descriptor, key_map, valid_networks))
}
-<span class="doccomment">/// The "identity" conversion is used internally by some `bdk::fragment`s</span>
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
+<span class="doccomment">/// The "identity" conversion is used internally by some `bdk::fragment`s
+</span><span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>DescriptorKey<Ctx> {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">DescriptorPublicKey</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">networks</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="kw">_</span>) => <span class="ident">any_network</span>(),
- <span class="ident">DescriptorPublicKey::XPub</span>(<span class="ident">DescriptorXKey</span> { <span class="ident">xkey</span>, .. })
- <span class="kw">if</span> <span class="ident">xkey</span>.<span class="ident">network</span> <span class="op">==</span> <span class="ident">Network::Bitcoin</span> =>
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>DescriptorPublicKey {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>networks = <span class="kw">match </span><span class="self">self </span>{
+ DescriptorPublicKey::Single(<span class="kw">_</span>) => any_network(),
+ DescriptorPublicKey::XPub(DescriptorXKey { xkey, .. })
+ <span class="kw">if </span>xkey.network == Network::Bitcoin =>
{
- <span class="ident">mainnet_network</span>()
+ mainnet_network()
}
- <span class="kw">_</span> => <span class="ident">test_networks</span>(),
+ <span class="kw">_ </span>=> test_networks(),
};
- <span class="prelude-val">Ok</span>(<span class="ident">DescriptorKey::from_public</span>(<span class="self">self</span>, <span class="ident">networks</span>))
+ <span class="prelude-val">Ok</span>(DescriptorKey::from_public(<span class="self">self</span>, networks))
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">PublicKey</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">key</span>: <span class="ident">SinglePubKey::FullKey</span>(<span class="self">self</span>),
- <span class="ident">origin</span>: <span class="prelude-val">None</span>,
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>PublicKey {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ DescriptorPublicKey::Single(SinglePub {
+ key: SinglePubKey::FullKey(<span class="self">self</span>),
+ origin: <span class="prelude-val">None</span>,
})
- .<span class="ident">into_descriptor_key</span>()
+ .into_descriptor_key()
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">XOnlyPublicKey</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="ident">DescriptorPublicKey::Single</span>(<span class="ident">SinglePub</span> {
- <span class="ident">key</span>: <span class="ident">SinglePubKey::XOnly</span>(<span class="self">self</span>),
- <span class="ident">origin</span>: <span class="prelude-val">None</span>,
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>XOnlyPublicKey {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ DescriptorPublicKey::Single(SinglePub {
+ key: SinglePubKey::XOnly(<span class="self">self</span>),
+ origin: <span class="prelude-val">None</span>,
})
- .<span class="ident">into_descriptor_key</span>()
+ .into_descriptor_key()
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">DescriptorSecretKey</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">networks</span> <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&</span><span class="self">self</span> {
- <span class="ident">DescriptorSecretKey::Single</span>(<span class="ident">sk</span>) <span class="kw">if</span> <span class="ident">sk</span>.<span class="ident">key</span>.<span class="ident">network</span> <span class="op">==</span> <span class="ident">Network::Bitcoin</span> => {
- <span class="ident">mainnet_network</span>()
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>DescriptorSecretKey {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ <span class="kw">let </span>networks = <span class="kw">match </span><span class="kw-2">&</span><span class="self">self </span>{
+ DescriptorSecretKey::Single(sk) <span class="kw">if </span>sk.key.network == Network::Bitcoin => {
+ mainnet_network()
}
- <span class="ident">DescriptorSecretKey::XPrv</span>(<span class="ident">DescriptorXKey</span> { <span class="ident">xkey</span>, .. })
- <span class="kw">if</span> <span class="ident">xkey</span>.<span class="ident">network</span> <span class="op">==</span> <span class="ident">Network::Bitcoin</span> =>
+ DescriptorSecretKey::XPrv(DescriptorXKey { xkey, .. })
+ <span class="kw">if </span>xkey.network == Network::Bitcoin =>
{
- <span class="ident">mainnet_network</span>()
+ mainnet_network()
}
- <span class="kw">_</span> => <span class="ident">test_networks</span>(),
+ <span class="kw">_ </span>=> test_networks(),
};
- <span class="prelude-val">Ok</span>(<span class="ident">DescriptorKey::from_secret</span>(<span class="self">self</span>, <span class="ident">networks</span>))
+ <span class="prelude-val">Ok</span>(DescriptorKey::from_secret(<span class="self">self</span>, networks))
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="kw-2">&</span><span class="lifetime">'_</span> <span class="ident">str</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="ident">DescriptorSecretKey::from_str</span>(<span class="self">self</span>)
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="ident">e</span><span class="op">|</span> <span class="ident">KeyError::Message</span>(<span class="ident">e</span>.<span class="ident">to_string</span>()))<span class="question-mark">?</span>
- .<span class="ident">into_descriptor_key</span>()
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span><span class="kw-2">&</span><span class="lifetime">'_ </span>str {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ DescriptorSecretKey::from_str(<span class="self">self</span>)
+ .map_err(|e| KeyError::Message(e.to_string()))<span class="question-mark">?
+ </span>.into_descriptor_key()
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span> <span class="ident">IntoDescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span> <span class="kw">for</span> <span class="ident">PrivateKey</span> {
- <span class="kw">fn</span> <span class="ident">into_descriptor_key</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">KeyError</span><span class="op">></span> {
- <span class="ident">DescriptorSecretKey::Single</span>(<span class="ident">SinglePriv</span> {
- <span class="ident">key</span>: <span class="self">self</span>,
- <span class="ident">origin</span>: <span class="prelude-val">None</span>,
+<span class="kw">impl</span><Ctx: ScriptContext> IntoDescriptorKey<Ctx> <span class="kw">for </span>PrivateKey {
+ <span class="kw">fn </span>into_descriptor_key(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><DescriptorKey<Ctx>, KeyError> {
+ DescriptorSecretKey::Single(SinglePriv {
+ key: <span class="self">self</span>,
+ origin: <span class="prelude-val">None</span>,
})
- .<span class="ident">into_descriptor_key</span>()
+ .into_descriptor_key()
}
}
-<span class="doccomment">/// Errors thrown while working with [`keys`](crate::keys)</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">KeyError</span> {
- <span class="doccomment">/// The key cannot exist in the given script context</span>
- <span class="ident">InvalidScriptContext</span>,
- <span class="doccomment">/// The key is not valid for the given network</span>
- <span class="ident">InvalidNetwork</span>,
- <span class="doccomment">/// The key has an invalid checksum</span>
- <span class="ident">InvalidChecksum</span>,
-
- <span class="doccomment">/// Custom error message</span>
- <span class="ident">Message</span>(<span class="ident">String</span>),
-
- <span class="doccomment">/// BIP32 error</span>
- <span class="ident">Bip32</span>(<span class="ident">bitcoin::util::bip32::Error</span>),
- <span class="doccomment">/// Miniscript error</span>
- <span class="ident">Miniscript</span>(<span class="ident">miniscript::Error</span>),
+<span class="doccomment">/// Errors thrown while working with [`keys`](crate::keys)
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>KeyError {
+ <span class="doccomment">/// The key cannot exist in the given script context
+ </span>InvalidScriptContext,
+ <span class="doccomment">/// The key is not valid for the given network
+ </span>InvalidNetwork,
+ <span class="doccomment">/// The key has an invalid checksum
+ </span>InvalidChecksum,
+
+ <span class="doccomment">/// Custom error message
+ </span>Message(String),
+
+ <span class="doccomment">/// BIP32 error
+ </span>Bip32(bitcoin::util::bip32::Error),
+ <span class="doccomment">/// Miniscript error
+ </span>Miniscript(miniscript::Error),
}
-<span class="macro">impl_error!</span>(<span class="ident">miniscript::Error</span>, <span class="ident">Miniscript</span>, <span class="ident">KeyError</span>);
-<span class="macro">impl_error!</span>(<span class="ident">bitcoin::util::bip32::Error</span>, <span class="ident">Bip32</span>, <span class="ident">KeyError</span>);
+<span class="macro">impl_error!</span>(miniscript::Error, Miniscript, KeyError);
+<span class="macro">impl_error!</span>(bitcoin::util::bip32::Error, Bip32, KeyError);
-<span class="kw">impl</span> <span class="ident">std::fmt::Display</span> <span class="kw">for</span> <span class="ident">KeyError</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">std::fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">std::fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>KeyError {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>std::fmt::Formatter<<span class="lifetime">'_</span>>) -> std::fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">KeyError</span> {}
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>KeyError {}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">pub mod </span>test {
+ <span class="kw">use </span>bitcoin::util::bip32;
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
- <span class="kw">pub</span> <span class="kw">const</span> <span class="ident">TEST_ENTROPY</span>: [<span class="ident">u8</span>; <span class="number">32</span>] <span class="op">=</span> [<span class="number">0xAA</span>; <span class="number">32</span>];
+ <span class="kw">pub const </span>TEST_ENTROPY: [u8; <span class="number">32</span>] = [<span class="number">0xAA</span>; <span class="number">32</span>];
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_generate_xprv</span>() {
- <span class="kw">let</span> <span class="ident">generated_xprv</span>: <span class="ident">GeneratedKey</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">bip32::ExtendedPrivKey::generate_with_entropy_default</span>(<span class="ident">TEST_ENTROPY</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_keys_generate_xprv() {
+ <span class="kw">let </span>generated_xprv: GeneratedKey<<span class="kw">_</span>, miniscript::Segwitv0> =
+ bip32::ExtendedPrivKey::generate_with_entropy_default(TEST_ENTROPY).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">generated_xprv</span>.<span class="ident">valid_networks</span>, <span class="ident">any_network</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">generated_xprv</span>.<span class="ident">to_string</span>(), <span class="string">"xprv9s21ZrQH143K4Xr1cJyqTvuL2FWR8eicgY9boWqMBv8MDVUZ65AXHnzBrK1nyomu6wdcabRgmGTaAKawvhAno1V5FowGpTLVx3jxzE5uk3Q"</span>);
+ <span class="macro">assert_eq!</span>(generated_xprv.valid_networks, any_network());
+ <span class="macro">assert_eq!</span>(generated_xprv.to_string(), <span class="string">"xprv9s21ZrQH143K4Xr1cJyqTvuL2FWR8eicgY9boWqMBv8MDVUZ65AXHnzBrK1nyomu6wdcabRgmGTaAKawvhAno1V5FowGpTLVx3jxzE5uk3Q"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_generate_wif</span>() {
- <span class="kw">let</span> <span class="ident">generated_wif</span>: <span class="ident">GeneratedKey</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">miniscript::Segwitv0</span><span class="op">></span> <span class="op">=</span>
- <span class="ident">bitcoin::PrivateKey::generate_with_entropy_default</span>(<span class="ident">TEST_ENTROPY</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_keys_generate_wif() {
+ <span class="kw">let </span>generated_wif: GeneratedKey<<span class="kw">_</span>, miniscript::Segwitv0> =
+ bitcoin::PrivateKey::generate_with_entropy_default(TEST_ENTROPY).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">generated_wif</span>.<span class="ident">valid_networks</span>, <span class="ident">any_network</span>());
+ <span class="macro">assert_eq!</span>(generated_wif.valid_networks, any_network());
<span class="macro">assert_eq!</span>(
- <span class="ident">generated_wif</span>.<span class="ident">to_string</span>(),
- <span class="string">"L2wTu6hQrnDMiFNWA5na6jB12ErGQqtXwqpSL7aWquJaZG8Ai3ch"</span>
- );
+ generated_wif.to_string(),
+ <span class="string">"L2wTu6hQrnDMiFNWA5na6jB12ErGQqtXwqpSL7aWquJaZG8Ai3ch"
+ </span>);
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)]</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_keys_wif_network_bip39</span>() {
- <span class="kw">let</span> <span class="ident">xkey</span>: <span class="ident">ExtendedKey</span> <span class="op">=</span> <span class="ident">bip39::Mnemonic::parse_in</span>(
- <span class="ident">bip39::Language::English</span>,
+ <span class="attr">#[cfg(feature = <span class="string">"keys-bip39"</span>)]
+ #[test]
+ </span><span class="kw">fn </span>test_keys_wif_network_bip39() {
+ <span class="kw">let </span>xkey: ExtendedKey = bip39::Mnemonic::parse_in(
+ bip39::Language::English,
<span class="string">"jelly crash boy whisper mouse ecology tuna soccer memory million news short"</span>,
)
- .<span class="ident">unwrap</span>()
- .<span class="ident">into_extended_key</span>()
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">xprv</span> <span class="op">=</span> <span class="ident">xkey</span>.<span class="ident">into_xprv</span>(<span class="ident">Network::Testnet</span>).<span class="ident">unwrap</span>();
+ .unwrap()
+ .into_extended_key()
+ .unwrap();
+ <span class="kw">let </span>xprv = xkey.into_xprv(Network::Testnet).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">xprv</span>.<span class="ident">network</span>, <span class="ident">Network::Testnet</span>);
+ <span class="macro">assert_eq!</span>(xprv.network, Network::Testnet);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/lib.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script><script defer src="../../source-script.js"></script><script defer src="../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/lib.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../source-files.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="comment">// rustdoc will warn if there are missing docs</span>
-<span class="attribute">#![<span class="ident">warn</span>(<span class="ident">missing_docs</span>)]</span>
-<span class="comment">// only enables the `doc_cfg` feature when</span>
-<span class="comment">// the `docsrs` configuration attribute is defined</span>
-<span class="attribute">#![<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">feature</span>(<span class="ident">doc_cfg</span>))]</span>
-<span class="attribute">#![<span class="ident">cfg_attr</span>(
- <span class="ident">docsrs</span>,
- <span class="ident">doc</span>(<span class="ident">html_logo_url</span> <span class="op">=</span> <span class="string">"https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png"</span>)
-)]</span>
+// rustdoc will warn if there are missing docs
+</span><span class="attr">#![warn(missing_docs)]
+</span><span class="comment">// only enables the `doc_cfg` feature when
+// the `docsrs` configuration attribute is defined
+</span><span class="attr">#![cfg_attr(docsrs, feature(doc_cfg))]
+#![cfg_attr(
+ docsrs,
+ doc(html_logo_url = <span class="string">"https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png"</span>)
+)]
-<span class="doccomment">//! A modern, lightweight, descriptor-based wallet library written in Rust.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # About</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! The BDK library aims to be the core building block for Bitcoin wallets of any kind.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! * It uses [Miniscript](https://github.com/rust-bitcoin/rust-miniscript) to support descriptors with generalized conditions. This exact same library can be used to build</span>
-<span class="doccomment">//! single-sig wallets, multisigs, timelocked contracts and more.</span>
-<span class="doccomment">//! * It supports multiple blockchain backends and databases, allowing developers to choose exactly what's right for their projects.</span>
-<span class="doccomment">//! * It is built to be cross-platform: the core logic works on desktop, mobile, and even WebAssembly.</span>
-<span class="doccomment">//! * It is very easy to extend: developers can implement customized logic for blockchain backends, databases, signers, coin selection, and more, without having to fork and modify this library.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # A Tour of BDK</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! BDK consists of a number of modules that provide a range of functionality</span>
-<span class="doccomment">//! essential for implementing descriptor based Bitcoin wallet applications in Rust. In this</span>
-<span class="doccomment">//! section, we will take a brief tour of BDK, summarizing the major APIs and</span>
-<span class="doccomment">//! their uses.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! The easiest way to get started is to add bdk to your dependencies with the default features.</span>
-<span class="doccomment">//! The default features include a simple key-value database ([`sled`](sled)) to cache</span>
-<span class="doccomment">//! blockchain data and an [electrum](https://docs.rs/electrum-client/) blockchain client to</span>
-<span class="doccomment">//! interact with the bitcoin P2P network.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # Examples</span>
-<span class="attribute"># to support descriptors with generalized conditions. This exact same library can be used to build
+//! single-sig wallets, multisigs, timelocked contracts and more.
+//! * It supports multiple blockchain backends and databases, allowing developers to choose exactly what's right for their projects.
+//! * It is built to be cross-platform: the core logic works on desktop, mobile, and even WebAssembly.
+//! * It is very easy to extend: developers can implement customized logic for blockchain backends, databases, signers, coin selection, and more, without having to fork and modify this library.
+//!
+//! # A Tour of BDK
+//!
+//! BDK consists of a number of modules that provide a range of functionality
+//! essential for implementing descriptor based Bitcoin wallet applications in Rust. In this
+//! section, we will take a brief tour of BDK, summarizing the major APIs and
+//! their uses.
+//!
+//! The easiest way to get started is to add bdk to your dependencies with the default features.
+//! The default features include a simple key-value database ([`sled`](sled)) to cache
+//! blockchain data and an [electrum](https://docs.rs/electrum-client/) blockchain client to
+//! interact with the bitcoin P2P network.
+//!
+//! # Examples
+</span><span class="attr">#![cfg_attr(
+ feature = <span class="string">"electrum"</span>,
+ doc = <span class="string">r##"
## Sync the balance of a descriptor
```no_run
Ok(())
}
```
-"##</span>
-)]</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Generate a few addresses</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ### Example</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! use bdk::{Wallet};</span>
-<span class="doccomment">//! use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">//! use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! fn main() -> Result<(), bdk::Error> {</span>
-<span class="doccomment">//! let wallet = Wallet::new(</span>
-<span class="doccomment">//! "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",</span>
-<span class="doccomment">//! Some("wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"),</span>
-<span class="doccomment">//! bitcoin::Network::Testnet,</span>
-<span class="doccomment">//! MemoryDatabase::default(),</span>
-<span class="doccomment">//! )?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! println!("Address #0: {}", wallet.get_address(New)?);</span>
-<span class="doccomment">//! println!("Address #1: {}", wallet.get_address(New)?);</span>
-<span class="doccomment">//! println!("Address #2: {}", wallet.get_address(New)?);</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Ok(())</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//! ```</span>
-<span class="attribute">#![<span class="ident">cfg_attr</span>(
- <span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>,
- <span class="ident">doc</span> <span class="op">=</span> <span class="string">r##"
+"##
+</span>)]
+</span><span class="doccomment">//!
+//! ## Generate a few addresses
+//!
+//! ### Example
+//! ```
+//! use bdk::{Wallet};
+//! use bdk::database::MemoryDatabase;
+//! use bdk::wallet::AddressIndex::New;
+//!
+//! fn main() -> Result<(), bdk::Error> {
+//! let wallet = Wallet::new(
+//! "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
+//! Some("wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"),
+//! bitcoin::Network::Testnet,
+//! MemoryDatabase::default(),
+//! )?;
+//!
+//! println!("Address #0: {}", wallet.get_address(New)?);
+//! println!("Address #1: {}", wallet.get_address(New)?);
+//! println!("Address #2: {}", wallet.get_address(New)?);
+//!
+//! Ok(())
+//! }
+//! ```
+</span><span class="attr">#![cfg_attr(
+ feature = <span class="string">"electrum"</span>,
+ doc = <span class="string">r##"
## Create a transaction
```no_run
Ok(())
}
```
-"##</span>
-)]</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Sign a transaction</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! use std::str::FromStr;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! use bitcoin::util::psbt::PartiallySignedTransaction as Psbt;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! use bdk::{Wallet, SignOptions};</span>
-<span class="doccomment">//! use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! fn main() -> Result<(), bdk::Error> {</span>
-<span class="doccomment">//! let wallet = Wallet::new(</span>
-<span class="doccomment">//! "wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/0/*)",</span>
-<span class="doccomment">//! Some("wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/1/*)"),</span>
-<span class="doccomment">//! bitcoin::Network::Testnet,</span>
-<span class="doccomment">//! MemoryDatabase::default(),</span>
-<span class="doccomment">//! )?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let psbt = "...";</span>
-<span class="doccomment">//! let mut psbt = Psbt::from_str(psbt)?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let finalized = wallet.sign(&mut psbt, SignOptions::default())?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Ok(())</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # Feature flags</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! BDK uses a set of [feature flags](https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section)</span>
-<span class="doccomment">//! to reduce the amount of compiled code by allowing projects to only enable the features they need.</span>
-<span class="doccomment">//! By default, BDK enables two internal features, `key-value-db` and `electrum`.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! If you are new to BDK we recommended that you use the default features which will enable</span>
-<span class="doccomment">//! basic descriptor wallet functionality. More advanced users can disable the `default` features</span>
-<span class="doccomment">//! (`--no-default-features`) and build the BDK library with only the features you need.</span>
+"##
+</span>)]
+</span><span class="doccomment">//!
+//! ## Sign a transaction
+//!
+//! ```no_run
+//! use std::str::FromStr;
+//!
+//! use bitcoin::util::psbt::PartiallySignedTransaction as Psbt;
+//!
+//! use bdk::{Wallet, SignOptions};
+//! use bdk::database::MemoryDatabase;
+//!
+//! fn main() -> Result<(), bdk::Error> {
+//! let wallet = Wallet::new(
+//! "wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/0/*)",
+//! Some("wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/1/*)"),
+//! bitcoin::Network::Testnet,
+//! MemoryDatabase::default(),
+//! )?;
+//!
+//! let psbt = "...";
+//! let mut psbt = Psbt::from_str(psbt)?;
+//!
+//! let finalized = wallet.sign(&mut psbt, SignOptions::default())?;
+//!
+//! Ok(())
+//! }
+//! ```
+//!
+//! # Feature flags
+//!
+//! BDK uses a set of [feature flags](https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section)
+//! to reduce the amount of compiled code by allowing projects to only enable the features they need.
+//! By default, BDK enables two internal features, `key-value-db` and `electrum`.
+//!
+//! If you are new to BDK we recommended that you use the default features which will enable
+//! basic descriptor wallet functionality. More advanced users can disable the `default` features
+//! (`--no-default-features`) and build the BDK library with only the features you need.
-<span class="doccomment">//! Below is a list of the available feature flags and the additional functionality they provide.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! * `all-keys`: all features for working with bitcoin keys</span>
-<span class="doccomment">//! * `async-interface`: async functions in bdk traits</span>
-<span class="doccomment">//! * `keys-bip39`: [BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) mnemonic codes for generating deterministic keys</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # Internal features</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! These features do not expose any new API, but influence internal implementation aspects of</span>
-<span class="doccomment">//! BDK.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! * `compact_filters`: [`compact_filters`](crate::blockchain::compact_filters) client protocol for interacting with the bitcoin P2P network</span>
-<span class="doccomment">//! * `electrum`: [`electrum`](crate::blockchain::electrum) client protocol for interacting with electrum servers</span>
-<span class="doccomment">//! * `esplora`: [`esplora`](crate::blockchain::esplora) client protocol for interacting with blockstream [electrs](https://github.com/Blockstream/electrs) servers</span>
-<span class="doccomment">//! * `key-value-db`: key value [`database`](crate::database) based on [`sled`](crate::sled) for caching blockchain data</span>
+//! Below is a list of the available feature flags and the additional functionality they provide.
+//!
+//! * `all-keys`: all features for working with bitcoin keys
+//! * `async-interface`: async functions in bdk traits
+//! * `keys-bip39`: [BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) mnemonic codes for generating deterministic keys
+//!
+//! # Internal features
+//!
+//! These features do not expose any new API, but influence internal implementation aspects of
+//! BDK.
+//!
+//! * `compact_filters`: [`compact_filters`](crate::blockchain::compact_filters) client protocol for interacting with the bitcoin P2P network
+//! * `electrum`: [`electrum`](crate::blockchain::electrum) client protocol for interacting with electrum servers
+//! * `esplora`: [`esplora`](crate::blockchain::esplora) client protocol for interacting with blockstream [electrs](https://github.com/Blockstream/electrs) servers
+//! * `key-value-db`: key value [`database`](crate::database) based on [`sled`](crate::sled) for caching blockchain data
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">bitcoin</span>;
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">log</span>;
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">miniscript</span>;
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">serde</span>;
-<span class="attribute">#[<span class="ident">macro_use</span>]</span>
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">serde_json</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"hardware-signer"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">hwi</span>;
+</span><span class="kw">pub extern crate </span>bitcoin;
+<span class="kw">extern crate </span>log;
+<span class="kw">pub extern crate </span>miniscript;
+<span class="kw">extern crate </span>serde;
+<span class="attr">#[macro_use]
+</span><span class="kw">extern crate </span>serde_json;
+<span class="attr">#[cfg(feature = <span class="string">"hardware-signer"</span>)]
+</span><span class="kw">pub extern crate </span>hwi;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">all</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"reqwest"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"ureq"</span>))]</span>
-<span class="macro">compile_error!</span>(<span class="string">"Features reqwest and ureq are mutually exclusive and cannot be enabled together"</span>);
+<span class="attr">#[cfg(all(feature = <span class="string">"reqwest"</span>, feature = <span class="string">"ureq"</span>))]
+</span><span class="macro">compile_error!</span>(<span class="string">"Features reqwest and ureq are mutually exclusive and cannot be enabled together"</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">all</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>))]</span>
-<span class="macro">compile_error!</span>(
- <span class="string">"Features async-interface and electrum are mutually exclusive and cannot be enabled together"</span>
-);
+<span class="attr">#[cfg(all(feature = <span class="string">"async-interface"</span>, feature = <span class="string">"electrum"</span>))]
+</span><span class="macro">compile_error!</span>(
+ <span class="string">"Features async-interface and electrum are mutually exclusive and cannot be enabled together"
+</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">all</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"ureq"</span>))]</span>
-<span class="macro">compile_error!</span>(
- <span class="string">"Features async-interface and ureq are mutually exclusive and cannot be enabled together"</span>
-);
+<span class="attr">#[cfg(all(feature = <span class="string">"async-interface"</span>, feature = <span class="string">"ureq"</span>))]
+</span><span class="macro">compile_error!</span>(
+ <span class="string">"Features async-interface and ureq are mutually exclusive and cannot be enabled together"
+</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">all</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"compact_filters"</span>))]</span>
-<span class="macro">compile_error!</span>(
- <span class="string">"Features async-interface and compact_filters are mutually exclusive and cannot be enabled together"</span>
-);
+<span class="attr">#[cfg(all(feature = <span class="string">"async-interface"</span>, feature = <span class="string">"compact_filters"</span>))]
+</span><span class="macro">compile_error!</span>(
+ <span class="string">"Features async-interface and compact_filters are mutually exclusive and cannot be enabled together"
+</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"keys-bip39"</span>)]</span>
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">bip39</span>;
+<span class="attr">#[cfg(feature = <span class="string">"keys-bip39"</span>)]
+</span><span class="kw">extern crate </span>bip39;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">any</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>, <span class="ident">feature</span> <span class="op">=</span> <span class="string">"async-interface"</span>))]</span>
-<span class="attribute">#[<span class="ident">macro_use</span>]</span>
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">async_trait</span>;
-<span class="attribute">#[<span class="ident">macro_use</span>]</span>
-<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">bdk_macros</span>;
+<span class="attr">#[cfg(any(target_arch = <span class="string">"wasm32"</span>, feature = <span class="string">"async-interface"</span>))]
+#[macro_use]
+</span><span class="kw">extern crate </span>async_trait;
+<span class="attr">#[macro_use]
+</span><span class="kw">extern crate </span>bdk_macros;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"rpc"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">bitcoincore_rpc</span>;
+<span class="attr">#[cfg(feature = <span class="string">"rpc"</span>)]
+</span><span class="kw">pub extern crate </span>bitcoincore_rpc;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"electrum"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">electrum_client</span>;
+<span class="attr">#[cfg(feature = <span class="string">"electrum"</span>)]
+</span><span class="kw">pub extern crate </span>electrum_client;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"esplora"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">esplora_client</span>;
+<span class="attr">#[cfg(feature = <span class="string">"esplora"</span>)]
+</span><span class="kw">pub extern crate </span>esplora_client;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"key-value-db"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">sled</span>;
+<span class="attr">#[cfg(feature = <span class="string">"key-value-db"</span>)]
+</span><span class="kw">pub extern crate </span>sled;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"sqlite"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">rusqlite</span>;
+<span class="attr">#[cfg(feature = <span class="string">"sqlite"</span>)]
+</span><span class="kw">pub extern crate </span>rusqlite;
-<span class="comment">// We should consider putting this under a feature flag but we need the macro in doctests so we need</span>
-<span class="comment">// to wait until https://github.com/rust-lang/rust/issues/67295 is fixed.</span>
-<span class="comment">//</span>
-<span class="comment">// Stuff in here is too rough to document atm</span>
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_use</span>]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">testutils</span>;
+<span class="comment">// We should consider putting this under a feature flag but we need the macro in doctests so we need
+// to wait until https://github.com/rust-lang/rust/issues/67295 is fixed.
+//
+// Stuff in here is too rough to document atm
+</span><span class="attr">#[doc(hidden)]
+#[macro_use]
+</span><span class="kw">pub mod </span>testutils;
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_use</span>]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod</span> <span class="ident">error</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">blockchain</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">database</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">descriptor</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-md-docs"</span>)]</span>
-<span class="kw">mod</span> <span class="ident">doctest</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">keys</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">psbt</span>;
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod</span> <span class="ident">types</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">wallet</span>;
+<span class="attr">#[allow(unused_imports)]
+#[macro_use]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>error;
+<span class="kw">pub mod </span>blockchain;
+<span class="kw">pub mod </span>database;
+<span class="kw">pub mod </span>descriptor;
+<span class="attr">#[cfg(feature = <span class="string">"test-md-docs"</span>)]
+</span><span class="kw">mod </span>doctest;
+<span class="kw">pub mod </span>keys;
+<span class="kw">pub mod </span>psbt;
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>types;
+<span class="kw">pub mod </span>wallet;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">descriptor::template</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">descriptor::HdKeyPaths</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">error::Error</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">types</span>::<span class="kw-2">*</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">wallet::signer</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">wallet::signer::SignOptions</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">wallet::tx_builder::TxBuilder</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">wallet::SyncOptions</span>;
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">wallet::Wallet</span>;
+<span class="kw">pub use </span>descriptor::template;
+<span class="kw">pub use </span>descriptor::HdKeyPaths;
+<span class="kw">pub use </span>error::Error;
+<span class="kw">pub use </span>types::<span class="kw-2">*</span>;
+<span class="kw">pub use </span>wallet::signer;
+<span class="kw">pub use </span>wallet::signer::SignOptions;
+<span class="kw">pub use </span>wallet::tx_builder::TxBuilder;
+<span class="kw">pub use </span>wallet::SyncOptions;
+<span class="kw">pub use </span>wallet::Wallet;
-<span class="doccomment">/// Get the version of BDK at runtime</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">version</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
+<span class="doccomment">/// Get the version of BDK at runtime
+</span><span class="kw">pub fn </span>version() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
<span class="macro">env!</span>(<span class="string">"CARGO_PKG_VERSION"</span>, <span class="string">"unknown"</span>)
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/psbt/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Additional functions on the `rust-bitcoin` `PartiallySignedTransaction` structure.</span>
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::FeeRate</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::psbt::PartiallySignedTransaction</span> <span class="kw">as</span> <span class="ident">Psbt</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::TxOut</span>;
-
-<span class="comment">// TODO upstream the functions here to `rust-bitcoin`?</span>
-
-<span class="doccomment">/// Trait to add functions to extract utxos and calculate fees.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">PsbtUtils</span> {
- <span class="doccomment">/// Get the `TxOut` for the specified input index, if it doesn't exist in the PSBT `None` is returned.</span>
- <span class="kw">fn</span> <span class="ident">get_utxo_for</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">input_index</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span>;
-
- <span class="doccomment">/// The total transaction fee amount, sum of input amounts minus sum of output amounts, in Sats.</span>
- <span class="doccomment">/// If the PSBT is missing a TxOut for an input returns None.</span>
- <span class="kw">fn</span> <span class="ident">fee_amount</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>;
-
- <span class="doccomment">/// The transaction's fee rate. This value will only be accurate if calculated AFTER the</span>
- <span class="doccomment">/// `PartiallySignedTransaction` is finalized and all witness/signature data is added to the</span>
- <span class="doccomment">/// transaction.</span>
- <span class="doccomment">/// If the PSBT is missing a TxOut for an input returns None.</span>
- <span class="kw">fn</span> <span class="ident">fee_rate</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FeeRate</span><span class="op">></span>;
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/psbt/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Additional functions on the `rust-bitcoin` `PartiallySignedTransaction` structure.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::FeeRate;
+<span class="kw">use </span>bitcoin::util::psbt::PartiallySignedTransaction <span class="kw">as </span>Psbt;
+<span class="kw">use </span>bitcoin::TxOut;
+
+<span class="comment">// TODO upstream the functions here to `rust-bitcoin`?
+
+</span><span class="doccomment">/// Trait to add functions to extract utxos and calculate fees.
+</span><span class="kw">pub trait </span>PsbtUtils {
+ <span class="doccomment">/// Get the `TxOut` for the specified input index, if it doesn't exist in the PSBT `None` is returned.
+ </span><span class="kw">fn </span>get_utxo_for(<span class="kw-2">&</span><span class="self">self</span>, input_index: usize) -> <span class="prelude-ty">Option</span><TxOut>;
+
+ <span class="doccomment">/// The total transaction fee amount, sum of input amounts minus sum of output amounts, in Sats.
+ /// If the PSBT is missing a TxOut for an input returns None.
+ </span><span class="kw">fn </span>fee_amount(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><u64>;
+
+ <span class="doccomment">/// The transaction's fee rate. This value will only be accurate if calculated AFTER the
+ /// `PartiallySignedTransaction` is finalized and all witness/signature data is added to the
+ /// transaction.
+ /// If the PSBT is missing a TxOut for an input returns None.
+ </span><span class="kw">fn </span>fee_rate(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><FeeRate>;
}
-<span class="kw">impl</span> <span class="ident">PsbtUtils</span> <span class="kw">for</span> <span class="ident">Psbt</span> {
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::all</span>)]</span> <span class="comment">// We want to allow `manual_map` but it is too new.</span>
- <span class="kw">fn</span> <span class="ident">get_utxo_for</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">input_index</span>: <span class="ident">usize</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">unsigned_tx</span>;
+<span class="kw">impl </span>PsbtUtils <span class="kw">for </span>Psbt {
+ <span class="attr">#[allow(clippy::all)] </span><span class="comment">// We want to allow `manual_map` but it is too new.
+ </span><span class="kw">fn </span>get_utxo_for(<span class="kw-2">&</span><span class="self">self</span>, input_index: usize) -> <span class="prelude-ty">Option</span><TxOut> {
+ <span class="kw">let </span>tx = <span class="kw-2">&</span><span class="self">self</span>.unsigned_tx;
- <span class="kw">if</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>() {
- <span class="kw">return</span> <span class="prelude-val">None</span>;
+ <span class="kw">if </span>input_index >= tx.input.len() {
+ <span class="kw">return </span><span class="prelude-val">None</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">input</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">inputs</span>.<span class="ident">get</span>(<span class="ident">input_index</span>) {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">wit_utxo</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">witness_utxo</span> {
- <span class="prelude-val">Some</span>(<span class="ident">wit_utxo</span>.<span class="ident">clone</span>())
- } <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">in_tx</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">non_witness_utxo</span> {
- <span class="prelude-val">Some</span>(<span class="ident">in_tx</span>.<span class="ident">output</span>[<span class="ident">tx</span>.<span class="ident">input</span>[<span class="ident">input_index</span>].<span class="ident">previous_output</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>].<span class="ident">clone</span>())
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- }
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- }
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(input) = <span class="self">self</span>.inputs.get(input_index) {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(wit_utxo) = <span class="kw-2">&</span>input.witness_utxo {
+ <span class="prelude-val">Some</span>(wit_utxo.clone())
+ } <span class="kw">else if let </span><span class="prelude-val">Some</span>(in_tx) = <span class="kw-2">&</span>input.non_witness_utxo {
+ <span class="prelude-val">Some</span>(in_tx.output[tx.input[input_index].previous_output.vout <span class="kw">as </span>usize].clone())
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
}
- <span class="kw">fn</span> <span class="ident">fee_amount</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">unsigned_tx</span>;
- <span class="kw">let</span> <span class="ident">utxos</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TxOut</span><span class="op">></span><span class="op">></span> <span class="op">=</span> (<span class="number">0</span>..<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>()).<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">get_utxo_for</span>(<span class="ident">i</span>)).<span class="ident">collect</span>();
+ <span class="kw">fn </span>fee_amount(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><u64> {
+ <span class="kw">let </span>tx = <span class="kw-2">&</span><span class="self">self</span>.unsigned_tx;
+ <span class="kw">let </span>utxos: <span class="prelude-ty">Option</span><Vec<TxOut>> = (<span class="number">0</span>..tx.input.len()).map(|i| <span class="self">self</span>.get_utxo_for(i)).collect();
- <span class="ident">utxos</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">inputs</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">input_amount</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">value</span>).<span class="ident">sum</span>();
- <span class="kw">let</span> <span class="ident">output_amount</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">o</span><span class="op">|</span> <span class="ident">o</span>.<span class="ident">value</span>).<span class="ident">sum</span>();
- <span class="ident">input_amount</span>
- .<span class="ident">checked_sub</span>(<span class="ident">output_amount</span>)
- .<span class="ident">expect</span>(<span class="string">"input amount must be greater than output amount"</span>)
+ utxos.map(|inputs| {
+ <span class="kw">let </span>input_amount: u64 = inputs.iter().map(|i| i.value).sum();
+ <span class="kw">let </span>output_amount: u64 = <span class="self">self</span>.unsigned_tx.output.iter().map(|o| o.value).sum();
+ input_amount
+ .checked_sub(output_amount)
+ .expect(<span class="string">"input amount must be greater than output amount"</span>)
})
}
- <span class="kw">fn</span> <span class="ident">fee_rate</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FeeRate</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">fee_amount</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fee_amount</span>();
- <span class="ident">fee_amount</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">fee</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">weight</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">clone</span>().<span class="ident">extract_tx</span>().<span class="ident">weight</span>();
- <span class="ident">FeeRate::from_wu</span>(<span class="ident">fee</span>, <span class="ident">weight</span>)
+ <span class="kw">fn </span>fee_rate(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><FeeRate> {
+ <span class="kw">let </span>fee_amount = <span class="self">self</span>.fee_amount();
+ fee_amount.map(|fee| {
+ <span class="kw">let </span>weight = <span class="self">self</span>.clone().extract_tx().weight();
+ FeeRate::from_wu(fee, weight)
})
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin::TxIn</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::psbt::Psbt</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::AddressIndex</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::AddressIndex::New</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet</span>::{<span class="ident">get_funded_wallet</span>, <span class="ident">test::get_test_wpkh</span>};
- <span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">psbt</span>, <span class="ident">FeeRate</span>, <span class="ident">SignOptions</span>};
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
-
- <span class="comment">// from bip 174</span>
- <span class="kw">const</span> <span class="ident">PSBT_STR</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEHakcwRAIgR1lmF5fAGwNrJZKJSGhiGDR9iYZLcZ4ff89X0eURZYcCIFMJ6r9Wqk2Ikf/REf3xM286KdqGbX+EhtdVRs7tr5MZASEDXNxh/HupccC1AaZGoqg7ECy0OIEhfKaC3Ibi1z+ogpIAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIAAAA"</span>;
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InputIndexOutOfRange"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_malformed_psbt_input_legacy</span>() {
- <span class="kw">let</span> <span class="ident">psbt_bip</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">PSBT_STR</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">send_to</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">send_to</span>.<span class="ident">script_pubkey</span>(), <span class="number">10_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">push</span>(<span class="ident">psbt_bip</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">clone</span>());
- <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span><span class="kw">crate</span>::bitcoin::TxIn;
+ <span class="kw">use </span><span class="kw">crate</span>::psbt::Psbt;
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::AddressIndex;
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::AddressIndex::New;
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::{get_funded_wallet, test::get_test_wpkh};
+ <span class="kw">use crate</span>::{psbt, FeeRate, SignOptions};
+ <span class="kw">use </span>std::str::FromStr;
+
+ <span class="comment">// from bip 174
+ </span><span class="kw">const </span>PSBT_STR: <span class="kw-2">&</span>str = <span class="string">"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEHakcwRAIgR1lmF5fAGwNrJZKJSGhiGDR9iYZLcZ4ff89X0eURZYcCIFMJ6r9Wqk2Ikf/REf3xM286KdqGbX+EhtdVRs7tr5MZASEDXNxh/HupccC1AaZGoqg7ECy0OIEhfKaC3Ibi1z+ogpIAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIAAAA"</span>;
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InputIndexOutOfRange"</span>)]
+ </span><span class="kw">fn </span>test_psbt_malformed_psbt_input_legacy() {
+ <span class="kw">let </span>psbt_bip = Psbt::from_str(PSBT_STR).unwrap();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>send_to = wallet.get_address(AddressIndex::New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(send_to.script_pubkey(), <span class="number">10_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ psbt.inputs.push(psbt_bip.inputs[<span class="number">0</span>].clone());
+ <span class="kw">let </span>options = SignOptions {
+ trust_witness_utxo: <span class="bool-val">true</span>,
+ ..Default::default()
};
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">options</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let _ </span>= wallet.sign(<span class="kw-2">&mut </span>psbt, options).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InputIndexOutOfRange"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_malformed_psbt_input_segwit</span>() {
- <span class="kw">let</span> <span class="ident">psbt_bip</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">PSBT_STR</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">send_to</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">send_to</span>.<span class="ident">script_pubkey</span>(), <span class="number">10_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">push</span>(<span class="ident">psbt_bip</span>.<span class="ident">inputs</span>[<span class="number">1</span>].<span class="ident">clone</span>());
- <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InputIndexOutOfRange"</span>)]
+ </span><span class="kw">fn </span>test_psbt_malformed_psbt_input_segwit() {
+ <span class="kw">let </span>psbt_bip = Psbt::from_str(PSBT_STR).unwrap();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>send_to = wallet.get_address(AddressIndex::New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(send_to.script_pubkey(), <span class="number">10_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ psbt.inputs.push(psbt_bip.inputs[<span class="number">1</span>].clone());
+ <span class="kw">let </span>options = SignOptions {
+ trust_witness_utxo: <span class="bool-val">true</span>,
+ ..Default::default()
};
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">options</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let _ </span>= wallet.sign(<span class="kw-2">&mut </span>psbt, options).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InputIndexOutOfRange"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_malformed_tx_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">send_to</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">send_to</span>.<span class="ident">script_pubkey</span>(), <span class="number">10_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">push</span>(<span class="ident">TxIn::default</span>());
- <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InputIndexOutOfRange"</span>)]
+ </span><span class="kw">fn </span>test_psbt_malformed_tx_input() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>send_to = wallet.get_address(AddressIndex::New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(send_to.script_pubkey(), <span class="number">10_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ psbt.unsigned_tx.input.push(TxIn::default());
+ <span class="kw">let </span>options = SignOptions {
+ trust_witness_utxo: <span class="bool-val">true</span>,
+ ..Default::default()
};
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">options</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let _ </span>= wallet.sign(<span class="kw-2">&mut </span>psbt, options).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_sign_with_finalized</span>() {
- <span class="kw">let</span> <span class="ident">psbt_bip</span> <span class="op">=</span> <span class="ident">Psbt::from_str</span>(<span class="ident">PSBT_STR</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">send_to</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">send_to</span>.<span class="ident">script_pubkey</span>(), <span class="number">10_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// add a finalized input</span>
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">push</span>(<span class="ident">psbt_bip</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">clone</span>());
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>
- .<span class="ident">input</span>
- .<span class="ident">push</span>(<span class="ident">psbt_bip</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">clone</span>());
-
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>()).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_psbt_sign_with_finalized() {
+ <span class="kw">let </span>psbt_bip = Psbt::from_str(PSBT_STR).unwrap();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>send_to = wallet.get_address(AddressIndex::New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(send_to.script_pubkey(), <span class="number">10_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// add a finalized input
+ </span>psbt.inputs.push(psbt_bip.inputs[<span class="number">0</span>].clone());
+ psbt.unsigned_tx
+ .input
+ .push(psbt_bip.unsigned_tx.input[<span class="number">0</span>].clone());
+
+ <span class="kw">let _ </span>= wallet.sign(<span class="kw-2">&mut </span>psbt, SignOptions::default()).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_fee_rate_with_witness_utxo</span>() {
- <span class="kw">use</span> <span class="ident">psbt::PsbtUtils</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_psbt_fee_rate_with_witness_utxo() {
+ <span class="kw">use </span>psbt::PsbtUtils;
- <span class="kw">let</span> <span class="ident">expected_fee_rate</span> <span class="op">=</span> <span class="number">1.2345</span>;
+ <span class="kw">let </span>expected_fee_rate = <span class="number">1.2345</span>;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">expected_fee_rate</span>));
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fee_amount</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">fee_amount</span>();
- <span class="macro">assert!</span>(<span class="ident">fee_amount</span>.<span class="ident">is_some</span>());
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ builder.fee_rate(FeeRate::from_sat_per_vb(expected_fee_rate));
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ <span class="kw">let </span>fee_amount = psbt.fee_amount();
+ <span class="macro">assert!</span>(fee_amount.is_some());
- <span class="kw">let</span> <span class="ident">unfinalized_fee_rate</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">fee_rate</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>unfinalized_fee_rate = psbt.fee_rate().unwrap();
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
- <span class="kw">let</span> <span class="ident">finalized_fee_rate</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">fee_rate</span>().<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized_fee_rate</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">></span><span class="op">=</span> <span class="ident">expected_fee_rate</span>);
- <span class="macro">assert!</span>(<span class="ident">finalized_fee_rate</span>.<span class="ident">as_sat_per_vb</span>() <span class="op"><</span> <span class="ident">unfinalized_fee_rate</span>.<span class="ident">as_sat_per_vb</span>());
+ <span class="kw">let </span>finalized_fee_rate = psbt.fee_rate().unwrap();
+ <span class="macro">assert!</span>(finalized_fee_rate.as_sat_per_vb() >= expected_fee_rate);
+ <span class="macro">assert!</span>(finalized_fee_rate.as_sat_per_vb() < unfinalized_fee_rate.as_sat_per_vb());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_fee_rate_with_nonwitness_utxo</span>() {
- <span class="kw">use</span> <span class="ident">psbt::PsbtUtils</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_psbt_fee_rate_with_nonwitness_utxo() {
+ <span class="kw">use </span>psbt::PsbtUtils;
- <span class="kw">let</span> <span class="ident">expected_fee_rate</span> <span class="op">=</span> <span class="number">1.2345</span>;
+ <span class="kw">let </span>expected_fee_rate = <span class="number">1.2345</span>;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">expected_fee_rate</span>));
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fee_amount</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">fee_amount</span>();
- <span class="macro">assert!</span>(<span class="ident">fee_amount</span>.<span class="ident">is_some</span>());
- <span class="kw">let</span> <span class="ident">unfinalized_fee_rate</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">fee_rate</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ builder.fee_rate(FeeRate::from_sat_per_vb(expected_fee_rate));
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ <span class="kw">let </span>fee_amount = psbt.fee_amount();
+ <span class="macro">assert!</span>(fee_amount.is_some());
+ <span class="kw">let </span>unfinalized_fee_rate = psbt.fee_rate().unwrap();
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
- <span class="kw">let</span> <span class="ident">finalized_fee_rate</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">fee_rate</span>().<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized_fee_rate</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">></span><span class="op">=</span> <span class="ident">expected_fee_rate</span>);
- <span class="macro">assert!</span>(<span class="ident">finalized_fee_rate</span>.<span class="ident">as_sat_per_vb</span>() <span class="op"><</span> <span class="ident">unfinalized_fee_rate</span>.<span class="ident">as_sat_per_vb</span>());
+ <span class="kw">let </span>finalized_fee_rate = psbt.fee_rate().unwrap();
+ <span class="macro">assert!</span>(finalized_fee_rate.as_sat_per_vb() >= expected_fee_rate);
+ <span class="macro">assert!</span>(finalized_fee_rate.as_sat_per_vb() < unfinalized_fee_rate.as_sat_per_vb());
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_psbt_fee_rate_with_missing_txout</span>() {
- <span class="kw">use</span> <span class="ident">psbt::PsbtUtils</span>;
-
- <span class="kw">let</span> <span class="ident">expected_fee_rate</span> <span class="op">=</span> <span class="number">1.2345</span>;
-
- <span class="kw">let</span> (<span class="ident">wpkh_wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wpkh_wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wpkh_wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">expected_fee_rate</span>));
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">wpkh_psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="ident">wpkh_psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="ident">wpkh_psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="macro">assert!</span>(<span class="ident">wpkh_psbt</span>.<span class="ident">fee_amount</span>().<span class="ident">is_none</span>());
- <span class="macro">assert!</span>(<span class="ident">wpkh_psbt</span>.<span class="ident">fee_rate</span>().<span class="ident">is_none</span>());
-
- <span class="kw">let</span> (<span class="ident">pkh_wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">pkh_wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">pkh_wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">expected_fee_rate</span>));
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">pkh_psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="ident">pkh_psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="macro">assert!</span>(<span class="ident">pkh_psbt</span>.<span class="ident">fee_amount</span>().<span class="ident">is_none</span>());
- <span class="macro">assert!</span>(<span class="ident">pkh_psbt</span>.<span class="ident">fee_rate</span>().<span class="ident">is_none</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_psbt_fee_rate_with_missing_txout() {
+ <span class="kw">use </span>psbt::PsbtUtils;
+
+ <span class="kw">let </span>expected_fee_rate = <span class="number">1.2345</span>;
+
+ <span class="kw">let </span>(wpkh_wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wpkh_wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wpkh_wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ builder.fee_rate(FeeRate::from_sat_per_vb(expected_fee_rate));
+ <span class="kw">let </span>(<span class="kw-2">mut </span>wpkh_psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ wpkh_psbt.inputs[<span class="number">0</span>].witness_utxo = <span class="prelude-val">None</span>;
+ wpkh_psbt.inputs[<span class="number">0</span>].non_witness_utxo = <span class="prelude-val">None</span>;
+ <span class="macro">assert!</span>(wpkh_psbt.fee_amount().is_none());
+ <span class="macro">assert!</span>(wpkh_psbt.fee_rate().is_none());
+
+ <span class="kw">let </span>(pkh_wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = pkh_wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = pkh_wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ builder.fee_rate(FeeRate::from_sat_per_vb(expected_fee_rate));
+ <span class="kw">let </span>(<span class="kw-2">mut </span>pkh_psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ pkh_psbt.inputs[<span class="number">0</span>].non_witness_utxo = <span class="prelude-val">None</span>;
+ <span class="macro">assert!</span>(pkh_psbt.fee_amount().is_none());
+ <span class="macro">assert!</span>(pkh_psbt.fee_rate().is_none());
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/testutils/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">missing_docs</span>)]</span>
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-blockchains"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">blockchain_tests</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-blockchains"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">configurable_blockchain_tests</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Address</span>, <span class="ident">Txid</span>};
-
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TestIncomingInput</span> {
- <span class="kw">pub</span> <span class="ident">txid</span>: <span class="ident">Txid</span>,
- <span class="kw">pub</span> <span class="ident">vout</span>: <span class="ident">u32</span>,
- <span class="kw">pub</span> <span class="ident">sequence</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/testutils/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+</span><span class="attr">#![allow(missing_docs)]
+
+#[cfg(test)]
+#[cfg(feature = <span class="string">"test-blockchains"</span>)]
+</span><span class="kw">pub mod </span>blockchain_tests;
+
+<span class="attr">#[cfg(test)]
+#[cfg(feature = <span class="string">"test-blockchains"</span>)]
+</span><span class="kw">pub mod </span>configurable_blockchain_tests;
+
+<span class="kw">use </span>bitcoin::{Address, Txid};
+
+<span class="attr">#[derive(Clone, Debug)]
+</span><span class="kw">pub struct </span>TestIncomingInput {
+ <span class="kw">pub </span>txid: Txid,
+ <span class="kw">pub </span>vout: u32,
+ <span class="kw">pub </span>sequence: <span class="prelude-ty">Option</span><u32>,
}
-<span class="kw">impl</span> <span class="ident">TestIncomingInput</span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">txid</span>: <span class="ident">Txid</span>, <span class="ident">vout</span>: <span class="ident">u32</span>, <span class="ident">sequence</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>) -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="ident">txid</span>,
- <span class="ident">vout</span>,
- <span class="ident">sequence</span>,
+<span class="kw">impl </span>TestIncomingInput {
+ <span class="kw">pub fn </span>new(txid: Txid, vout: u32, sequence: <span class="prelude-ty">Option</span><u32>) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ txid,
+ vout,
+ sequence,
}
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-blockchains"</span>)]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">into_raw_tx_input</span>(<span class="self">self</span>) -> <span class="ident">bitcoincore_rpc::json::CreateRawTransactionInput</span> {
- <span class="ident">bitcoincore_rpc::json::CreateRawTransactionInput</span> {
- <span class="ident">txid</span>: <span class="self">self</span>.<span class="ident">txid</span>,
- <span class="ident">vout</span>: <span class="self">self</span>.<span class="ident">vout</span>,
- <span class="ident">sequence</span>: <span class="self">self</span>.<span class="ident">sequence</span>,
+ <span class="attr">#[cfg(feature = <span class="string">"test-blockchains"</span>)]
+ </span><span class="kw">pub fn </span>into_raw_tx_input(<span class="self">self</span>) -> bitcoincore_rpc::json::CreateRawTransactionInput {
+ bitcoincore_rpc::json::CreateRawTransactionInput {
+ txid: <span class="self">self</span>.txid,
+ vout: <span class="self">self</span>.vout,
+ sequence: <span class="self">self</span>.sequence,
}
}
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TestIncomingOutput</span> {
- <span class="kw">pub</span> <span class="ident">value</span>: <span class="ident">u64</span>,
- <span class="kw">pub</span> <span class="ident">to_address</span>: <span class="ident">String</span>,
+<span class="attr">#[derive(Clone, Debug)]
+</span><span class="kw">pub struct </span>TestIncomingOutput {
+ <span class="kw">pub </span>value: u64,
+ <span class="kw">pub </span>to_address: String,
}
-<span class="kw">impl</span> <span class="ident">TestIncomingOutput</span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">value</span>: <span class="ident">u64</span>, <span class="ident">to_address</span>: <span class="ident">Address</span>) -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="ident">value</span>,
- <span class="ident">to_address</span>: <span class="ident">to_address</span>.<span class="ident">to_string</span>(),
+<span class="kw">impl </span>TestIncomingOutput {
+ <span class="kw">pub fn </span>new(value: u64, to_address: Address) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ value,
+ to_address: to_address.to_string(),
}
}
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TestIncomingTx</span> {
- <span class="kw">pub</span> <span class="ident">input</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TestIncomingInput</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">output</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TestIncomingOutput</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">min_confirmations</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">locktime</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">i64</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">replaceable</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>,
+<span class="attr">#[derive(Clone, Debug)]
+</span><span class="kw">pub struct </span>TestIncomingTx {
+ <span class="kw">pub </span>input: Vec<TestIncomingInput>,
+ <span class="kw">pub </span>output: Vec<TestIncomingOutput>,
+ <span class="kw">pub </span>min_confirmations: <span class="prelude-ty">Option</span><u64>,
+ <span class="kw">pub </span>locktime: <span class="prelude-ty">Option</span><i64>,
+ <span class="kw">pub </span>replaceable: <span class="prelude-ty">Option</span><bool>,
}
-<span class="kw">impl</span> <span class="ident">TestIncomingTx</span> {
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(
- <span class="ident">input</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TestIncomingInput</span><span class="op">></span>,
- <span class="ident">output</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">TestIncomingOutput</span><span class="op">></span>,
- <span class="ident">min_confirmations</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
- <span class="ident">locktime</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">i64</span><span class="op">></span>,
- <span class="ident">replaceable</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span>,
- ) -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="ident">input</span>,
- <span class="ident">output</span>,
- <span class="ident">min_confirmations</span>,
- <span class="ident">locktime</span>,
- <span class="ident">replaceable</span>,
+<span class="kw">impl </span>TestIncomingTx {
+ <span class="kw">pub fn </span>new(
+ input: Vec<TestIncomingInput>,
+ output: Vec<TestIncomingOutput>,
+ min_confirmations: <span class="prelude-ty">Option</span><u64>,
+ locktime: <span class="prelude-ty">Option</span><i64>,
+ replaceable: <span class="prelude-ty">Option</span><bool>,
+ ) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ input,
+ output,
+ min_confirmations,
+ locktime,
+ replaceable,
}
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_input</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">input</span>: <span class="ident">TestIncomingInput</span>) {
- <span class="self">self</span>.<span class="ident">input</span>.<span class="ident">push</span>(<span class="ident">input</span>);
+ <span class="kw">pub fn </span>add_input(<span class="kw-2">&mut </span><span class="self">self</span>, input: TestIncomingInput) {
+ <span class="self">self</span>.input.push(input);
}
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_output</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">output</span>: <span class="ident">TestIncomingOutput</span>) {
- <span class="self">self</span>.<span class="ident">output</span>.<span class="ident">push</span>(<span class="ident">output</span>);
+ <span class="kw">pub fn </span>add_output(<span class="kw-2">&mut </span><span class="self">self</span>, output: TestIncomingOutput) {
+ <span class="self">self</span>.output.push(output);
}
}
-<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span>
-<span class="attribute">#[<span class="ident">macro_export</span>]</span>
-<span class="macro">macro_rules!</span> <span class="ident">testutils</span> {
- ( @<span class="ident">external</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>:<span class="ident">expr</span> ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
+<span class="attr">#[doc(hidden)]
+#[macro_export]
+</span><span class="macro">macro_rules! </span>testutils {
+ ( @external <span class="macro-nonterminal">$descriptors</span>:expr, <span class="macro-nonterminal">$child</span>:expr ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{Descriptor, DescriptorPublicKey};
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">parsed</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::parse_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="kw-2">&</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>.<span class="number">0</span>).<span class="ident">expect</span>(<span class="string">"Failed to parse descriptor in `testutils!(@external)`"</span>).<span class="number">0</span>;
- <span class="ident">parsed</span>.<span class="ident">at_derivation_index</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>).<span class="ident">address</span>(<span class="ident">bitcoin::Network::Regtest</span>).<span class="ident">expect</span>(<span class="string">"No address form"</span>)
+ <span class="kw">let </span>parsed = Descriptor::<DescriptorPublicKey>::parse_descriptor(<span class="kw-2">&</span>secp, <span class="kw-2">&</span><span class="macro-nonterminal">$descriptors</span>.<span class="number">0</span>).expect(<span class="string">"Failed to parse descriptor in `testutils!(@external)`"</span>).<span class="number">0</span>;
+ parsed.at_derivation_index(<span class="macro-nonterminal">$child</span>).address(bitcoin::Network::Regtest).expect(<span class="string">"No address form"</span>)
});
- ( @<span class="ident">internal</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>:<span class="ident">expr</span> ) => ({
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::Secp256k1</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor</span>::{<span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>};
+ ( @internal <span class="macro-nonterminal">$descriptors</span>:expr, <span class="macro-nonterminal">$child</span>:expr ) => ({
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::bitcoin::secp256k1::Secp256k1</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor</span>::{Descriptor, DescriptorPublicKey};
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
+ <span class="kw">let </span>secp = Secp256k1::new();
- <span class="kw">let</span> <span class="ident">parsed</span> <span class="op">=</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span><span class="ident">::parse_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="kw-2">&</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>.<span class="number">1</span>.<span class="ident">expect</span>(<span class="string">"Missing internal descriptor"</span>)).<span class="ident">expect</span>(<span class="string">"Failed to parse descriptor in `testutils!(@internal)`"</span>).<span class="number">0</span>;
- <span class="ident">parsed</span>.<span class="ident">at_derivation_index</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>).<span class="ident">address</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Network::Regtest</span>).<span class="ident">expect</span>(<span class="string">"No address form"</span>)
+ <span class="kw">let </span>parsed = Descriptor::<DescriptorPublicKey>::parse_descriptor(<span class="kw-2">&</span>secp, <span class="kw-2">&</span><span class="macro-nonterminal">$descriptors</span>.<span class="number">1</span>.expect(<span class="string">"Missing internal descriptor"</span>)).expect(<span class="string">"Failed to parse descriptor in `testutils!(@internal)`"</span>).<span class="number">0</span>;
+ parsed.at_derivation_index(<span class="macro-nonterminal">$child</span>).address(<span class="macro-nonterminal">$crate::bitcoin::Network::Regtest</span>).expect(<span class="string">"No address form"</span>)
});
- ( @<span class="ident">e</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>:<span class="ident">expr</span> ) => ({ <span class="macro">testutils!</span>(@<span class="ident">external</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>) });
- ( @<span class="ident">i</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>:<span class="ident">expr</span> ) => ({ <span class="macro">testutils!</span>(@<span class="ident">internal</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">descriptors</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">child</span>) });
- ( @<span class="ident">addr</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">addr</span>:<span class="ident">expr</span> ) => ({ <span class="macro-nonterminal">$</span><span class="macro-nonterminal">addr</span> });
+ ( @e <span class="macro-nonterminal">$descriptors</span>:expr, <span class="macro-nonterminal">$child</span>:expr ) => ({ <span class="macro">testutils!</span>(@external <span class="macro-nonterminal">$descriptors</span>, <span class="macro-nonterminal">$child</span>) });
+ ( @i <span class="macro-nonterminal">$descriptors</span>:expr, <span class="macro-nonterminal">$child</span>:expr ) => ({ <span class="macro">testutils!</span>(@internal <span class="macro-nonterminal">$descriptors</span>, <span class="macro-nonterminal">$child</span>) });
+ ( @addr <span class="macro-nonterminal">$addr</span>:expr ) => ({ <span class="macro-nonterminal">$addr </span>});
- ( @<span class="ident">tx</span> ( $( ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">addr</span>:<span class="ident">tt</span> )<span class="op">*</span> ) => <span class="macro-nonterminal">$</span><span class="macro-nonterminal">amount</span>:<span class="ident">expr</span> ),<span class="op">+</span> ) $( ( @<span class="ident">inputs</span> $( (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">txid</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">vout</span>:<span class="ident">expr</span>) ),<span class="op">+</span> ) )<span class="question-mark">?</span> $( ( @<span class="ident">locktime</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">locktime</span>:<span class="ident">expr</span> ) )<span class="question-mark">?</span> $( ( @<span class="ident">confirmations</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">confirmations</span>:<span class="ident">expr</span> ) )<span class="question-mark">?</span> $( ( @<span class="ident">replaceable</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">replaceable</span>:<span class="ident">expr</span> ) )<span class="question-mark">?</span> ) => ({
- <span class="kw">let</span> <span class="ident">outs</span> <span class="op">=</span> <span class="macro">vec!</span>[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::testutils::TestIncomingOutput::new</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">amount</span>, <span class="macro">testutils!</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">addr</span>)<span class="op">*</span> ))),<span class="op">+</span>];
- <span class="kw">let</span> <span class="ident">_ins</span>: <span class="ident">Vec</span><span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::testutils::TestIncomingInput</span><span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
+ ( @tx ( $( ( $( <span class="macro-nonterminal">$addr</span>:tt )* ) => <span class="macro-nonterminal">$amount</span>:expr ),+ ) $( ( @inputs $( (<span class="macro-nonterminal">$txid</span>:expr, <span class="macro-nonterminal">$vout</span>:expr) ),+ ) )<span class="question-mark">? </span>$( ( @locktime <span class="macro-nonterminal">$locktime</span>:expr ) )<span class="question-mark">? </span>$( ( @confirmations <span class="macro-nonterminal">$confirmations</span>:expr ) )<span class="question-mark">? </span>$( ( @replaceable <span class="macro-nonterminal">$replaceable</span>:expr ) )<span class="question-mark">? </span>) => ({
+ <span class="kw">let </span>outs = <span class="macro">vec!</span>[$( <span class="macro-nonterminal">$crate::testutils::TestIncomingOutput::new</span>(<span class="macro-nonterminal">$amount</span>, <span class="macro">testutils!</span>( $(<span class="macro-nonterminal">$addr</span>)* ))),+];
+ <span class="kw">let </span>_ins: Vec<<span class="macro-nonterminal">$crate::testutils::TestIncomingInput</span>> = <span class="macro">vec!</span>[];
$(
- <span class="kw">let</span> <span class="ident">_ins</span> <span class="op">=</span> <span class="macro">vec!</span>[$( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::testutils::TestIncomingInput</span> { <span class="ident">txid</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">txid</span>, <span class="ident">vout</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">vout</span>, <span class="ident">sequence</span>: <span class="prelude-val">None</span> }),<span class="op">+</span>];
- )<span class="question-mark">?</span>
+ <span class="kw">let </span>_ins = <span class="macro">vec!</span>[$( <span class="macro-nonterminal">$crate::testutils::TestIncomingInput </span>{ txid: <span class="macro-nonterminal">$txid</span>, vout: <span class="macro-nonterminal">$vout</span>, sequence: <span class="prelude-val">None </span>}),+];
+ )<span class="question-mark">?
- <span class="kw">let</span> <span class="ident">locktime</span> <span class="op">=</span> <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">i64</span><span class="op">></span>$(.<span class="ident">or</span>(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">locktime</span>)))<span class="question-mark">?</span>;
+ </span><span class="kw">let </span>locktime = <span class="prelude-val">None</span>::<i64>$(.or(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$locktime</span>)))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">min_confirmations</span> <span class="op">=</span> <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">u64</span><span class="op">></span>$(.<span class="ident">or</span>(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">confirmations</span>)))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">replaceable</span> <span class="op">=</span> <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">bool</span><span class="op">></span>$(.<span class="ident">or</span>(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">replaceable</span>)))<span class="question-mark">?</span>;
+ <span class="kw">let </span>min_confirmations = <span class="prelude-val">None</span>::<u64>$(.or(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$confirmations</span>)))<span class="question-mark">?</span>;
+ <span class="kw">let </span>replaceable = <span class="prelude-val">None</span>::<bool>$(.or(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$replaceable</span>)))<span class="question-mark">?</span>;
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::testutils::TestIncomingTx::new</span>(<span class="ident">_ins</span>, <span class="ident">outs</span>, <span class="ident">min_confirmations</span>, <span class="ident">locktime</span>, <span class="ident">replaceable</span>)
+ <span class="macro-nonterminal">$crate::testutils::TestIncomingTx::new</span>(_ins, outs, min_confirmations, locktime, replaceable)
});
- ( @<span class="ident">literal</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>:<span class="ident">expr</span> ) => ({
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key</span>.<span class="ident">to_string</span>();
- (<span class="ident">key</span>, <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>, <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>)
+ ( @literal <span class="macro-nonterminal">$key</span>:expr ) => ({
+ <span class="kw">let </span>key = <span class="macro-nonterminal">$key</span>.to_string();
+ (key, <span class="prelude-val">None</span>::<String>, <span class="prelude-val">None</span>::<String>)
});
- ( @<span class="ident">generate_xprv</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">external_path</span>:<span class="ident">expr</span> )<span class="question-mark">?</span> $( ,<span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_path</span>:<span class="ident">expr</span> )<span class="question-mark">?</span> ) => ({
- <span class="kw">use</span> <span class="ident">rand::Rng</span>;
+ ( @generate_xprv $( <span class="macro-nonterminal">$external_path</span>:expr )<span class="question-mark">? </span>$( ,<span class="macro-nonterminal">$internal_path</span>:expr )<span class="question-mark">? </span>) => ({
+ <span class="kw">use </span>rand::Rng;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">seed</span> <span class="op">=</span> [<span class="number">0u8</span>; <span class="number">32</span>];
- <span class="ident">rand::thread_rng</span>().<span class="ident">fill</span>(<span class="kw-2">&mut</span> <span class="ident">seed</span>[..]);
+ <span class="kw">let </span><span class="kw-2">mut </span>seed = [<span class="number">0u8</span>; <span class="number">32</span>];
+ rand::thread_rng().fill(<span class="kw-2">&mut </span>seed[..]);
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::util::bip32::ExtendedPrivKey::new_master</span>(
- <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Network::Testnet</span>,
- <span class="kw-2">&</span><span class="ident">seed</span>,
+ <span class="kw">let </span>key = <span class="macro-nonterminal">$crate::bitcoin::util::bip32::ExtendedPrivKey::new_master</span>(
+ <span class="macro-nonterminal">$crate::bitcoin::Network::Testnet</span>,
+ <span class="kw-2">&</span>seed,
);
- <span class="kw">let</span> <span class="ident">external_path</span> <span class="op">=</span> <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>$(.<span class="ident">or</span>(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">external_path</span>.<span class="ident">to_string</span>())))<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">internal_path</span> <span class="op">=</span> <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>$(.<span class="ident">or</span>(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_path</span>.<span class="ident">to_string</span>())))<span class="question-mark">?</span>;
+ <span class="kw">let </span>external_path = <span class="prelude-val">None</span>::<String>$(.or(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$external_path</span>.to_string())))<span class="question-mark">?</span>;
+ <span class="kw">let </span>internal_path = <span class="prelude-val">None</span>::<String>$(.or(<span class="prelude-val">Some</span>(<span class="macro-nonterminal">$internal_path</span>.to_string())))<span class="question-mark">?</span>;
- (<span class="ident">key</span>.<span class="ident">unwrap</span>().<span class="ident">to_string</span>(), <span class="ident">external_path</span>, <span class="ident">internal_path</span>)
+ (key.unwrap().to_string(), external_path, internal_path)
});
- ( @<span class="ident">generate_wif</span> ) => ({
- <span class="kw">use</span> <span class="ident">rand::Rng</span>;
+ ( @generate_wif ) => ({
+ <span class="kw">use </span>rand::Rng;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span> <span class="op">=</span> [<span class="number">0u8</span>; <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::constants::SECRET_KEY_SIZE</span>];
- <span class="ident">rand::thread_rng</span>().<span class="ident">fill</span>(<span class="kw-2">&mut</span> <span class="ident">key</span>[..]);
+ <span class="kw">let </span><span class="kw-2">mut </span>key = [<span class="number">0u8</span>; <span class="macro-nonterminal">$crate::bitcoin::secp256k1::constants::SECRET_KEY_SIZE</span>];
+ rand::thread_rng().fill(<span class="kw-2">&mut </span>key[..]);
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::PrivateKey</span> {
- <span class="ident">compressed</span>: <span class="bool-val">true</span>,
- <span class="ident">network</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::Network::Testnet</span>,
- <span class="ident">key</span>: <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::bitcoin::secp256k1::SecretKey::from_slice</span>(<span class="kw-2">&</span><span class="ident">key</span>).<span class="ident">unwrap</span>(),
- }.<span class="ident">to_string</span>(), <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>, <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>)
+ (<span class="macro-nonterminal">$crate::bitcoin::PrivateKey </span>{
+ compressed: <span class="bool-val">true</span>,
+ network: <span class="macro-nonterminal">$crate::bitcoin::Network::Testnet</span>,
+ key: <span class="macro-nonterminal">$crate::bitcoin::secp256k1::SecretKey::from_slice</span>(<span class="kw-2">&</span>key).unwrap(),
+ }.to_string(), <span class="prelude-val">None</span>::<String>, <span class="prelude-val">None</span>::<String>)
});
- ( @<span class="ident">keys</span> ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">alias</span>:<span class="ident">expr</span> => ( $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">key_type</span>:<span class="ident">tt</span> )<span class="op">*</span> ) ),<span class="op">+</span> ) ) => ({
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">map</span> <span class="op">=</span> <span class="ident">std::collections::HashMap::new</span>();
+ ( @keys ( $( <span class="macro-nonterminal">$alias</span>:expr => ( $( <span class="macro-nonterminal">$key_type</span>:tt )* ) ),+ ) ) => ({
+ <span class="kw">let </span><span class="kw-2">mut </span>map = std::collections::HashMap::new();
$(
- <span class="kw">let</span> <span class="ident">alias</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">alias</span>;
- <span class="ident">map</span>.<span class="ident">insert</span>(<span class="ident">alias</span>, <span class="macro">testutils!</span>( $(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">key_type</span>)<span class="op">*</span> ));
- )<span class="op">+</span>
+ <span class="kw">let </span>alias: <span class="kw-2">&</span>str = <span class="macro-nonterminal">$alias</span>;
+ map.insert(alias, <span class="macro">testutils!</span>( $(<span class="macro-nonterminal">$key_type</span>)* ));
+ )+
- <span class="ident">map</span>
+ map
});
- ( @<span class="ident">descriptors</span> ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">external_descriptor</span>:<span class="ident">expr</span> ) $( ( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_descriptor</span>:<span class="ident">expr</span> ) )<span class="question-mark">?</span> $( ( @<span class="ident">keys</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span>:<span class="ident">tt</span> )<span class="op">*</span> ) )<span class="op">*</span> ) => ({
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
- <span class="kw">use</span> <span class="ident">std::collections::HashMap</span>;
- <span class="kw">use</span> <span class="ident">std::convert::Infallible</span>;
+ ( @descriptors ( <span class="macro-nonterminal">$external_descriptor</span>:expr ) $( ( <span class="macro-nonterminal">$internal_descriptor</span>:expr ) )<span class="question-mark">? </span>$( ( @keys $( <span class="macro-nonterminal">$keys</span>:tt )* ) )* ) => ({
+ <span class="kw">use </span>std::str::FromStr;
+ <span class="kw">use </span>std::collections::HashMap;
+ <span class="kw">use </span>std::convert::Infallible;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::descriptor::Descriptor</span>;
- <span class="kw">use</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::TranslatePk</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::descriptor::Descriptor</span>;
+ <span class="kw">use </span><span class="macro-nonterminal">$crate::miniscript::TranslatePk</span>;
- <span class="kw">struct</span> <span class="ident">Translator</span> {
- <span class="ident">keys</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>, (<span class="ident">String</span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>)<span class="op">></span>,
- <span class="ident">is_internal</span>: <span class="ident">bool</span>,
+ <span class="kw">struct </span>Translator {
+ keys: HashMap<<span class="kw-2">&</span><span class="lifetime">'static </span>str, (String, <span class="prelude-ty">Option</span><String>, <span class="prelude-ty">Option</span><String>)>,
+ is_internal: bool,
}
- <span class="kw">impl</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::miniscript::Translator</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">String</span>, <span class="ident">Infallible</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Translator</span> {
- <span class="kw">fn</span> <span class="ident">pk</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">pk</span>: <span class="kw-2">&</span><span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Infallible</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">keys</span>.<span class="ident">get</span>(<span class="ident">pk</span>.<span class="ident">as_str</span>()) {
- <span class="prelude-val">Some</span>((<span class="ident">key</span>, <span class="ident">ext_path</span>, <span class="ident">int_path</span>)) => {
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_internal</span> { <span class="ident">int_path</span> } <span class="kw">else</span> { <span class="ident">ext_path</span> };
- <span class="prelude-val">Ok</span>(<span class="macro">format!</span>(<span class="string">"{}{}"</span>, <span class="ident">key</span>, <span class="ident">path</span>.<span class="ident">clone</span>().<span class="ident">unwrap_or_default</span>()))
+ <span class="kw">impl </span><span class="macro-nonterminal">$crate::miniscript::Translator</span><String, String, Infallible> <span class="kw">for </span>Translator {
+ <span class="kw">fn </span>pk(<span class="kw-2">&mut </span><span class="self">self</span>, pk: <span class="kw-2">&</span>String) -> <span class="prelude-ty">Result</span><String, Infallible> {
+ <span class="kw">match </span><span class="self">self</span>.keys.get(pk.as_str()) {
+ <span class="prelude-val">Some</span>((key, ext_path, int_path)) => {
+ <span class="kw">let </span>path = <span class="kw">if </span><span class="self">self</span>.is_internal { int_path } <span class="kw">else </span>{ ext_path };
+ <span class="prelude-val">Ok</span>(<span class="macro">format!</span>(<span class="string">"{}{}"</span>, key, path.clone().unwrap_or_default()))
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Ok</span>(<span class="ident">pk</span>.<span class="ident">clone</span>()),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Ok</span>(pk.clone()),
}
}
- <span class="kw">fn</span> <span class="ident">sha256</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">sha256</span>: <span class="kw-2">&</span><span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Infallible</span><span class="op">></span> { <span class="prelude-val">Ok</span>(<span class="ident">sha256</span>.<span class="ident">clone</span>()) }
- <span class="kw">fn</span> <span class="ident">hash256</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">hash256</span>: <span class="kw-2">&</span><span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Infallible</span><span class="op">></span> { <span class="prelude-val">Ok</span>(<span class="ident">hash256</span>.<span class="ident">clone</span>()) }
- <span class="kw">fn</span> <span class="ident">ripemd160</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">ripemd160</span>: <span class="kw-2">&</span><span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Infallible</span><span class="op">></span> { <span class="prelude-val">Ok</span>(<span class="ident">ripemd160</span>.<span class="ident">clone</span>()) }
- <span class="kw">fn</span> <span class="ident">hash160</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">hash160</span>: <span class="kw-2">&</span><span class="ident">String</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Infallible</span><span class="op">></span> { <span class="prelude-val">Ok</span>(<span class="ident">hash160</span>.<span class="ident">clone</span>()) }
+ <span class="kw">fn </span>sha256(<span class="kw-2">&mut </span><span class="self">self</span>, sha256: <span class="kw-2">&</span>String) -> <span class="prelude-ty">Result</span><String, Infallible> { <span class="prelude-val">Ok</span>(sha256.clone()) }
+ <span class="kw">fn </span>hash256(<span class="kw-2">&mut </span><span class="self">self</span>, hash256: <span class="kw-2">&</span>String) -> <span class="prelude-ty">Result</span><String, Infallible> { <span class="prelude-val">Ok</span>(hash256.clone()) }
+ <span class="kw">fn </span>ripemd160(<span class="kw-2">&mut </span><span class="self">self</span>, ripemd160: <span class="kw-2">&</span>String) -> <span class="prelude-ty">Result</span><String, Infallible> { <span class="prelude-val">Ok</span>(ripemd160.clone()) }
+ <span class="kw">fn </span>hash160(<span class="kw-2">&mut </span><span class="self">self</span>, hash160: <span class="kw-2">&</span>String) -> <span class="prelude-ty">Result</span><String, Infallible> { <span class="prelude-val">Ok</span>(hash160.clone()) }
}
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_assignments</span>, <span class="ident">unused_mut</span>)]</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">keys</span> <span class="op">=</span> <span class="ident">HashMap::new</span>();
+ <span class="attr">#[allow(unused_assignments, unused_mut)]
+ </span><span class="kw">let </span><span class="kw-2">mut </span>keys = HashMap::new();
$(
- <span class="ident">keys</span> <span class="op">=</span> <span class="macro">testutils!</span>{ @<span class="ident">keys</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">keys</span> )<span class="op">*</span> };
- )<span class="op">*</span>
+ keys = <span class="macro">testutils!</span>{ @keys $( <span class="macro-nonterminal">$keys </span>)* };
+ )*
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">translator</span> <span class="op">=</span> <span class="ident">Translator</span> { <span class="ident">keys</span>, <span class="ident">is_internal</span>: <span class="bool-val">false</span> };
+ <span class="kw">let </span><span class="kw-2">mut </span>translator = Translator { keys, is_internal: <span class="bool-val">false </span>};
- <span class="kw">let</span> <span class="ident">external</span>: <span class="ident">Descriptor</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> <span class="op">=</span> <span class="ident">FromStr::from_str</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">external_descriptor</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">external</span> <span class="op">=</span> <span class="ident">external</span>.<span class="ident">translate_pk</span>(<span class="kw-2">&mut</span> <span class="ident">translator</span>).<span class="ident">expect</span>(<span class="string">"Infallible conversion"</span>);
- <span class="kw">let</span> <span class="ident">external</span> <span class="op">=</span> <span class="ident">external</span>.<span class="ident">to_string</span>();
+ <span class="kw">let </span>external: Descriptor<String> = FromStr::from_str(<span class="macro-nonterminal">$external_descriptor</span>).unwrap();
+ <span class="kw">let </span>external = external.translate_pk(<span class="kw-2">&mut </span>translator).expect(<span class="string">"Infallible conversion"</span>);
+ <span class="kw">let </span>external = external.to_string();
- <span class="ident">translator</span>.<span class="ident">is_internal</span> <span class="op">=</span> <span class="bool-val">true</span>;
+ translator.is_internal = <span class="bool-val">true</span>;
- <span class="kw">let</span> <span class="ident">internal</span> <span class="op">=</span> <span class="prelude-val">None</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>$(.<span class="ident">or</span>({
- <span class="kw">let</span> <span class="ident">internal</span>: <span class="ident">Descriptor</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> <span class="op">=</span> <span class="ident">FromStr::from_str</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">internal_descriptor</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">internal</span> <span class="op">=</span> <span class="ident">internal</span>.<span class="ident">translate_pk</span>(<span class="kw-2">&mut</span> <span class="ident">translator</span>).<span class="ident">expect</span>(<span class="string">"Infallible conversion"</span>);
- <span class="prelude-val">Some</span>(<span class="ident">internal</span>.<span class="ident">to_string</span>())
+ <span class="kw">let </span>internal = <span class="prelude-val">None</span>::<String>$(.or({
+ <span class="kw">let </span>internal: Descriptor<String> = FromStr::from_str(<span class="macro-nonterminal">$internal_descriptor</span>).unwrap();
+ <span class="kw">let </span>internal = internal.translate_pk(<span class="kw-2">&mut </span>translator).expect(<span class="string">"Infallible conversion"</span>);
+ <span class="prelude-val">Some</span>(internal.to_string())
}))<span class="question-mark">?</span>;
- (<span class="ident">external</span>, <span class="ident">internal</span>)
+ (external, internal)
})
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/types.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>types.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script><script defer src="../../source-script.js"></script><script defer src="../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="kw">use</span> <span class="ident">std::convert::AsRef</span>;
-<span class="kw">use</span> <span class="ident">std::ops::Sub</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::blockdata::transaction</span>::{<span class="ident">OutPoint</span>, <span class="ident">Transaction</span>, <span class="ident">TxOut</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">hash_types::Txid</span>, <span class="ident">util::psbt</span>};
-
-<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
-
-<span class="doccomment">/// Types of keychains</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">KeychainKind</span> {
- <span class="doccomment">/// External</span>
- <span class="ident">External</span> <span class="op">=</span> <span class="number">0</span>,
- <span class="doccomment">/// Internal, usually used for change outputs</span>
- <span class="ident">Internal</span> <span class="op">=</span> <span class="number">1</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/types.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>types.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../source-files.js"></script><script defer src="../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="kw">use </span>std::convert::AsRef;
+<span class="kw">use </span>std::ops::Sub;
+
+<span class="kw">use </span>bitcoin::blockdata::transaction::{OutPoint, Transaction, TxOut};
+<span class="kw">use </span>bitcoin::{hash_types::Txid, util::psbt};
+
+<span class="kw">use </span>serde::{Deserialize, Serialize};
+
+<span class="doccomment">/// Types of keychains
+</span><span class="attr">#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash)]
+</span><span class="kw">pub enum </span>KeychainKind {
+ <span class="doccomment">/// External
+ </span>External = <span class="number">0</span>,
+ <span class="doccomment">/// Internal, usually used for change outputs
+ </span>Internal = <span class="number">1</span>,
}
-<span class="kw">impl</span> <span class="ident">KeychainKind</span> {
- <span class="doccomment">/// Return [`KeychainKind`] as a byte</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">as_byte</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">u8</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">KeychainKind::External</span> => <span class="string">b'e'</span>,
- <span class="ident">KeychainKind::Internal</span> => <span class="string">b'i'</span>,
+<span class="kw">impl </span>KeychainKind {
+ <span class="doccomment">/// Return [`KeychainKind`] as a byte
+ </span><span class="kw">pub fn </span>as_byte(<span class="kw-2">&</span><span class="self">self</span>) -> u8 {
+ <span class="kw">match </span><span class="self">self </span>{
+ KeychainKind::External => <span class="string">b'e'</span>,
+ KeychainKind::Internal => <span class="string">b'i'</span>,
}
}
}
-<span class="kw">impl</span> <span class="ident">AsRef</span><span class="op"><</span>[<span class="ident">u8</span>]<span class="op">></span> <span class="kw">for</span> <span class="ident">KeychainKind</span> {
- <span class="kw">fn</span> <span class="ident">as_ref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span>[<span class="ident">u8</span>] {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">KeychainKind::External</span> => <span class="string">b"e"</span>,
- <span class="ident">KeychainKind::Internal</span> => <span class="string">b"i"</span>,
+<span class="kw">impl </span>AsRef<[u8]> <span class="kw">for </span>KeychainKind {
+ <span class="kw">fn </span>as_ref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span>[u8] {
+ <span class="kw">match </span><span class="self">self </span>{
+ KeychainKind::External => <span class="string">b"e"</span>,
+ KeychainKind::Internal => <span class="string">b"i"</span>,
}
}
}
-<span class="doccomment">/// Fee rate</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Copy</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">PartialOrd</span>)]</span>
-<span class="comment">// Internally stored as satoshi/vbyte</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">FeeRate</span>(<span class="ident">f32</span>);
+<span class="doccomment">/// Fee rate
+</span><span class="attr">#[derive(Debug, Copy, Clone, PartialEq, PartialOrd)]
+</span><span class="comment">// Internally stored as satoshi/vbyte
+</span><span class="kw">pub struct </span>FeeRate(f32);
-<span class="kw">impl</span> <span class="ident">FeeRate</span> {
- <span class="doccomment">/// Create a new instance checking the value provided</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Panics</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Panics if the value is not [normal](https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal) (except if it's a positive zero) or negative.</span>
- <span class="kw">fn</span> <span class="ident">new_checked</span>(<span class="ident">value</span>: <span class="ident">f32</span>) -> <span class="self">Self</span> {
- <span class="macro">assert!</span>(<span class="ident">value</span>.<span class="ident">is_normal</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">value</span> <span class="op">==</span> <span class="number">0.0</span>);
- <span class="macro">assert!</span>(<span class="ident">value</span>.<span class="ident">is_sign_positive</span>());
+<span class="kw">impl </span>FeeRate {
+ <span class="doccomment">/// Create a new instance checking the value provided
+ ///
+ /// ## Panics
+ ///
+ /// Panics if the value is not [normal](https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal) (except if it's a positive zero) or negative.
+ </span><span class="kw">fn </span>new_checked(value: f32) -> <span class="self">Self </span>{
+ <span class="macro">assert!</span>(value.is_normal() || value == <span class="number">0.0</span>);
+ <span class="macro">assert!</span>(value.is_sign_positive());
- <span class="ident">FeeRate</span>(<span class="ident">value</span>)
+ FeeRate(value)
}
- <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in sats/kwu</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_sat_per_kwu</span>(<span class="ident">sat_per_kwu</span>: <span class="ident">f32</span>) -> <span class="self">Self</span> {
- <span class="ident">FeeRate::new_checked</span>(<span class="ident">sat_per_kwu</span> <span class="op">/</span> <span class="number">250.0_f32</span>)
+ <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in sats/kwu
+ </span><span class="kw">pub fn </span>from_sat_per_kwu(sat_per_kwu: f32) -> <span class="self">Self </span>{
+ FeeRate::new_checked(sat_per_kwu / <span class="number">250.0_f32</span>)
}
- <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in sats/kvb</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_sat_per_kvb</span>(<span class="ident">sat_per_kvb</span>: <span class="ident">f32</span>) -> <span class="self">Self</span> {
- <span class="ident">FeeRate::new_checked</span>(<span class="ident">sat_per_kvb</span> <span class="op">/</span> <span class="number">1000.0_f32</span>)
+ <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in sats/kvb
+ </span><span class="kw">pub fn </span>from_sat_per_kvb(sat_per_kvb: f32) -> <span class="self">Self </span>{
+ FeeRate::new_checked(sat_per_kvb / <span class="number">1000.0_f32</span>)
}
- <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in btc/kvbytes</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Panics</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Panics if the value is not [normal](https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal) (except if it's a positive zero) or negative.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_btc_per_kvb</span>(<span class="ident">btc_per_kvb</span>: <span class="ident">f32</span>) -> <span class="self">Self</span> {
- <span class="ident">FeeRate::new_checked</span>(<span class="ident">btc_per_kvb</span> <span class="op">*</span> <span class="number">1e5</span>)
+ <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in btc/kvbytes
+ ///
+ /// ## Panics
+ ///
+ /// Panics if the value is not [normal](https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal) (except if it's a positive zero) or negative.
+ </span><span class="kw">pub fn </span>from_btc_per_kvb(btc_per_kvb: f32) -> <span class="self">Self </span>{
+ FeeRate::new_checked(btc_per_kvb * <span class="number">1e5</span>)
}
- <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in satoshi/vbyte</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Panics</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Panics if the value is not [normal](https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal) (except if it's a positive zero) or negative.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_sat_per_vb</span>(<span class="ident">sat_per_vb</span>: <span class="ident">f32</span>) -> <span class="self">Self</span> {
- <span class="ident">FeeRate::new_checked</span>(<span class="ident">sat_per_vb</span>)
+ <span class="doccomment">/// Create a new instance of [`FeeRate`] given a float fee rate in satoshi/vbyte
+ ///
+ /// ## Panics
+ ///
+ /// Panics if the value is not [normal](https://doc.rust-lang.org/std/primitive.f32.html#method.is_normal) (except if it's a positive zero) or negative.
+ </span><span class="kw">pub fn </span>from_sat_per_vb(sat_per_vb: f32) -> <span class="self">Self </span>{
+ FeeRate::new_checked(sat_per_vb)
}
- <span class="doccomment">/// Create a new [`FeeRate`] with the default min relay fee value</span>
- <span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">default_min_relay_fee</span>() -> <span class="self">Self</span> {
- <span class="ident">FeeRate</span>(<span class="number">1.0</span>)
+ <span class="doccomment">/// Create a new [`FeeRate`] with the default min relay fee value
+ </span><span class="kw">pub const fn </span>default_min_relay_fee() -> <span class="self">Self </span>{
+ FeeRate(<span class="number">1.0</span>)
}
- <span class="doccomment">/// Calculate fee rate from `fee` and weight units (`wu`).</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_wu</span>(<span class="ident">fee</span>: <span class="ident">u64</span>, <span class="ident">wu</span>: <span class="ident">usize</span>) -> <span class="ident">FeeRate</span> {
- <span class="ident"><span class="self">Self</span>::from_vb</span>(<span class="ident">fee</span>, <span class="ident">wu</span>.<span class="ident">vbytes</span>())
+ <span class="doccomment">/// Calculate fee rate from `fee` and weight units (`wu`).
+ </span><span class="kw">pub fn </span>from_wu(fee: u64, wu: usize) -> FeeRate {
+ <span class="self">Self</span>::from_vb(fee, wu.vbytes())
}
- <span class="doccomment">/// Calculate fee rate from `fee` and `vbytes`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_vb</span>(<span class="ident">fee</span>: <span class="ident">u64</span>, <span class="ident">vbytes</span>: <span class="ident">usize</span>) -> <span class="ident">FeeRate</span> {
- <span class="kw">let</span> <span class="ident">rate</span> <span class="op">=</span> <span class="ident">fee</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="ident">vbytes</span> <span class="kw">as</span> <span class="ident">f32</span>;
- <span class="ident"><span class="self">Self</span>::from_sat_per_vb</span>(<span class="ident">rate</span>)
+ <span class="doccomment">/// Calculate fee rate from `fee` and `vbytes`.
+ </span><span class="kw">pub fn </span>from_vb(fee: u64, vbytes: usize) -> FeeRate {
+ <span class="kw">let </span>rate = fee <span class="kw">as </span>f32 / vbytes <span class="kw">as </span>f32;
+ <span class="self">Self</span>::from_sat_per_vb(rate)
}
- <span class="doccomment">/// Return the value as satoshi/vbyte</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">as_sat_per_vb</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">f32</span> {
- <span class="self">self</span>.<span class="number">0</span>
- }
+ <span class="doccomment">/// Return the value as satoshi/vbyte
+ </span><span class="kw">pub fn </span>as_sat_per_vb(<span class="kw-2">&</span><span class="self">self</span>) -> f32 {
+ <span class="self">self</span>.<span class="number">0
+ </span>}
- <span class="doccomment">/// Calculate absolute fee in Satoshis using size in weight units.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">fee_wu</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">wu</span>: <span class="ident">usize</span>) -> <span class="ident">u64</span> {
- <span class="self">self</span>.<span class="ident">fee_vb</span>(<span class="ident">wu</span>.<span class="ident">vbytes</span>())
+ <span class="doccomment">/// Calculate absolute fee in Satoshis using size in weight units.
+ </span><span class="kw">pub fn </span>fee_wu(<span class="kw-2">&</span><span class="self">self</span>, wu: usize) -> u64 {
+ <span class="self">self</span>.fee_vb(wu.vbytes())
}
- <span class="doccomment">/// Calculate absolute fee in Satoshis using size in virtual bytes.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">fee_vb</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">vbytes</span>: <span class="ident">usize</span>) -> <span class="ident">u64</span> {
- (<span class="self">self</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">*</span> <span class="ident">vbytes</span> <span class="kw">as</span> <span class="ident">f32</span>).<span class="ident">ceil</span>() <span class="kw">as</span> <span class="ident">u64</span>
+ <span class="doccomment">/// Calculate absolute fee in Satoshis using size in virtual bytes.
+ </span><span class="kw">pub fn </span>fee_vb(<span class="kw-2">&</span><span class="self">self</span>, vbytes: usize) -> u64 {
+ (<span class="self">self</span>.as_sat_per_vb() * vbytes <span class="kw">as </span>f32).ceil() <span class="kw">as </span>u64
}
}
-<span class="kw">impl</span> <span class="ident">std::default::Default</span> <span class="kw">for</span> <span class="ident">FeeRate</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">FeeRate::default_min_relay_fee</span>()
+<span class="kw">impl </span>std::default::Default <span class="kw">for </span>FeeRate {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ FeeRate::default_min_relay_fee()
}
}
-<span class="kw">impl</span> <span class="ident">Sub</span> <span class="kw">for</span> <span class="ident">FeeRate</span> {
- <span class="kw">type</span> <span class="ident">Output</span> <span class="op">=</span> <span class="self">Self</span>;
+<span class="kw">impl </span>Sub <span class="kw">for </span>FeeRate {
+ <span class="kw">type </span>Output = <span class="self">Self</span>;
- <span class="kw">fn</span> <span class="ident">sub</span>(<span class="self">self</span>, <span class="ident">other</span>: <span class="ident">FeeRate</span>) -> <span class="ident"><span class="self">Self</span>::Output</span> {
- <span class="ident">FeeRate</span>(<span class="self">self</span>.<span class="number">0</span> <span class="op">-</span> <span class="ident">other</span>.<span class="number">0</span>)
+ <span class="kw">fn </span>sub(<span class="self">self</span>, other: FeeRate) -> <span class="self">Self</span>::Output {
+ FeeRate(<span class="self">self</span>.<span class="number">0 </span>- other.<span class="number">0</span>)
}
}
-<span class="doccomment">/// Trait implemented by types that can be used to measure weight units.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Vbytes</span> {
- <span class="doccomment">/// Convert weight units to virtual bytes.</span>
- <span class="kw">fn</span> <span class="ident">vbytes</span>(<span class="self">self</span>) -> <span class="ident">usize</span>;
+<span class="doccomment">/// Trait implemented by types that can be used to measure weight units.
+</span><span class="kw">pub trait </span>Vbytes {
+ <span class="doccomment">/// Convert weight units to virtual bytes.
+ </span><span class="kw">fn </span>vbytes(<span class="self">self</span>) -> usize;
}
-<span class="kw">impl</span> <span class="ident">Vbytes</span> <span class="kw">for</span> <span class="ident">usize</span> {
- <span class="kw">fn</span> <span class="ident">vbytes</span>(<span class="self">self</span>) -> <span class="ident">usize</span> {
- <span class="comment">// ref: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#transaction-size-calculations</span>
- (<span class="self">self</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="number">4.0</span>).<span class="ident">ceil</span>() <span class="kw">as</span> <span class="ident">usize</span>
+<span class="kw">impl </span>Vbytes <span class="kw">for </span>usize {
+ <span class="kw">fn </span>vbytes(<span class="self">self</span>) -> usize {
+ <span class="comment">// ref: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#transaction-size-calculations
+ </span>(<span class="self">self </span><span class="kw">as </span>f32 / <span class="number">4.0</span>).ceil() <span class="kw">as </span>usize
}
}
-<span class="doccomment">/// An unspent output owned by a [`Wallet`].</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`Wallet`]: crate::Wallet</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">LocalUtxo</span> {
- <span class="doccomment">/// Reference to a transaction output</span>
- <span class="kw">pub</span> <span class="ident">outpoint</span>: <span class="ident">OutPoint</span>,
- <span class="doccomment">/// Transaction output</span>
- <span class="kw">pub</span> <span class="ident">txout</span>: <span class="ident">TxOut</span>,
- <span class="doccomment">/// Type of keychain</span>
- <span class="kw">pub</span> <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="doccomment">/// Whether this UTXO is spent or not</span>
- <span class="kw">pub</span> <span class="ident">is_spent</span>: <span class="ident">bool</span>,
+<span class="doccomment">/// An unspent output owned by a [`Wallet`].
+///
+/// [`Wallet`]: crate::Wallet
+</span><span class="attr">#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
+</span><span class="kw">pub struct </span>LocalUtxo {
+ <span class="doccomment">/// Reference to a transaction output
+ </span><span class="kw">pub </span>outpoint: OutPoint,
+ <span class="doccomment">/// Transaction output
+ </span><span class="kw">pub </span>txout: TxOut,
+ <span class="doccomment">/// Type of keychain
+ </span><span class="kw">pub </span>keychain: KeychainKind,
+ <span class="doccomment">/// Whether this UTXO is spent or not
+ </span><span class="kw">pub </span>is_spent: bool,
}
-<span class="doccomment">/// A [`Utxo`] with its `satisfaction_weight`.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">WeightedUtxo</span> {
- <span class="doccomment">/// The weight of the witness data and `scriptSig` expressed in [weight units]. This is used to</span>
- <span class="doccomment">/// properly maintain the feerate when adding this input to a transaction during coin selection.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [weight units]: https://en.bitcoin.it/wiki/Weight_units</span>
- <span class="kw">pub</span> <span class="ident">satisfaction_weight</span>: <span class="ident">usize</span>,
- <span class="doccomment">/// The UTXO</span>
- <span class="kw">pub</span> <span class="ident">utxo</span>: <span class="ident">Utxo</span>,
+<span class="doccomment">/// A [`Utxo`] with its `satisfaction_weight`.
+</span><span class="attr">#[derive(Debug, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>WeightedUtxo {
+ <span class="doccomment">/// The weight of the witness data and `scriptSig` expressed in [weight units]. This is used to
+ /// properly maintain the feerate when adding this input to a transaction during coin selection.
+ ///
+ /// [weight units]: https://en.bitcoin.it/wiki/Weight_units
+ </span><span class="kw">pub </span>satisfaction_weight: usize,
+ <span class="doccomment">/// The UTXO
+ </span><span class="kw">pub </span>utxo: Utxo,
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="doccomment">/// An unspent transaction output (UTXO).</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Utxo</span> {
- <span class="doccomment">/// A UTXO owned by the local wallet.</span>
- <span class="ident">Local</span>(<span class="ident">LocalUtxo</span>),
- <span class="doccomment">/// A UTXO owned by another wallet.</span>
- <span class="ident">Foreign</span> {
- <span class="doccomment">/// The location of the output.</span>
- <span class="ident">outpoint</span>: <span class="ident">OutPoint</span>,
- <span class="doccomment">/// The information about the input we require to add it to a PSBT.</span>
- <span class="comment">// Box it to stop the type being too big.</span>
- <span class="ident">psbt_input</span>: <span class="ident">Box</span><span class="op"><</span><span class="ident">psbt::Input</span><span class="op">></span>,
+<span class="attr">#[derive(Debug, Clone, PartialEq, Eq)]
+</span><span class="doccomment">/// An unspent transaction output (UTXO).
+</span><span class="kw">pub enum </span>Utxo {
+ <span class="doccomment">/// A UTXO owned by the local wallet.
+ </span>Local(LocalUtxo),
+ <span class="doccomment">/// A UTXO owned by another wallet.
+ </span>Foreign {
+ <span class="doccomment">/// The location of the output.
+ </span>outpoint: OutPoint,
+ <span class="doccomment">/// The information about the input we require to add it to a PSBT.
+ </span><span class="comment">// Box it to stop the type being too big.
+ </span>psbt_input: Box<psbt::Input>,
},
}
-<span class="kw">impl</span> <span class="ident">Utxo</span> {
- <span class="doccomment">/// Get the location of the UTXO</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">outpoint</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">OutPoint</span> {
- <span class="kw">match</span> <span class="kw-2">&</span><span class="self">self</span> {
- <span class="ident">Utxo::Local</span>(<span class="ident">local</span>) => <span class="ident">local</span>.<span class="ident">outpoint</span>,
- <span class="ident">Utxo::Foreign</span> { <span class="ident">outpoint</span>, .. } => <span class="kw-2">*</span><span class="ident">outpoint</span>,
+<span class="kw">impl </span>Utxo {
+ <span class="doccomment">/// Get the location of the UTXO
+ </span><span class="kw">pub fn </span>outpoint(<span class="kw-2">&</span><span class="self">self</span>) -> OutPoint {
+ <span class="kw">match </span><span class="kw-2">&</span><span class="self">self </span>{
+ Utxo::Local(local) => local.outpoint,
+ Utxo::Foreign { outpoint, .. } => <span class="kw-2">*</span>outpoint,
}
}
- <span class="doccomment">/// Get the `TxOut` of the UTXO</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">txout</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident">TxOut</span> {
- <span class="kw">match</span> <span class="kw-2">&</span><span class="self">self</span> {
- <span class="ident">Utxo::Local</span>(<span class="ident">local</span>) => <span class="kw-2">&</span><span class="ident">local</span>.<span class="ident">txout</span>,
- <span class="ident">Utxo::Foreign</span> {
- <span class="ident">outpoint</span>,
- <span class="ident">psbt_input</span>,
+ <span class="doccomment">/// Get the `TxOut` of the UTXO
+ </span><span class="kw">pub fn </span>txout(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span>TxOut {
+ <span class="kw">match </span><span class="kw-2">&</span><span class="self">self </span>{
+ Utxo::Local(local) => <span class="kw-2">&</span>local.txout,
+ Utxo::Foreign {
+ outpoint,
+ psbt_input,
} => {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt_input</span>.<span class="ident">non_witness_utxo</span> {
- <span class="kw">return</span> <span class="kw-2">&</span><span class="ident">prev_tx</span>.<span class="ident">output</span>[<span class="ident">outpoint</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>];
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(prev_tx) = <span class="kw-2">&</span>psbt_input.non_witness_utxo {
+ <span class="kw">return </span><span class="kw-2">&</span>prev_tx.output[outpoint.vout <span class="kw">as </span>usize];
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">txout</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt_input</span>.<span class="ident">witness_utxo</span> {
- <span class="kw">return</span> <span class="ident">txout</span>;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(txout) = <span class="kw-2">&</span>psbt_input.witness_utxo {
+ <span class="kw">return </span>txout;
}
<span class="macro">unreachable!</span>(<span class="string">"Foreign UTXOs will always have one of these set"</span>)
}
}
-<span class="doccomment">/// A wallet transaction</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TransactionDetails</span> {
- <span class="doccomment">/// Optional transaction</span>
- <span class="kw">pub</span> <span class="ident">transaction</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>,
- <span class="doccomment">/// Transaction id</span>
- <span class="kw">pub</span> <span class="ident">txid</span>: <span class="ident">Txid</span>,
-
- <span class="doccomment">/// Received value (sats)</span>
- <span class="doccomment">/// Sum of owned outputs of this transaction.</span>
- <span class="kw">pub</span> <span class="ident">received</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Sent value (sats)</span>
- <span class="doccomment">/// Sum of owned inputs of this transaction.</span>
- <span class="kw">pub</span> <span class="ident">sent</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Fee value (sats) if confirmed.</span>
- <span class="doccomment">/// The availability of the fee depends on the backend. It's never `None` with an Electrum</span>
- <span class="doccomment">/// Server backend, but it could be `None` with a Bitcoin RPC node without txindex that receive</span>
- <span class="doccomment">/// funds while offline.</span>
- <span class="kw">pub</span> <span class="ident">fee</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
- <span class="doccomment">/// If the transaction is confirmed, contains height and timestamp of the block containing the</span>
- <span class="doccomment">/// transaction, unconfirmed transaction contains `None`.</span>
- <span class="kw">pub</span> <span class="ident">confirmation_time</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BlockTime</span><span class="op">></span>,
+<span class="doccomment">/// A wallet transaction
+</span><span class="attr">#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>TransactionDetails {
+ <span class="doccomment">/// Optional transaction
+ </span><span class="kw">pub </span>transaction: <span class="prelude-ty">Option</span><Transaction>,
+ <span class="doccomment">/// Transaction id
+ </span><span class="kw">pub </span>txid: Txid,
+
+ <span class="doccomment">/// Received value (sats)
+ /// Sum of owned outputs of this transaction.
+ </span><span class="kw">pub </span>received: u64,
+ <span class="doccomment">/// Sent value (sats)
+ /// Sum of owned inputs of this transaction.
+ </span><span class="kw">pub </span>sent: u64,
+ <span class="doccomment">/// Fee value (sats) if confirmed.
+ /// The availability of the fee depends on the backend. It's never `None` with an Electrum
+ /// Server backend, but it could be `None` with a Bitcoin RPC node without txindex that receive
+ /// funds while offline.
+ </span><span class="kw">pub </span>fee: <span class="prelude-ty">Option</span><u64>,
+ <span class="doccomment">/// If the transaction is confirmed, contains height and timestamp of the block containing the
+ /// transaction, unconfirmed transaction contains `None`.
+ </span><span class="kw">pub </span>confirmation_time: <span class="prelude-ty">Option</span><BlockTime>,
}
-<span class="doccomment">/// Block height and timestamp of a block</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Default</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">BlockTime</span> {
- <span class="doccomment">/// confirmation block height</span>
- <span class="kw">pub</span> <span class="ident">height</span>: <span class="ident">u32</span>,
- <span class="doccomment">/// confirmation block timestamp</span>
- <span class="kw">pub</span> <span class="ident">timestamp</span>: <span class="ident">u64</span>,
+<span class="doccomment">/// Block height and timestamp of a block
+</span><span class="attr">#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)]
+</span><span class="kw">pub struct </span>BlockTime {
+ <span class="doccomment">/// confirmation block height
+ </span><span class="kw">pub </span>height: u32,
+ <span class="doccomment">/// confirmation block timestamp
+ </span><span class="kw">pub </span>timestamp: u64,
}
-<span class="doccomment">/// **DEPRECATED**: Confirmation time of a transaction</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The structure has been renamed to `BlockTime`</span>
-<span class="attribute">#[<span class="ident">deprecated</span>(<span class="ident">note</span> <span class="op">=</span> <span class="string">"This structure has been renamed to `BlockTime`"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">ConfirmationTime</span> <span class="op">=</span> <span class="ident">BlockTime</span>;
-
-<span class="kw">impl</span> <span class="ident">BlockTime</span> {
- <span class="doccomment">/// Returns `Some` `BlockTime` if both `height` and `timestamp` are `Some`</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">timestamp</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="self">Self</span><span class="op">></span> {
- <span class="kw">match</span> (<span class="ident">height</span>, <span class="ident">timestamp</span>) {
- (<span class="prelude-val">Some</span>(<span class="ident">height</span>), <span class="prelude-val">Some</span>(<span class="ident">timestamp</span>)) => <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> { <span class="ident">height</span>, <span class="ident">timestamp</span> }),
- <span class="kw">_</span> => <span class="prelude-val">None</span>,
+<span class="doccomment">/// **DEPRECATED**: Confirmation time of a transaction
+///
+/// The structure has been renamed to `BlockTime`
+</span><span class="attr">#[deprecated(note = <span class="string">"This structure has been renamed to `BlockTime`"</span>)]
+</span><span class="kw">pub type </span>ConfirmationTime = BlockTime;
+
+<span class="kw">impl </span>BlockTime {
+ <span class="doccomment">/// Returns `Some` `BlockTime` if both `height` and `timestamp` are `Some`
+ </span><span class="kw">pub fn </span>new(height: <span class="prelude-ty">Option</span><u32>, timestamp: <span class="prelude-ty">Option</span><u64>) -> <span class="prelude-ty">Option</span><<span class="self">Self</span>> {
+ <span class="kw">match </span>(height, timestamp) {
+ (<span class="prelude-val">Some</span>(height), <span class="prelude-val">Some</span>(timestamp)) => <span class="prelude-val">Some</span>(BlockTime { height, timestamp }),
+ <span class="kw">_ </span>=> <span class="prelude-val">None</span>,
}
}
}
-<span class="doccomment">/// Balance differentiated in various categories</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>, <span class="ident">Debug</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Clone</span>, <span class="ident">Default</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Balance</span> {
- <span class="doccomment">/// All coinbase outputs not yet matured</span>
- <span class="kw">pub</span> <span class="ident">immature</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Unconfirmed UTXOs generated by a wallet tx</span>
- <span class="kw">pub</span> <span class="ident">trusted_pending</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Unconfirmed UTXOs received from an external wallet</span>
- <span class="kw">pub</span> <span class="ident">untrusted_pending</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Confirmed and immediately spendable balance</span>
- <span class="kw">pub</span> <span class="ident">confirmed</span>: <span class="ident">u64</span>,
+<span class="doccomment">/// Balance differentiated in various categories
+</span><span class="attr">#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Default)]
+</span><span class="kw">pub struct </span>Balance {
+ <span class="doccomment">/// All coinbase outputs not yet matured
+ </span><span class="kw">pub </span>immature: u64,
+ <span class="doccomment">/// Unconfirmed UTXOs generated by a wallet tx
+ </span><span class="kw">pub </span>trusted_pending: u64,
+ <span class="doccomment">/// Unconfirmed UTXOs received from an external wallet
+ </span><span class="kw">pub </span>untrusted_pending: u64,
+ <span class="doccomment">/// Confirmed and immediately spendable balance
+ </span><span class="kw">pub </span>confirmed: u64,
}
-<span class="kw">impl</span> <span class="ident">Balance</span> {
- <span class="doccomment">/// Get sum of trusted_pending and confirmed coins</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_spendable</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">u64</span> {
- <span class="self">self</span>.<span class="ident">confirmed</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">trusted_pending</span>
+<span class="kw">impl </span>Balance {
+ <span class="doccomment">/// Get sum of trusted_pending and confirmed coins
+ </span><span class="kw">pub fn </span>get_spendable(<span class="kw-2">&</span><span class="self">self</span>) -> u64 {
+ <span class="self">self</span>.confirmed + <span class="self">self</span>.trusted_pending
}
- <span class="doccomment">/// Get the whole balance visible to the wallet</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_total</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">u64</span> {
- <span class="self">self</span>.<span class="ident">confirmed</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">trusted_pending</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">untrusted_pending</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">immature</span>
+ <span class="doccomment">/// Get the whole balance visible to the wallet
+ </span><span class="kw">pub fn </span>get_total(<span class="kw-2">&</span><span class="self">self</span>) -> u64 {
+ <span class="self">self</span>.confirmed + <span class="self">self</span>.trusted_pending + <span class="self">self</span>.untrusted_pending + <span class="self">self</span>.immature
}
}
-<span class="kw">impl</span> <span class="ident">std::fmt::Display</span> <span class="kw">for</span> <span class="ident">Balance</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">std::fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">std::fmt::Result</span> {
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>Balance {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>std::fmt::Formatter<<span class="lifetime">'_</span>>) -> std::fmt::Result {
<span class="macro">write!</span>(
- <span class="ident">f</span>,
+ f,
<span class="string">"{{ immature: {}, trusted_pending: {}, untrusted_pending: {}, confirmed: {} }}"</span>,
- <span class="self">self</span>.<span class="ident">immature</span>, <span class="self">self</span>.<span class="ident">trusted_pending</span>, <span class="self">self</span>.<span class="ident">untrusted_pending</span>, <span class="self">self</span>.<span class="ident">confirmed</span>
+ <span class="self">self</span>.immature, <span class="self">self</span>.trusted_pending, <span class="self">self</span>.untrusted_pending, <span class="self">self</span>.confirmed
)
}
}
-<span class="kw">impl</span> <span class="ident">std::ops::Add</span> <span class="kw">for</span> <span class="ident">Balance</span> {
- <span class="kw">type</span> <span class="ident">Output</span> <span class="op">=</span> <span class="self">Self</span>;
+<span class="kw">impl </span>std::ops::Add <span class="kw">for </span>Balance {
+ <span class="kw">type </span>Output = <span class="self">Self</span>;
- <span class="kw">fn</span> <span class="ident">add</span>(<span class="self">self</span>, <span class="ident">other</span>: <span class="self">Self</span>) -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="ident">immature</span>: <span class="self">self</span>.<span class="ident">immature</span> <span class="op">+</span> <span class="ident">other</span>.<span class="ident">immature</span>,
- <span class="ident">trusted_pending</span>: <span class="self">self</span>.<span class="ident">trusted_pending</span> <span class="op">+</span> <span class="ident">other</span>.<span class="ident">trusted_pending</span>,
- <span class="ident">untrusted_pending</span>: <span class="self">self</span>.<span class="ident">untrusted_pending</span> <span class="op">+</span> <span class="ident">other</span>.<span class="ident">untrusted_pending</span>,
- <span class="ident">confirmed</span>: <span class="self">self</span>.<span class="ident">confirmed</span> <span class="op">+</span> <span class="ident">other</span>.<span class="ident">confirmed</span>,
+ <span class="kw">fn </span>add(<span class="self">self</span>, other: <span class="self">Self</span>) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ immature: <span class="self">self</span>.immature + other.immature,
+ trusted_pending: <span class="self">self</span>.trusted_pending + other.trusted_pending,
+ untrusted_pending: <span class="self">self</span>.untrusted_pending + other.untrusted_pending,
+ confirmed: <span class="self">self</span>.confirmed + other.confirmed,
}
}
}
-<span class="kw">impl</span> <span class="ident">std::iter::Sum</span> <span class="kw">for</span> <span class="ident">Balance</span> {
- <span class="kw">fn</span> <span class="ident">sum</span><span class="op"><</span><span class="ident">I</span>: <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> <span class="self">Self</span><span class="op">></span><span class="op">></span>(<span class="ident">iter</span>: <span class="ident">I</span>) -> <span class="self">Self</span> {
- <span class="ident">iter</span>.<span class="ident">fold</span>(
- <span class="ident">Balance</span> {
- ..<span class="ident">Default::default</span>()
+<span class="kw">impl </span>std::iter::Sum <span class="kw">for </span>Balance {
+ <span class="kw">fn </span>sum<I: Iterator<Item = <span class="self">Self</span>>>(iter: I) -> <span class="self">Self </span>{
+ iter.fold(
+ Balance {
+ ..Default::default()
},
- <span class="op">|</span><span class="ident">a</span>, <span class="ident">b</span><span class="op">|</span> <span class="ident">a</span> <span class="op">+</span> <span class="ident">b</span>,
+ |a, b| a + b,
)
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">tests</span> {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">can_store_feerate_in_const</span>() {
- <span class="kw">const</span> <span class="ident">_MIN_RELAY</span>: <span class="ident">FeeRate</span> <span class="op">=</span> <span class="ident">FeeRate::default_min_relay_fee</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>can_store_feerate_in_const() {
+ <span class="kw">const </span>_MIN_RELAY: FeeRate = FeeRate::default_min_relay_fee();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_invalid_feerate_neg_zero</span>() {
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="op">-</span><span class="number">0.0</span>);
+ <span class="attr">#[test]
+ #[should_panic]
+ </span><span class="kw">fn </span>test_invalid_feerate_neg_zero() {
+ <span class="kw">let _ </span>= FeeRate::from_sat_per_vb(-<span class="number">0.0</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_invalid_feerate_neg_value</span>() {
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="op">-</span><span class="number">5.0</span>);
+ <span class="attr">#[test]
+ #[should_panic]
+ </span><span class="kw">fn </span>test_invalid_feerate_neg_value() {
+ <span class="kw">let _ </span>= FeeRate::from_sat_per_vb(-<span class="number">5.0</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_invalid_feerate_nan</span>() {
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">f32::NAN</span>);
+ <span class="attr">#[test]
+ #[should_panic]
+ </span><span class="kw">fn </span>test_invalid_feerate_nan() {
+ <span class="kw">let _ </span>= FeeRate::from_sat_per_vb(f32::NAN);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_invalid_feerate_inf</span>() {
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">f32::INFINITY</span>);
+ <span class="attr">#[test]
+ #[should_panic]
+ </span><span class="kw">fn </span>test_invalid_feerate_inf() {
+ <span class="kw">let _ </span>= FeeRate::from_sat_per_vb(f32::INFINITY);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_valid_feerate_pos_zero</span>() {
- <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">0.0</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_valid_feerate_pos_zero() {
+ <span class="kw">let _ </span>= FeeRate::from_sat_per_vb(<span class="number">0.0</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_from_btc_per_kvb</span>() {
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">FeeRate::from_btc_per_kvb</span>(<span class="number">1e-5</span>);
- <span class="macro">assert!</span>((<span class="ident">fee</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">-</span> <span class="number">1.0</span>).<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">f32::EPSILON</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_from_btc_per_kvb() {
+ <span class="kw">let </span>fee = FeeRate::from_btc_per_kvb(<span class="number">1e-5</span>);
+ <span class="macro">assert!</span>((fee.as_sat_per_vb() - <span class="number">1.0</span>).abs() < f32::EPSILON);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_from_sat_per_vbyte</span>() {
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>);
- <span class="macro">assert!</span>((<span class="ident">fee</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">-</span> <span class="number">1.0</span>).<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">f32::EPSILON</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_from_sat_per_vbyte() {
+ <span class="kw">let </span>fee = FeeRate::from_sat_per_vb(<span class="number">1.0</span>);
+ <span class="macro">assert!</span>((fee.as_sat_per_vb() - <span class="number">1.0</span>).abs() < f32::EPSILON);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_default_min_relay_fee</span>() {
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">FeeRate::default_min_relay_fee</span>();
- <span class="macro">assert!</span>((<span class="ident">fee</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">-</span> <span class="number">1.0</span>).<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">f32::EPSILON</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_default_min_relay_fee() {
+ <span class="kw">let </span>fee = FeeRate::default_min_relay_fee();
+ <span class="macro">assert!</span>((fee.as_sat_per_vb() - <span class="number">1.0</span>).abs() < f32::EPSILON);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_from_sat_per_kvb</span>() {
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_kvb</span>(<span class="number">1000.0</span>);
- <span class="macro">assert!</span>((<span class="ident">fee</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">-</span> <span class="number">1.0</span>).<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">f32::EPSILON</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_from_sat_per_kvb() {
+ <span class="kw">let </span>fee = FeeRate::from_sat_per_kvb(<span class="number">1000.0</span>);
+ <span class="macro">assert!</span>((fee.as_sat_per_vb() - <span class="number">1.0</span>).abs() < f32::EPSILON);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_from_sat_per_kwu</span>() {
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_kwu</span>(<span class="number">250.0</span>);
- <span class="macro">assert!</span>((<span class="ident">fee</span>.<span class="ident">as_sat_per_vb</span>() <span class="op">-</span> <span class="number">1.0</span>).<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">f32::EPSILON</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_from_sat_per_kwu() {
+ <span class="kw">let </span>fee = FeeRate::from_sat_per_kwu(<span class="number">250.0</span>);
+ <span class="macro">assert!</span>((fee.as_sat_per_vb() - <span class="number">1.0</span>).abs() < f32::EPSILON);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/coin_selection.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>coin_selection.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-<span id="1001">1001</span>
-<span id="1002">1002</span>
-<span id="1003">1003</span>
-<span id="1004">1004</span>
-<span id="1005">1005</span>
-<span id="1006">1006</span>
-<span id="1007">1007</span>
-<span id="1008">1008</span>
-<span id="1009">1009</span>
-<span id="1010">1010</span>
-<span id="1011">1011</span>
-<span id="1012">1012</span>
-<span id="1013">1013</span>
-<span id="1014">1014</span>
-<span id="1015">1015</span>
-<span id="1016">1016</span>
-<span id="1017">1017</span>
-<span id="1018">1018</span>
-<span id="1019">1019</span>
-<span id="1020">1020</span>
-<span id="1021">1021</span>
-<span id="1022">1022</span>
-<span id="1023">1023</span>
-<span id="1024">1024</span>
-<span id="1025">1025</span>
-<span id="1026">1026</span>
-<span id="1027">1027</span>
-<span id="1028">1028</span>
-<span id="1029">1029</span>
-<span id="1030">1030</span>
-<span id="1031">1031</span>
-<span id="1032">1032</span>
-<span id="1033">1033</span>
-<span id="1034">1034</span>
-<span id="1035">1035</span>
-<span id="1036">1036</span>
-<span id="1037">1037</span>
-<span id="1038">1038</span>
-<span id="1039">1039</span>
-<span id="1040">1040</span>
-<span id="1041">1041</span>
-<span id="1042">1042</span>
-<span id="1043">1043</span>
-<span id="1044">1044</span>
-<span id="1045">1045</span>
-<span id="1046">1046</span>
-<span id="1047">1047</span>
-<span id="1048">1048</span>
-<span id="1049">1049</span>
-<span id="1050">1050</span>
-<span id="1051">1051</span>
-<span id="1052">1052</span>
-<span id="1053">1053</span>
-<span id="1054">1054</span>
-<span id="1055">1055</span>
-<span id="1056">1056</span>
-<span id="1057">1057</span>
-<span id="1058">1058</span>
-<span id="1059">1059</span>
-<span id="1060">1060</span>
-<span id="1061">1061</span>
-<span id="1062">1062</span>
-<span id="1063">1063</span>
-<span id="1064">1064</span>
-<span id="1065">1065</span>
-<span id="1066">1066</span>
-<span id="1067">1067</span>
-<span id="1068">1068</span>
-<span id="1069">1069</span>
-<span id="1070">1070</span>
-<span id="1071">1071</span>
-<span id="1072">1072</span>
-<span id="1073">1073</span>
-<span id="1074">1074</span>
-<span id="1075">1075</span>
-<span id="1076">1076</span>
-<span id="1077">1077</span>
-<span id="1078">1078</span>
-<span id="1079">1079</span>
-<span id="1080">1080</span>
-<span id="1081">1081</span>
-<span id="1082">1082</span>
-<span id="1083">1083</span>
-<span id="1084">1084</span>
-<span id="1085">1085</span>
-<span id="1086">1086</span>
-<span id="1087">1087</span>
-<span id="1088">1088</span>
-<span id="1089">1089</span>
-<span id="1090">1090</span>
-<span id="1091">1091</span>
-<span id="1092">1092</span>
-<span id="1093">1093</span>
-<span id="1094">1094</span>
-<span id="1095">1095</span>
-<span id="1096">1096</span>
-<span id="1097">1097</span>
-<span id="1098">1098</span>
-<span id="1099">1099</span>
-<span id="1100">1100</span>
-<span id="1101">1101</span>
-<span id="1102">1102</span>
-<span id="1103">1103</span>
-<span id="1104">1104</span>
-<span id="1105">1105</span>
-<span id="1106">1106</span>
-<span id="1107">1107</span>
-<span id="1108">1108</span>
-<span id="1109">1109</span>
-<span id="1110">1110</span>
-<span id="1111">1111</span>
-<span id="1112">1112</span>
-<span id="1113">1113</span>
-<span id="1114">1114</span>
-<span id="1115">1115</span>
-<span id="1116">1116</span>
-<span id="1117">1117</span>
-<span id="1118">1118</span>
-<span id="1119">1119</span>
-<span id="1120">1120</span>
-<span id="1121">1121</span>
-<span id="1122">1122</span>
-<span id="1123">1123</span>
-<span id="1124">1124</span>
-<span id="1125">1125</span>
-<span id="1126">1126</span>
-<span id="1127">1127</span>
-<span id="1128">1128</span>
-<span id="1129">1129</span>
-<span id="1130">1130</span>
-<span id="1131">1131</span>
-<span id="1132">1132</span>
-<span id="1133">1133</span>
-<span id="1134">1134</span>
-<span id="1135">1135</span>
-<span id="1136">1136</span>
-<span id="1137">1137</span>
-<span id="1138">1138</span>
-<span id="1139">1139</span>
-<span id="1140">1140</span>
-<span id="1141">1141</span>
-<span id="1142">1142</span>
-<span id="1143">1143</span>
-<span id="1144">1144</span>
-<span id="1145">1145</span>
-<span id="1146">1146</span>
-<span id="1147">1147</span>
-<span id="1148">1148</span>
-<span id="1149">1149</span>
-<span id="1150">1150</span>
-<span id="1151">1151</span>
-<span id="1152">1152</span>
-<span id="1153">1153</span>
-<span id="1154">1154</span>
-<span id="1155">1155</span>
-<span id="1156">1156</span>
-<span id="1157">1157</span>
-<span id="1158">1158</span>
-<span id="1159">1159</span>
-<span id="1160">1160</span>
-<span id="1161">1161</span>
-<span id="1162">1162</span>
-<span id="1163">1163</span>
-<span id="1164">1164</span>
-<span id="1165">1165</span>
-<span id="1166">1166</span>
-<span id="1167">1167</span>
-<span id="1168">1168</span>
-<span id="1169">1169</span>
-<span id="1170">1170</span>
-<span id="1171">1171</span>
-<span id="1172">1172</span>
-<span id="1173">1173</span>
-<span id="1174">1174</span>
-<span id="1175">1175</span>
-<span id="1176">1176</span>
-<span id="1177">1177</span>
-<span id="1178">1178</span>
-<span id="1179">1179</span>
-<span id="1180">1180</span>
-<span id="1181">1181</span>
-<span id="1182">1182</span>
-<span id="1183">1183</span>
-<span id="1184">1184</span>
-<span id="1185">1185</span>
-<span id="1186">1186</span>
-<span id="1187">1187</span>
-<span id="1188">1188</span>
-<span id="1189">1189</span>
-<span id="1190">1190</span>
-<span id="1191">1191</span>
-<span id="1192">1192</span>
-<span id="1193">1193</span>
-<span id="1194">1194</span>
-<span id="1195">1195</span>
-<span id="1196">1196</span>
-<span id="1197">1197</span>
-<span id="1198">1198</span>
-<span id="1199">1199</span>
-<span id="1200">1200</span>
-<span id="1201">1201</span>
-<span id="1202">1202</span>
-<span id="1203">1203</span>
-<span id="1204">1204</span>
-<span id="1205">1205</span>
-<span id="1206">1206</span>
-<span id="1207">1207</span>
-<span id="1208">1208</span>
-<span id="1209">1209</span>
-<span id="1210">1210</span>
-<span id="1211">1211</span>
-<span id="1212">1212</span>
-<span id="1213">1213</span>
-<span id="1214">1214</span>
-<span id="1215">1215</span>
-<span id="1216">1216</span>
-<span id="1217">1217</span>
-<span id="1218">1218</span>
-<span id="1219">1219</span>
-<span id="1220">1220</span>
-<span id="1221">1221</span>
-<span id="1222">1222</span>
-<span id="1223">1223</span>
-<span id="1224">1224</span>
-<span id="1225">1225</span>
-<span id="1226">1226</span>
-<span id="1227">1227</span>
-<span id="1228">1228</span>
-<span id="1229">1229</span>
-<span id="1230">1230</span>
-<span id="1231">1231</span>
-<span id="1232">1232</span>
-<span id="1233">1233</span>
-<span id="1234">1234</span>
-<span id="1235">1235</span>
-<span id="1236">1236</span>
-<span id="1237">1237</span>
-<span id="1238">1238</span>
-<span id="1239">1239</span>
-<span id="1240">1240</span>
-<span id="1241">1241</span>
-<span id="1242">1242</span>
-<span id="1243">1243</span>
-<span id="1244">1244</span>
-<span id="1245">1245</span>
-<span id="1246">1246</span>
-<span id="1247">1247</span>
-<span id="1248">1248</span>
-<span id="1249">1249</span>
-<span id="1250">1250</span>
-<span id="1251">1251</span>
-<span id="1252">1252</span>
-<span id="1253">1253</span>
-<span id="1254">1254</span>
-<span id="1255">1255</span>
-<span id="1256">1256</span>
-<span id="1257">1257</span>
-<span id="1258">1258</span>
-<span id="1259">1259</span>
-<span id="1260">1260</span>
-<span id="1261">1261</span>
-<span id="1262">1262</span>
-<span id="1263">1263</span>
-<span id="1264">1264</span>
-<span id="1265">1265</span>
-<span id="1266">1266</span>
-<span id="1267">1267</span>
-<span id="1268">1268</span>
-<span id="1269">1269</span>
-<span id="1270">1270</span>
-<span id="1271">1271</span>
-<span id="1272">1272</span>
-<span id="1273">1273</span>
-<span id="1274">1274</span>
-<span id="1275">1275</span>
-<span id="1276">1276</span>
-<span id="1277">1277</span>
-<span id="1278">1278</span>
-<span id="1279">1279</span>
-<span id="1280">1280</span>
-<span id="1281">1281</span>
-<span id="1282">1282</span>
-<span id="1283">1283</span>
-<span id="1284">1284</span>
-<span id="1285">1285</span>
-<span id="1286">1286</span>
-<span id="1287">1287</span>
-<span id="1288">1288</span>
-<span id="1289">1289</span>
-<span id="1290">1290</span>
-<span id="1291">1291</span>
-<span id="1292">1292</span>
-<span id="1293">1293</span>
-<span id="1294">1294</span>
-<span id="1295">1295</span>
-<span id="1296">1296</span>
-<span id="1297">1297</span>
-<span id="1298">1298</span>
-<span id="1299">1299</span>
-<span id="1300">1300</span>
-<span id="1301">1301</span>
-<span id="1302">1302</span>
-<span id="1303">1303</span>
-<span id="1304">1304</span>
-<span id="1305">1305</span>
-<span id="1306">1306</span>
-<span id="1307">1307</span>
-<span id="1308">1308</span>
-<span id="1309">1309</span>
-<span id="1310">1310</span>
-<span id="1311">1311</span>
-<span id="1312">1312</span>
-<span id="1313">1313</span>
-<span id="1314">1314</span>
-<span id="1315">1315</span>
-<span id="1316">1316</span>
-<span id="1317">1317</span>
-<span id="1318">1318</span>
-<span id="1319">1319</span>
-<span id="1320">1320</span>
-<span id="1321">1321</span>
-<span id="1322">1322</span>
-<span id="1323">1323</span>
-<span id="1324">1324</span>
-<span id="1325">1325</span>
-<span id="1326">1326</span>
-<span id="1327">1327</span>
-<span id="1328">1328</span>
-<span id="1329">1329</span>
-<span id="1330">1330</span>
-<span id="1331">1331</span>
-<span id="1332">1332</span>
-<span id="1333">1333</span>
-<span id="1334">1334</span>
-<span id="1335">1335</span>
-<span id="1336">1336</span>
-<span id="1337">1337</span>
-<span id="1338">1338</span>
-<span id="1339">1339</span>
-<span id="1340">1340</span>
-<span id="1341">1341</span>
-<span id="1342">1342</span>
-<span id="1343">1343</span>
-<span id="1344">1344</span>
-<span id="1345">1345</span>
-<span id="1346">1346</span>
-<span id="1347">1347</span>
-<span id="1348">1348</span>
-<span id="1349">1349</span>
-<span id="1350">1350</span>
-<span id="1351">1351</span>
-<span id="1352">1352</span>
-<span id="1353">1353</span>
-<span id="1354">1354</span>
-<span id="1355">1355</span>
-<span id="1356">1356</span>
-<span id="1357">1357</span>
-<span id="1358">1358</span>
-<span id="1359">1359</span>
-<span id="1360">1360</span>
-<span id="1361">1361</span>
-<span id="1362">1362</span>
-<span id="1363">1363</span>
-<span id="1364">1364</span>
-<span id="1365">1365</span>
-<span id="1366">1366</span>
-<span id="1367">1367</span>
-<span id="1368">1368</span>
-<span id="1369">1369</span>
-<span id="1370">1370</span>
-<span id="1371">1371</span>
-<span id="1372">1372</span>
-<span id="1373">1373</span>
-<span id="1374">1374</span>
-<span id="1375">1375</span>
-<span id="1376">1376</span>
-<span id="1377">1377</span>
-<span id="1378">1378</span>
-<span id="1379">1379</span>
-<span id="1380">1380</span>
-<span id="1381">1381</span>
-<span id="1382">1382</span>
-<span id="1383">1383</span>
-<span id="1384">1384</span>
-<span id="1385">1385</span>
-<span id="1386">1386</span>
-<span id="1387">1387</span>
-<span id="1388">1388</span>
-<span id="1389">1389</span>
-<span id="1390">1390</span>
-<span id="1391">1391</span>
-<span id="1392">1392</span>
-<span id="1393">1393</span>
-<span id="1394">1394</span>
-<span id="1395">1395</span>
-<span id="1396">1396</span>
-<span id="1397">1397</span>
-<span id="1398">1398</span>
-<span id="1399">1399</span>
-<span id="1400">1400</span>
-<span id="1401">1401</span>
-<span id="1402">1402</span>
-<span id="1403">1403</span>
-<span id="1404">1404</span>
-<span id="1405">1405</span>
-<span id="1406">1406</span>
-<span id="1407">1407</span>
-<span id="1408">1408</span>
-<span id="1409">1409</span>
-<span id="1410">1410</span>
-<span id="1411">1411</span>
-<span id="1412">1412</span>
-<span id="1413">1413</span>
-<span id="1414">1414</span>
-<span id="1415">1415</span>
-<span id="1416">1416</span>
-<span id="1417">1417</span>
-<span id="1418">1418</span>
-<span id="1419">1419</span>
-<span id="1420">1420</span>
-<span id="1421">1421</span>
-<span id="1422">1422</span>
-<span id="1423">1423</span>
-<span id="1424">1424</span>
-<span id="1425">1425</span>
-<span id="1426">1426</span>
-<span id="1427">1427</span>
-<span id="1428">1428</span>
-<span id="1429">1429</span>
-<span id="1430">1430</span>
-<span id="1431">1431</span>
-<span id="1432">1432</span>
-<span id="1433">1433</span>
-<span id="1434">1434</span>
-<span id="1435">1435</span>
-<span id="1436">1436</span>
-<span id="1437">1437</span>
-<span id="1438">1438</span>
-<span id="1439">1439</span>
-<span id="1440">1440</span>
-<span id="1441">1441</span>
-<span id="1442">1442</span>
-<span id="1443">1443</span>
-<span id="1444">1444</span>
-<span id="1445">1445</span>
-<span id="1446">1446</span>
-<span id="1447">1447</span>
-<span id="1448">1448</span>
-<span id="1449">1449</span>
-<span id="1450">1450</span>
-<span id="1451">1451</span>
-<span id="1452">1452</span>
-<span id="1453">1453</span>
-<span id="1454">1454</span>
-<span id="1455">1455</span>
-<span id="1456">1456</span>
-<span id="1457">1457</span>
-<span id="1458">1458</span>
-<span id="1459">1459</span>
-<span id="1460">1460</span>
-<span id="1461">1461</span>
-<span id="1462">1462</span>
-<span id="1463">1463</span>
-<span id="1464">1464</span>
-<span id="1465">1465</span>
-<span id="1466">1466</span>
-<span id="1467">1467</span>
-<span id="1468">1468</span>
-<span id="1469">1469</span>
-<span id="1470">1470</span>
-<span id="1471">1471</span>
-<span id="1472">1472</span>
-<span id="1473">1473</span>
-<span id="1474">1474</span>
-<span id="1475">1475</span>
-<span id="1476">1476</span>
-<span id="1477">1477</span>
-<span id="1478">1478</span>
-<span id="1479">1479</span>
-<span id="1480">1480</span>
-<span id="1481">1481</span>
-<span id="1482">1482</span>
-<span id="1483">1483</span>
-<span id="1484">1484</span>
-<span id="1485">1485</span>
-<span id="1486">1486</span>
-<span id="1487">1487</span>
-<span id="1488">1488</span>
-<span id="1489">1489</span>
-<span id="1490">1490</span>
-<span id="1491">1491</span>
-<span id="1492">1492</span>
-<span id="1493">1493</span>
-<span id="1494">1494</span>
-<span id="1495">1495</span>
-<span id="1496">1496</span>
-<span id="1497">1497</span>
-<span id="1498">1498</span>
-<span id="1499">1499</span>
-<span id="1500">1500</span>
-<span id="1501">1501</span>
-<span id="1502">1502</span>
-<span id="1503">1503</span>
-<span id="1504">1504</span>
-<span id="1505">1505</span>
-<span id="1506">1506</span>
-<span id="1507">1507</span>
-<span id="1508">1508</span>
-<span id="1509">1509</span>
-<span id="1510">1510</span>
-<span id="1511">1511</span>
-<span id="1512">1512</span>
-<span id="1513">1513</span>
-<span id="1514">1514</span>
-<span id="1515">1515</span>
-<span id="1516">1516</span>
-<span id="1517">1517</span>
-<span id="1518">1518</span>
-<span id="1519">1519</span>
-<span id="1520">1520</span>
-<span id="1521">1521</span>
-<span id="1522">1522</span>
-<span id="1523">1523</span>
-<span id="1524">1524</span>
-<span id="1525">1525</span>
-<span id="1526">1526</span>
-<span id="1527">1527</span>
-<span id="1528">1528</span>
-<span id="1529">1529</span>
-<span id="1530">1530</span>
-<span id="1531">1531</span>
-<span id="1532">1532</span>
-<span id="1533">1533</span>
-<span id="1534">1534</span>
-<span id="1535">1535</span>
-<span id="1536">1536</span>
-<span id="1537">1537</span>
-<span id="1538">1538</span>
-<span id="1539">1539</span>
-<span id="1540">1540</span>
-<span id="1541">1541</span>
-<span id="1542">1542</span>
-<span id="1543">1543</span>
-<span id="1544">1544</span>
-<span id="1545">1545</span>
-<span id="1546">1546</span>
-<span id="1547">1547</span>
-<span id="1548">1548</span>
-<span id="1549">1549</span>
-<span id="1550">1550</span>
-<span id="1551">1551</span>
-<span id="1552">1552</span>
-<span id="1553">1553</span>
-<span id="1554">1554</span>
-<span id="1555">1555</span>
-<span id="1556">1556</span>
-<span id="1557">1557</span>
-<span id="1558">1558</span>
-<span id="1559">1559</span>
-<span id="1560">1560</span>
-<span id="1561">1561</span>
-<span id="1562">1562</span>
-<span id="1563">1563</span>
-<span id="1564">1564</span>
-<span id="1565">1565</span>
-<span id="1566">1566</span>
-<span id="1567">1567</span>
-<span id="1568">1568</span>
-<span id="1569">1569</span>
-<span id="1570">1570</span>
-<span id="1571">1571</span>
-<span id="1572">1572</span>
-<span id="1573">1573</span>
-<span id="1574">1574</span>
-<span id="1575">1575</span>
-<span id="1576">1576</span>
-<span id="1577">1577</span>
-<span id="1578">1578</span>
-<span id="1579">1579</span>
-<span id="1580">1580</span>
-<span id="1581">1581</span>
-<span id="1582">1582</span>
-<span id="1583">1583</span>
-<span id="1584">1584</span>
-<span id="1585">1585</span>
-<span id="1586">1586</span>
-<span id="1587">1587</span>
-<span id="1588">1588</span>
-<span id="1589">1589</span>
-<span id="1590">1590</span>
-<span id="1591">1591</span>
-<span id="1592">1592</span>
-<span id="1593">1593</span>
-<span id="1594">1594</span>
-<span id="1595">1595</span>
-<span id="1596">1596</span>
-<span id="1597">1597</span>
-<span id="1598">1598</span>
-<span id="1599">1599</span>
-<span id="1600">1600</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Coin selection</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides the trait [`CoinSelectionAlgorithm`] that can be implemented to</span>
-<span class="doccomment">//! define custom coin selection algorithms.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! You can specify a custom coin selection algorithm through the [`coin_selection`] method on</span>
-<span class="doccomment">//! [`TxBuilder`]. [`DefaultCoinSelectionAlgorithm`] aliases the coin selection algorithm that will</span>
-<span class="doccomment">//! be used if it is not explicitly set.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! [`TxBuilder`]: super::tx_builder::TxBuilder</span>
-<span class="doccomment">//! [`coin_selection`]: super::tx_builder::TxBuilder::coin_selection</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! # use std::str::FromStr;</span>
-<span class="doccomment">//! # use bitcoin::*;</span>
-<span class="doccomment">//! # use bdk::wallet::{self, coin_selection::*};</span>
-<span class="doccomment">//! # use bdk::database::Database;</span>
-<span class="doccomment">//! # use bdk::*;</span>
-<span class="doccomment">//! # use bdk::wallet::coin_selection::decide_change;</span>
-<span class="doccomment">//! # const TXIN_BASE_WEIGHT: usize = (32 + 4 + 4) * 4;</span>
-<span class="doccomment">//! #[derive(Debug)]</span>
-<span class="doccomment">//! struct AlwaysSpendEverything;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! impl<D: Database> CoinSelectionAlgorithm<D> for AlwaysSpendEverything {</span>
-<span class="doccomment">//! fn coin_select(</span>
-<span class="doccomment">//! &self,</span>
-<span class="doccomment">//! database: &D,</span>
-<span class="doccomment">//! required_utxos: Vec<WeightedUtxo>,</span>
-<span class="doccomment">//! optional_utxos: Vec<WeightedUtxo>,</span>
-<span class="doccomment">//! fee_rate: FeeRate,</span>
-<span class="doccomment">//! target_amount: u64,</span>
-<span class="doccomment">//! drain_script: &Script,</span>
-<span class="doccomment">//! ) -> Result<CoinSelectionResult, bdk::Error> {</span>
-<span class="doccomment">//! let mut selected_amount = 0;</span>
-<span class="doccomment">//! let mut additional_weight = 0;</span>
-<span class="doccomment">//! let all_utxos_selected = required_utxos</span>
-<span class="doccomment">//! .into_iter()</span>
-<span class="doccomment">//! .chain(optional_utxos)</span>
-<span class="doccomment">//! .scan(</span>
-<span class="doccomment">//! (&mut selected_amount, &mut additional_weight),</span>
-<span class="doccomment">//! |(selected_amount, additional_weight), weighted_utxo| {</span>
-<span class="doccomment">//! **selected_amount += weighted_utxo.utxo.txout().value;</span>
-<span class="doccomment">//! **additional_weight += TXIN_BASE_WEIGHT + weighted_utxo.satisfaction_weight;</span>
-<span class="doccomment">//! Some(weighted_utxo.utxo)</span>
-<span class="doccomment">//! },</span>
-<span class="doccomment">//! )</span>
-<span class="doccomment">//! .collect::<Vec<_>>();</span>
-<span class="doccomment">//! let additional_fees = fee_rate.fee_wu(additional_weight);</span>
-<span class="doccomment">//! let amount_needed_with_fees = additional_fees + target_amount;</span>
-<span class="doccomment">//! if selected_amount < amount_needed_with_fees {</span>
-<span class="doccomment">//! return Err(bdk::Error::InsufficientFunds {</span>
-<span class="doccomment">//! needed: amount_needed_with_fees,</span>
-<span class="doccomment">//! available: selected_amount,</span>
-<span class="doccomment">//! });</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let remaining_amount = selected_amount - amount_needed_with_fees;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let excess = decide_change(remaining_amount, fee_rate, drain_script);</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Ok(CoinSelectionResult {</span>
-<span class="doccomment">//! selected: all_utxos_selected,</span>
-<span class="doccomment">//! fee_amount: additional_fees,</span>
-<span class="doccomment">//! excess,</span>
-<span class="doccomment">//! })</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # let wallet = doctest_wallet!();</span>
-<span class="doccomment">//! // create wallet, sync, ...</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
-<span class="doccomment">//! let (psbt, details) = {</span>
-<span class="doccomment">//! let mut builder = wallet.build_tx().coin_selection(AlwaysSpendEverything);</span>
-<span class="doccomment">//! builder.add_recipient(to_address.script_pubkey(), 50_000);</span>
-<span class="doccomment">//! builder.finish()?</span>
-<span class="doccomment">//! };</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! // inspect, sign, broadcast, ...</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types::FeeRate</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::utils::IsDust</span>;
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">database::Database</span>, <span class="ident">WeightedUtxo</span>};
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">error::Error</span>, <span class="ident">Utxo</span>};
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::encode::serialize</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::Script</span>;
-
-<span class="kw">use</span> <span class="ident">rand::seq::SliceRandom</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">test</span>))]</span>
-<span class="kw">use</span> <span class="ident">rand::thread_rng</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">rngs::StdRng</span>, <span class="ident">SeedableRng</span>};
-<span class="kw">use</span> <span class="ident">std::collections::HashMap</span>;
-<span class="kw">use</span> <span class="ident">std::convert::TryInto</span>;
-
-<span class="doccomment">/// Default coin selection algorithm used by [`TxBuilder`](super::tx_builder::TxBuilder) if not</span>
-<span class="doccomment">/// overridden</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">test</span>))]</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">DefaultCoinSelectionAlgorithm</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">DefaultCoinSelectionAlgorithm</span> <span class="op">=</span> <span class="ident">LargestFirstCoinSelection</span>; <span class="comment">// make the tests more predictable</span>
-
-<span class="comment">// Base weight of a Txin, not counting the weight needed for satisfying it.</span>
-<span class="comment">// prev_txid (32 bytes) + prev_vout (4 bytes) + sequence (4 bytes)</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const</span> <span class="ident">TXIN_BASE_WEIGHT</span>: <span class="ident">usize</span> <span class="op">=</span> (<span class="number">32</span> <span class="op">+</span> <span class="number">4</span> <span class="op">+</span> <span class="number">4</span>) <span class="op">*</span> <span class="number">4</span>;
-
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="doccomment">/// Remaining amount after performing coin selection</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">Excess</span> {
- <span class="doccomment">/// It's not possible to create spendable output from excess using the current drain output</span>
- <span class="ident">NoChange</span> {
- <span class="doccomment">/// Threshold to consider amount as dust for this particular change script_pubkey</span>
- <span class="ident">dust_threshold</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Exceeding amount of current selection over outgoing value and fee costs</span>
- <span class="ident">remaining_amount</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// The calculated fee for the drain TxOut with the selected script_pubkey</span>
- <span class="ident">change_fee</span>: <span class="ident">u64</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/coin_selection.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>coin_selection.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Coin selection
+//!
+//! This module provides the trait [`CoinSelectionAlgorithm`] that can be implemented to
+//! define custom coin selection algorithms.
+//!
+//! You can specify a custom coin selection algorithm through the [`coin_selection`] method on
+//! [`TxBuilder`]. [`DefaultCoinSelectionAlgorithm`] aliases the coin selection algorithm that will
+//! be used if it is not explicitly set.
+//!
+//! [`TxBuilder`]: super::tx_builder::TxBuilder
+//! [`coin_selection`]: super::tx_builder::TxBuilder::coin_selection
+//!
+//! ## Example
+//!
+//! ```
+//! # use std::str::FromStr;
+//! # use bitcoin::*;
+//! # use bdk::wallet::{self, coin_selection::*};
+//! # use bdk::database::Database;
+//! # use bdk::*;
+//! # use bdk::wallet::coin_selection::decide_change;
+//! # const TXIN_BASE_WEIGHT: usize = (32 + 4 + 4) * 4;
+//! #[derive(Debug)]
+//! struct AlwaysSpendEverything;
+//!
+//! impl<D: Database> CoinSelectionAlgorithm<D> for AlwaysSpendEverything {
+//! fn coin_select(
+//! &self,
+//! database: &D,
+//! required_utxos: Vec<WeightedUtxo>,
+//! optional_utxos: Vec<WeightedUtxo>,
+//! fee_rate: FeeRate,
+//! target_amount: u64,
+//! drain_script: &Script,
+//! ) -> Result<CoinSelectionResult, bdk::Error> {
+//! let mut selected_amount = 0;
+//! let mut additional_weight = 0;
+//! let all_utxos_selected = required_utxos
+//! .into_iter()
+//! .chain(optional_utxos)
+//! .scan(
+//! (&mut selected_amount, &mut additional_weight),
+//! |(selected_amount, additional_weight), weighted_utxo| {
+//! **selected_amount += weighted_utxo.utxo.txout().value;
+//! **additional_weight += TXIN_BASE_WEIGHT + weighted_utxo.satisfaction_weight;
+//! Some(weighted_utxo.utxo)
+//! },
+//! )
+//! .collect::<Vec<_>>();
+//! let additional_fees = fee_rate.fee_wu(additional_weight);
+//! let amount_needed_with_fees = additional_fees + target_amount;
+//! if selected_amount < amount_needed_with_fees {
+//! return Err(bdk::Error::InsufficientFunds {
+//! needed: amount_needed_with_fees,
+//! available: selected_amount,
+//! });
+//! }
+//!
+//! let remaining_amount = selected_amount - amount_needed_with_fees;
+//!
+//! let excess = decide_change(remaining_amount, fee_rate, drain_script);
+//!
+//! Ok(CoinSelectionResult {
+//! selected: all_utxos_selected,
+//! fee_amount: additional_fees,
+//! excess,
+//! })
+//! }
+//! }
+//!
+//! # let wallet = doctest_wallet!();
+//! // create wallet, sync, ...
+//!
+//! let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+//! let (psbt, details) = {
+//! let mut builder = wallet.build_tx().coin_selection(AlwaysSpendEverything);
+//! builder.add_recipient(to_address.script_pubkey(), 50_000);
+//! builder.finish()?
+//! };
+//!
+//! // inspect, sign, broadcast, ...
+//!
+//! # Ok::<(), bdk::Error>(())
+//! ```
+
+</span><span class="kw">use </span><span class="kw">crate</span>::types::FeeRate;
+<span class="kw">use </span><span class="kw">crate</span>::wallet::utils::IsDust;
+<span class="kw">use crate</span>::{database::Database, WeightedUtxo};
+<span class="kw">use crate</span>::{error::Error, Utxo};
+
+<span class="kw">use </span>bitcoin::consensus::encode::serialize;
+<span class="kw">use </span>bitcoin::Script;
+
+<span class="kw">use </span>rand::seq::SliceRandom;
+<span class="attr">#[cfg(not(test))]
+</span><span class="kw">use </span>rand::thread_rng;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">use </span>rand::{rngs::StdRng, SeedableRng};
+<span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::convert::TryInto;
+
+<span class="doccomment">/// Default coin selection algorithm used by [`TxBuilder`](super::tx_builder::TxBuilder) if not
+/// overridden
+</span><span class="attr">#[cfg(not(test))]
+</span><span class="kw">pub type </span>DefaultCoinSelectionAlgorithm = BranchAndBoundCoinSelection;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">pub type </span>DefaultCoinSelectionAlgorithm = LargestFirstCoinSelection; <span class="comment">// make the tests more predictable
+
+// Base weight of a Txin, not counting the weight needed for satisfying it.
+// prev_txid (32 bytes) + prev_vout (4 bytes) + sequence (4 bytes)
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const </span>TXIN_BASE_WEIGHT: usize = (<span class="number">32 </span>+ <span class="number">4 </span>+ <span class="number">4</span>) * <span class="number">4</span>;
+
+<span class="attr">#[derive(Debug)]
+</span><span class="doccomment">/// Remaining amount after performing coin selection
+</span><span class="kw">pub enum </span>Excess {
+ <span class="doccomment">/// It's not possible to create spendable output from excess using the current drain output
+ </span>NoChange {
+ <span class="doccomment">/// Threshold to consider amount as dust for this particular change script_pubkey
+ </span>dust_threshold: u64,
+ <span class="doccomment">/// Exceeding amount of current selection over outgoing value and fee costs
+ </span>remaining_amount: u64,
+ <span class="doccomment">/// The calculated fee for the drain TxOut with the selected script_pubkey
+ </span>change_fee: u64,
},
- <span class="doccomment">/// It's possible to create spendable output from excess using the current drain output</span>
- <span class="ident">Change</span> {
- <span class="doccomment">/// Effective amount available to create change after deducting the change output fee</span>
- <span class="ident">amount</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// The deducted change output fee</span>
- <span class="ident">fee</span>: <span class="ident">u64</span>,
+ <span class="doccomment">/// It's possible to create spendable output from excess using the current drain output
+ </span>Change {
+ <span class="doccomment">/// Effective amount available to create change after deducting the change output fee
+ </span>amount: u64,
+ <span class="doccomment">/// The deducted change output fee
+ </span>fee: u64,
},
}
-<span class="doccomment">/// Result of a successful coin selection</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CoinSelectionResult</span> {
- <span class="doccomment">/// List of outputs selected for use as inputs</span>
- <span class="kw">pub</span> <span class="ident">selected</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Utxo</span><span class="op">></span>,
- <span class="doccomment">/// Total fee amount for the selected utxos in satoshis</span>
- <span class="kw">pub</span> <span class="ident">fee_amount</span>: <span class="ident">u64</span>,
- <span class="doccomment">/// Remaining amount after deducing fees and outgoing outputs</span>
- <span class="kw">pub</span> <span class="ident">excess</span>: <span class="ident">Excess</span>,
+<span class="doccomment">/// Result of a successful coin selection
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>CoinSelectionResult {
+ <span class="doccomment">/// List of outputs selected for use as inputs
+ </span><span class="kw">pub </span>selected: Vec<Utxo>,
+ <span class="doccomment">/// Total fee amount for the selected utxos in satoshis
+ </span><span class="kw">pub </span>fee_amount: u64,
+ <span class="doccomment">/// Remaining amount after deducing fees and outgoing outputs
+ </span><span class="kw">pub </span>excess: Excess,
}
-<span class="kw">impl</span> <span class="ident">CoinSelectionResult</span> {
- <span class="doccomment">/// The total value of the inputs selected.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">selected_amount</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">u64</span> {
- <span class="self">self</span>.<span class="ident">selected</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">txout</span>().<span class="ident">value</span>).<span class="ident">sum</span>()
+<span class="kw">impl </span>CoinSelectionResult {
+ <span class="doccomment">/// The total value of the inputs selected.
+ </span><span class="kw">pub fn </span>selected_amount(<span class="kw-2">&</span><span class="self">self</span>) -> u64 {
+ <span class="self">self</span>.selected.iter().map(|u| u.txout().value).sum()
}
- <span class="doccomment">/// The total value of the inputs selected from the local wallet.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">local_selected_amount</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">u64</span> {
- <span class="self">self</span>.<span class="ident">selected</span>
- .<span class="ident">iter</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="kw">match</span> <span class="ident">u</span> {
- <span class="ident">Utxo::Local</span>(<span class="kw">_</span>) => <span class="prelude-val">Some</span>(<span class="ident">u</span>.<span class="ident">txout</span>().<span class="ident">value</span>),
- <span class="kw">_</span> => <span class="prelude-val">None</span>,
+ <span class="doccomment">/// The total value of the inputs selected from the local wallet.
+ </span><span class="kw">pub fn </span>local_selected_amount(<span class="kw-2">&</span><span class="self">self</span>) -> u64 {
+ <span class="self">self</span>.selected
+ .iter()
+ .filter_map(|u| <span class="kw">match </span>u {
+ Utxo::Local(<span class="kw">_</span>) => <span class="prelude-val">Some</span>(u.txout().value),
+ <span class="kw">_ </span>=> <span class="prelude-val">None</span>,
})
- .<span class="ident">sum</span>()
+ .sum()
}
}
-<span class="doccomment">/// Trait for generalized coin selection algorithms</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait can be implemented to make the [`Wallet`](super::Wallet) use a customized coin</span>
-<span class="doccomment">/// selection algorithm when it creates transactions.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// For an example see [this module](crate::wallet::coin_selection)'s documentation.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>: <span class="ident">std::fmt::Debug</span> {
- <span class="doccomment">/// Perform the coin selection</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// - `database`: a reference to the wallet's database that can be used to lookup additional</span>
- <span class="doccomment">/// details for a specific UTXO</span>
- <span class="doccomment">/// - `required_utxos`: the utxos that must be spent regardless of `target_amount` with their</span>
- <span class="doccomment">/// weight cost</span>
- <span class="doccomment">/// - `optional_utxos`: the remaining available utxos to satisfy `target_amount` with their</span>
- <span class="doccomment">/// weight cost</span>
- <span class="doccomment">/// - `fee_rate`: fee rate to use</span>
- <span class="doccomment">/// - `target_amount`: the outgoing amount in satoshis and the fees already</span>
- <span class="doccomment">/// accumulated from added outputs and transaction’s header.</span>
- <span class="doccomment">/// - `drain_script`: the script to use in case of change</span>
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::too_many_arguments</span>)]</span>
- <span class="kw">fn</span> <span class="ident">coin_select</span>(
+<span class="doccomment">/// Trait for generalized coin selection algorithms
+///
+/// This trait can be implemented to make the [`Wallet`](super::Wallet) use a customized coin
+/// selection algorithm when it creates transactions.
+///
+/// For an example see [this module](crate::wallet::coin_selection)'s documentation.
+</span><span class="kw">pub trait </span>CoinSelectionAlgorithm<D: Database>: std::fmt::Debug {
+ <span class="doccomment">/// Perform the coin selection
+ ///
+ /// - `database`: a reference to the wallet's database that can be used to lookup additional
+ /// details for a specific UTXO
+ /// - `required_utxos`: the utxos that must be spent regardless of `target_amount` with their
+ /// weight cost
+ /// - `optional_utxos`: the remaining available utxos to satisfy `target_amount` with their
+ /// weight cost
+ /// - `fee_rate`: fee rate to use
+ /// - `target_amount`: the outgoing amount in satoshis and the fees already
+ /// accumulated from added outputs and transaction’s header.
+ /// - `drain_script`: the script to use in case of change
+ </span><span class="attr">#[allow(clippy::too_many_arguments)]
+ </span><span class="kw">fn </span>coin_select(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&</span><span class="ident">D</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- <span class="ident">target_amount</span>: <span class="ident">u64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">Error</span><span class="op">></span>;
+ database: <span class="kw-2">&</span>D,
+ required_utxos: Vec<WeightedUtxo>,
+ optional_utxos: Vec<WeightedUtxo>,
+ fee_rate: FeeRate,
+ target_amount: u64,
+ drain_script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><CoinSelectionResult, Error>;
}
-<span class="doccomment">/// Simple and dumb coin selection</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This coin selection algorithm sorts the available UTXOs by value and then picks them starting</span>
-<span class="doccomment">/// from the largest ones until the required amount is reached.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">LargestFirstCoinSelection</span>;
+<span class="doccomment">/// Simple and dumb coin selection
+///
+/// This coin selection algorithm sorts the available UTXOs by value and then picks them starting
+/// from the largest ones until the required amount is reached.
+</span><span class="attr">#[derive(Debug, Default, Clone, Copy)]
+</span><span class="kw">pub struct </span>LargestFirstCoinSelection;
-<span class="kw">impl</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span> <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span> <span class="kw">for</span> <span class="ident">LargestFirstCoinSelection</span> {
- <span class="kw">fn</span> <span class="ident">coin_select</span>(
+<span class="kw">impl</span><D: Database> CoinSelectionAlgorithm<D> <span class="kw">for </span>LargestFirstCoinSelection {
+ <span class="kw">fn </span>coin_select(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">_database</span>: <span class="kw-2">&</span><span class="ident">D</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="kw-2">mut</span> <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- <span class="ident">target_amount</span>: <span class="ident">u64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">Error</span><span class="op">></span> {
+ _database: <span class="kw-2">&</span>D,
+ required_utxos: Vec<WeightedUtxo>,
+ <span class="kw-2">mut </span>optional_utxos: Vec<WeightedUtxo>,
+ fee_rate: FeeRate,
+ target_amount: u64,
+ drain_script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><CoinSelectionResult, Error> {
<span class="macro">log::debug!</span>(
<span class="string">"target_amount = `{}`, fee_rate = `{:?}`"</span>,
- <span class="ident">target_amount</span>,
- <span class="ident">fee_rate</span>
+ target_amount,
+ fee_rate
);
- <span class="comment">// We put the "required UTXOs" first and make sure the optional UTXOs are sorted,</span>
- <span class="comment">// initially smallest to largest, before being reversed with `.rev()`.</span>
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> {
- <span class="ident">optional_utxos</span>.<span class="ident">sort_unstable_by_key</span>(<span class="op">|</span><span class="ident">wu</span><span class="op">|</span> <span class="ident">wu</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>);
- <span class="ident">required_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> (<span class="bool-val">true</span>, <span class="ident">utxo</span>))
- .<span class="ident">chain</span>(<span class="ident">optional_utxos</span>.<span class="ident">into_iter</span>().<span class="ident">rev</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> (<span class="bool-val">false</span>, <span class="ident">utxo</span>)))
+ <span class="comment">// We put the "required UTXOs" first and make sure the optional UTXOs are sorted,
+ // initially smallest to largest, before being reversed with `.rev()`.
+ </span><span class="kw">let </span>utxos = {
+ optional_utxos.sort_unstable_by_key(|wu| wu.utxo.txout().value);
+ required_utxos
+ .into_iter()
+ .map(|utxo| (<span class="bool-val">true</span>, utxo))
+ .chain(optional_utxos.into_iter().rev().map(|utxo| (<span class="bool-val">false</span>, utxo)))
};
- <span class="ident">select_sorted_utxos</span>(<span class="ident">utxos</span>, <span class="ident">fee_rate</span>, <span class="ident">target_amount</span>, <span class="ident">drain_script</span>)
+ select_sorted_utxos(utxos, fee_rate, target_amount, drain_script)
}
}
-<span class="doccomment">/// OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This coin selection algorithm sorts the available UTXOs by blockheight and then picks them starting</span>
-<span class="doccomment">/// from the oldest ones until the required amount is reached.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">OldestFirstCoinSelection</span>;
+<span class="doccomment">/// OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next
+///
+/// This coin selection algorithm sorts the available UTXOs by blockheight and then picks them starting
+/// from the oldest ones until the required amount is reached.
+</span><span class="attr">#[derive(Debug, Default, Clone, Copy)]
+</span><span class="kw">pub struct </span>OldestFirstCoinSelection;
-<span class="kw">impl</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span> <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span> <span class="kw">for</span> <span class="ident">OldestFirstCoinSelection</span> {
- <span class="kw">fn</span> <span class="ident">coin_select</span>(
+<span class="kw">impl</span><D: Database> CoinSelectionAlgorithm<D> <span class="kw">for </span>OldestFirstCoinSelection {
+ <span class="kw">fn </span>coin_select(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">database</span>: <span class="kw-2">&</span><span class="ident">D</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="kw-2">mut</span> <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- <span class="ident">target_amount</span>: <span class="ident">u64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// query db and create a blockheight lookup table</span>
- <span class="kw">let</span> <span class="ident">blockheights</span> <span class="op">=</span> <span class="ident">optional_utxos</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">wu</span><span class="op">|</span> <span class="ident">wu</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>)
- <span class="comment">// fold is used so we can skip db query for txid that already exist in hashmap acc</span>
- .<span class="ident">fold</span>(<span class="prelude-val">Ok</span>(<span class="ident">HashMap::new</span>()), <span class="op">|</span><span class="ident">bh_result_acc</span>, <span class="ident">txid</span><span class="op">|</span> {
- <span class="ident">bh_result_acc</span>.<span class="ident">and_then</span>(<span class="op">|</span><span class="kw-2">mut</span> <span class="ident">bh_acc</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">bh_acc</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="ident">txid</span>) {
- <span class="prelude-val">Ok</span>(<span class="ident">bh_acc</span>)
- } <span class="kw">else</span> {
- <span class="ident">database</span>.<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">txid</span>, <span class="bool-val">false</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">details</span><span class="op">|</span> {
- <span class="ident">bh_acc</span>.<span class="ident">insert</span>(
- <span class="ident">txid</span>,
- <span class="ident">details</span>.<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">d</span><span class="op">|</span> <span class="ident">d</span>.<span class="ident">confirmation_time</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">ct</span><span class="op">|</span> <span class="ident">ct</span>.<span class="ident">height</span>)),
+ database: <span class="kw-2">&</span>D,
+ required_utxos: Vec<WeightedUtxo>,
+ <span class="kw-2">mut </span>optional_utxos: Vec<WeightedUtxo>,
+ fee_rate: FeeRate,
+ target_amount: u64,
+ drain_script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><CoinSelectionResult, Error> {
+ <span class="comment">// query db and create a blockheight lookup table
+ </span><span class="kw">let </span>blockheights = optional_utxos
+ .iter()
+ .map(|wu| wu.utxo.outpoint().txid)
+ <span class="comment">// fold is used so we can skip db query for txid that already exist in hashmap acc
+ </span>.fold(<span class="prelude-val">Ok</span>(HashMap::new()), |bh_result_acc, txid| {
+ bh_result_acc.and_then(|<span class="kw-2">mut </span>bh_acc| {
+ <span class="kw">if </span>bh_acc.contains_key(<span class="kw-2">&</span>txid) {
+ <span class="prelude-val">Ok</span>(bh_acc)
+ } <span class="kw">else </span>{
+ database.get_tx(<span class="kw-2">&</span>txid, <span class="bool-val">false</span>).map(|details| {
+ bh_acc.insert(
+ txid,
+ details.and_then(|d| d.confirmation_time.map(|ct| ct.height)),
);
- <span class="ident">bh_acc</span>
+ bh_acc
})
}
})
})<span class="question-mark">?</span>;
- <span class="comment">// We put the "required UTXOs" first and make sure the optional UTXOs are sorted from</span>
- <span class="comment">// oldest to newest according to blocktime</span>
- <span class="comment">// For utxo that doesn't exist in DB, they will have lowest priority to be selected</span>
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> {
- <span class="ident">optional_utxos</span>.<span class="ident">sort_unstable_by_key</span>(<span class="op">|</span><span class="ident">wu</span><span class="op">|</span> {
- <span class="kw">match</span> <span class="ident">blockheights</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">wu</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>) {
- <span class="prelude-val">Some</span>(<span class="prelude-val">Some</span>(<span class="ident">blockheight</span>)) => <span class="ident">blockheight</span>,
- <span class="kw">_</span> => <span class="kw-2">&</span><span class="ident">u32::MAX</span>,
+ <span class="comment">// We put the "required UTXOs" first and make sure the optional UTXOs are sorted from
+ // oldest to newest according to blocktime
+ // For utxo that doesn't exist in DB, they will have lowest priority to be selected
+ </span><span class="kw">let </span>utxos = {
+ optional_utxos.sort_unstable_by_key(|wu| {
+ <span class="kw">match </span>blockheights.get(<span class="kw-2">&</span>wu.utxo.outpoint().txid) {
+ <span class="prelude-val">Some</span>(<span class="prelude-val">Some</span>(blockheight)) => blockheight,
+ <span class="kw">_ </span>=> <span class="kw-2">&</span>u32::MAX,
}
});
- <span class="ident">required_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> (<span class="bool-val">true</span>, <span class="ident">utxo</span>))
- .<span class="ident">chain</span>(<span class="ident">optional_utxos</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> (<span class="bool-val">false</span>, <span class="ident">utxo</span>)))
+ required_utxos
+ .into_iter()
+ .map(|utxo| (<span class="bool-val">true</span>, utxo))
+ .chain(optional_utxos.into_iter().map(|utxo| (<span class="bool-val">false</span>, utxo)))
};
- <span class="ident">select_sorted_utxos</span>(<span class="ident">utxos</span>, <span class="ident">fee_rate</span>, <span class="ident">target_amount</span>, <span class="ident">drain_script</span>)
+ select_sorted_utxos(utxos, fee_rate, target_amount, drain_script)
}
}
-<span class="doccomment">/// Decide if change can be created</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// - `remaining_amount`: the amount in which the selected coins exceed the target amount</span>
-<span class="doccomment">/// - `fee_rate`: required fee rate for the current selection</span>
-<span class="doccomment">/// - `drain_script`: script to consider change creation</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">decide_change</span>(<span class="ident">remaining_amount</span>: <span class="ident">u64</span>, <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>, <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="ident">Excess</span> {
- <span class="comment">// drain_output_len = size(len(script_pubkey)) + len(script_pubkey) + size(output_value)</span>
- <span class="kw">let</span> <span class="ident">drain_output_len</span> <span class="op">=</span> <span class="ident">serialize</span>(<span class="ident">drain_script</span>).<span class="ident">len</span>() <span class="op">+</span> <span class="number">8usize</span>;
- <span class="kw">let</span> <span class="ident">change_fee</span> <span class="op">=</span> <span class="ident">fee_rate</span>.<span class="ident">fee_vb</span>(<span class="ident">drain_output_len</span>);
- <span class="kw">let</span> <span class="ident">drain_val</span> <span class="op">=</span> <span class="ident">remaining_amount</span>.<span class="ident">saturating_sub</span>(<span class="ident">change_fee</span>);
-
- <span class="kw">if</span> <span class="ident">drain_val</span>.<span class="ident">is_dust</span>(<span class="ident">drain_script</span>) {
- <span class="kw">let</span> <span class="ident">dust_threshold</span> <span class="op">=</span> <span class="ident">drain_script</span>.<span class="ident">dust_value</span>().<span class="ident">to_sat</span>();
- <span class="ident">Excess::NoChange</span> {
- <span class="ident">dust_threshold</span>,
- <span class="ident">change_fee</span>,
- <span class="ident">remaining_amount</span>,
+<span class="doccomment">/// Decide if change can be created
+///
+/// - `remaining_amount`: the amount in which the selected coins exceed the target amount
+/// - `fee_rate`: required fee rate for the current selection
+/// - `drain_script`: script to consider change creation
+</span><span class="kw">pub fn </span>decide_change(remaining_amount: u64, fee_rate: FeeRate, drain_script: <span class="kw-2">&</span>Script) -> Excess {
+ <span class="comment">// drain_output_len = size(len(script_pubkey)) + len(script_pubkey) + size(output_value)
+ </span><span class="kw">let </span>drain_output_len = serialize(drain_script).len() + <span class="number">8usize</span>;
+ <span class="kw">let </span>change_fee = fee_rate.fee_vb(drain_output_len);
+ <span class="kw">let </span>drain_val = remaining_amount.saturating_sub(change_fee);
+
+ <span class="kw">if </span>drain_val.is_dust(drain_script) {
+ <span class="kw">let </span>dust_threshold = drain_script.dust_value().to_sat();
+ Excess::NoChange {
+ dust_threshold,
+ change_fee,
+ remaining_amount,
}
- } <span class="kw">else</span> {
- <span class="ident">Excess::Change</span> {
- <span class="ident">amount</span>: <span class="ident">drain_val</span>,
- <span class="ident">fee</span>: <span class="ident">change_fee</span>,
+ } <span class="kw">else </span>{
+ Excess::Change {
+ amount: drain_val,
+ fee: change_fee,
}
}
}
-<span class="kw">fn</span> <span class="ident">select_sorted_utxos</span>(
- <span class="ident">utxos</span>: <span class="kw">impl</span> <span class="ident">Iterator</span><span class="op"><</span><span class="ident">Item</span> <span class="op">=</span> (<span class="ident">bool</span>, <span class="ident">WeightedUtxo</span>)<span class="op">></span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- <span class="ident">target_amount</span>: <span class="ident">u64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">selected_amount</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fee_amount</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">selected</span> <span class="op">=</span> <span class="ident">utxos</span>
- .<span class="ident">scan</span>(
- (<span class="kw-2">&mut</span> <span class="ident">selected_amount</span>, <span class="kw-2">&mut</span> <span class="ident">fee_amount</span>),
- <span class="op">|</span>(<span class="ident">selected_amount</span>, <span class="ident">fee_amount</span>), (<span class="ident">must_use</span>, <span class="ident">weighted_utxo</span>)<span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">must_use</span> <span class="op">|</span><span class="op">|</span> <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">selected_amount</span> <span class="op"><</span> <span class="ident">target_amount</span> <span class="op">+</span> <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">fee_amount</span> {
- <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">fee_amount</span> <span class="op">+</span><span class="op">=</span>
- <span class="ident">fee_rate</span>.<span class="ident">fee_wu</span>(<span class="ident">TXIN_BASE_WEIGHT</span> <span class="op">+</span> <span class="ident">weighted_utxo</span>.<span class="ident">satisfaction_weight</span>);
- <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">selected_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>;
+<span class="kw">fn </span>select_sorted_utxos(
+ utxos: <span class="kw">impl </span>Iterator<Item = (bool, WeightedUtxo)>,
+ fee_rate: FeeRate,
+ target_amount: u64,
+ drain_script: <span class="kw-2">&</span>Script,
+) -> <span class="prelude-ty">Result</span><CoinSelectionResult, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>selected_amount = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>fee_amount = <span class="number">0</span>;
+ <span class="kw">let </span>selected = utxos
+ .scan(
+ (<span class="kw-2">&mut </span>selected_amount, <span class="kw-2">&mut </span>fee_amount),
+ |(selected_amount, fee_amount), (must_use, weighted_utxo)| {
+ <span class="kw">if </span>must_use || <span class="kw-2">**</span>selected_amount < target_amount + <span class="kw-2">**</span>fee_amount {
+ <span class="kw-2">**</span>fee_amount +=
+ fee_rate.fee_wu(TXIN_BASE_WEIGHT + weighted_utxo.satisfaction_weight);
+ <span class="kw-2">**</span>selected_amount += weighted_utxo.utxo.txout().value;
<span class="macro">log::debug!</span>(
<span class="string">"Selected {}, updated fee_amount = `{}`"</span>,
- <span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>(),
- <span class="ident">fee_amount</span>
+ weighted_utxo.utxo.outpoint(),
+ fee_amount
);
- <span class="prelude-val">Some</span>(<span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>)
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- }
+ <span class="prelude-val">Some</span>(weighted_utxo.utxo)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
},
)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ .collect::<Vec<<span class="kw">_</span>>>();
- <span class="kw">let</span> <span class="ident">amount_needed_with_fees</span> <span class="op">=</span> <span class="ident">target_amount</span> <span class="op">+</span> <span class="ident">fee_amount</span>;
- <span class="kw">if</span> <span class="ident">selected_amount</span> <span class="op"><</span> <span class="ident">amount_needed_with_fees</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">needed</span>: <span class="ident">amount_needed_with_fees</span>,
- <span class="ident">available</span>: <span class="ident">selected_amount</span>,
+ <span class="kw">let </span>amount_needed_with_fees = target_amount + fee_amount;
+ <span class="kw">if </span>selected_amount < amount_needed_with_fees {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InsufficientFunds {
+ needed: amount_needed_with_fees,
+ available: selected_amount,
});
}
- <span class="kw">let</span> <span class="ident">remaining_amount</span> <span class="op">=</span> <span class="ident">selected_amount</span> <span class="op">-</span> <span class="ident">amount_needed_with_fees</span>;
+ <span class="kw">let </span>remaining_amount = selected_amount - amount_needed_with_fees;
- <span class="kw">let</span> <span class="ident">excess</span> <span class="op">=</span> <span class="ident">decide_change</span>(<span class="ident">remaining_amount</span>, <span class="ident">fee_rate</span>, <span class="ident">drain_script</span>);
+ <span class="kw">let </span>excess = decide_change(remaining_amount, fee_rate, drain_script);
- <span class="prelude-val">Ok</span>(<span class="ident">CoinSelectionResult</span> {
- <span class="ident">selected</span>,
- <span class="ident">fee_amount</span>,
- <span class="ident">excess</span>,
+ <span class="prelude-val">Ok</span>(CoinSelectionResult {
+ selected,
+ fee_amount,
+ excess,
})
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="comment">// Adds fee information to an UTXO.</span>
-<span class="kw">struct</span> <span class="ident">OutputGroup</span> {
- <span class="ident">weighted_utxo</span>: <span class="ident">WeightedUtxo</span>,
- <span class="comment">// Amount of fees for spending a certain utxo, calculated using a certain FeeRate</span>
- <span class="ident">fee</span>: <span class="ident">u64</span>,
- <span class="comment">// The effective value of the UTXO, i.e., the utxo value minus the fee for spending it</span>
- <span class="ident">effective_value</span>: <span class="ident">i64</span>,
+<span class="attr">#[derive(Debug, Clone)]
+</span><span class="comment">// Adds fee information to an UTXO.
+</span><span class="kw">struct </span>OutputGroup {
+ weighted_utxo: WeightedUtxo,
+ <span class="comment">// Amount of fees for spending a certain utxo, calculated using a certain FeeRate
+ </span>fee: u64,
+ <span class="comment">// The effective value of the UTXO, i.e., the utxo value minus the fee for spending it
+ </span>effective_value: i64,
}
-<span class="kw">impl</span> <span class="ident">OutputGroup</span> {
- <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">weighted_utxo</span>: <span class="ident">WeightedUtxo</span>, <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>) -> <span class="self">Self</span> {
- <span class="kw">let</span> <span class="ident">fee</span> <span class="op">=</span> <span class="ident">fee_rate</span>.<span class="ident">fee_wu</span>(<span class="ident">TXIN_BASE_WEIGHT</span> <span class="op">+</span> <span class="ident">weighted_utxo</span>.<span class="ident">satisfaction_weight</span>);
- <span class="kw">let</span> <span class="ident">effective_value</span> <span class="op">=</span> <span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span> <span class="kw">as</span> <span class="ident">i64</span> <span class="op">-</span> <span class="ident">fee</span> <span class="kw">as</span> <span class="ident">i64</span>;
- <span class="ident">OutputGroup</span> {
- <span class="ident">weighted_utxo</span>,
- <span class="ident">fee</span>,
- <span class="ident">effective_value</span>,
+<span class="kw">impl </span>OutputGroup {
+ <span class="kw">fn </span>new(weighted_utxo: WeightedUtxo, fee_rate: FeeRate) -> <span class="self">Self </span>{
+ <span class="kw">let </span>fee = fee_rate.fee_wu(TXIN_BASE_WEIGHT + weighted_utxo.satisfaction_weight);
+ <span class="kw">let </span>effective_value = weighted_utxo.utxo.txout().value <span class="kw">as </span>i64 - fee <span class="kw">as </span>i64;
+ OutputGroup {
+ weighted_utxo,
+ fee,
+ effective_value,
}
}
}
-<span class="doccomment">/// Branch and bound coin selection</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Code adapted from Bitcoin Core's implementation and from Mark Erhardt Master's Thesis: <http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf></span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">BranchAndBoundCoinSelection</span> {
- <span class="ident">size_of_change</span>: <span class="ident">u64</span>,
+<span class="doccomment">/// Branch and bound coin selection
+///
+/// Code adapted from Bitcoin Core's implementation and from Mark Erhardt Master's Thesis: <http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf>
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>BranchAndBoundCoinSelection {
+ size_of_change: u64,
}
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">BranchAndBoundCoinSelection</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="self">Self</span> {
- <span class="comment">// P2WPKH cost of change -> value (8 bytes) + script len (1 bytes) + script (22 bytes)</span>
- <span class="ident">size_of_change</span>: <span class="number">8</span> <span class="op">+</span> <span class="number">1</span> <span class="op">+</span> <span class="number">22</span>,
+<span class="kw">impl </span>Default <span class="kw">for </span>BranchAndBoundCoinSelection {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ <span class="comment">// P2WPKH cost of change -> value (8 bytes) + script len (1 bytes) + script (22 bytes)
+ </span>size_of_change: <span class="number">8 </span>+ <span class="number">1 </span>+ <span class="number">22</span>,
}
}
}
-<span class="kw">impl</span> <span class="ident">BranchAndBoundCoinSelection</span> {
- <span class="doccomment">/// Create new instance with target size for change output</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">size_of_change</span>: <span class="ident">u64</span>) -> <span class="self">Self</span> {
- <span class="self">Self</span> { <span class="ident">size_of_change</span> }
+<span class="kw">impl </span>BranchAndBoundCoinSelection {
+ <span class="doccomment">/// Create new instance with target size for change output
+ </span><span class="kw">pub fn </span>new(size_of_change: u64) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{ size_of_change }
}
}
-<span class="kw">const</span> <span class="ident">BNB_TOTAL_TRIES</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">100_000</span>;
+<span class="kw">const </span>BNB_TOTAL_TRIES: usize = <span class="number">100_000</span>;
-<span class="kw">impl</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span> <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span> <span class="kw">for</span> <span class="ident">BranchAndBoundCoinSelection</span> {
- <span class="kw">fn</span> <span class="ident">coin_select</span>(
+<span class="kw">impl</span><D: Database> CoinSelectionAlgorithm<D> <span class="kw">for </span>BranchAndBoundCoinSelection {
+ <span class="kw">fn </span>coin_select(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">_database</span>: <span class="kw-2">&</span><span class="ident">D</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- <span class="ident">target_amount</span>: <span class="ident">u64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// Mapping every (UTXO, usize) to an output group</span>
- <span class="kw">let</span> <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span> <span class="op">=</span> <span class="ident">required_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">collect</span>();
-
- <span class="comment">// Mapping every (UTXO, usize) to an output group, filtering UTXOs with a negative</span>
- <span class="comment">// effective value</span>
- <span class="kw">let</span> <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span> <span class="op">=</span> <span class="ident">optional_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">effective_value</span>.<span class="ident">is_positive</span>())
- .<span class="ident">collect</span>();
-
- <span class="kw">let</span> <span class="ident">curr_value</span> <span class="op">=</span> <span class="ident">required_utxos</span>
- .<span class="ident">iter</span>()
- .<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">effective_value</span>);
-
- <span class="kw">let</span> <span class="ident">curr_available_value</span> <span class="op">=</span> <span class="ident">optional_utxos</span>
- .<span class="ident">iter</span>()
- .<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">effective_value</span>);
-
- <span class="kw">let</span> <span class="ident">cost_of_change</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">size_of_change</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">fee_rate</span>.<span class="ident">as_sat_per_vb</span>();
-
- <span class="comment">// `curr_value` and `curr_available_value` are both the sum of *effective_values* of</span>
- <span class="comment">// the UTXOs. For the optional UTXOs (curr_available_value) we filter out UTXOs with</span>
- <span class="comment">// negative effective value, so it will always be positive.</span>
- <span class="comment">//</span>
- <span class="comment">// Since we are required to spend the required UTXOs (curr_value) we have to consider</span>
- <span class="comment">// all their effective values, even when negative, which means that curr_value could</span>
- <span class="comment">// be negative as well.</span>
- <span class="comment">//</span>
- <span class="comment">// If the sum of curr_value and curr_available_value is negative or lower than our target,</span>
- <span class="comment">// we can immediately exit with an error, as it's guaranteed we will never find a solution</span>
- <span class="comment">// if we actually run the BnB.</span>
- <span class="kw">let</span> <span class="ident">total_value</span>: <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u64</span>, <span class="kw">_</span><span class="op">></span> <span class="op">=</span> (<span class="ident">curr_available_value</span> <span class="op">+</span> <span class="ident">curr_value</span>).<span class="ident">try_into</span>();
- <span class="kw">match</span> <span class="ident">total_value</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">v</span>) <span class="kw">if</span> <span class="ident">v</span> <span class="op">></span><span class="op">=</span> <span class="ident">target_amount</span> => {}
- <span class="kw">_</span> => {
- <span class="comment">// Assume we spend all the UTXOs we can (all the required + all the optional with</span>
- <span class="comment">// positive effective value), sum their value and their fee cost.</span>
- <span class="kw">let</span> (<span class="ident">utxo_fees</span>, <span class="ident">utxo_value</span>) <span class="op">=</span> <span class="ident">required_utxos</span>
- .<span class="ident">iter</span>()
- .<span class="ident">chain</span>(<span class="ident">optional_utxos</span>.<span class="ident">iter</span>())
- .<span class="ident">fold</span>((<span class="number">0</span>, <span class="number">0</span>), <span class="op">|</span>(<span class="kw-2">mut</span> <span class="ident">fees</span>, <span class="kw-2">mut</span> <span class="ident">value</span>), <span class="ident">utxo</span><span class="op">|</span> {
- <span class="ident">fees</span> <span class="op">+</span><span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">fee</span>;
- <span class="ident">value</span> <span class="op">+</span><span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>;
-
- (<span class="ident">fees</span>, <span class="ident">value</span>)
+ _database: <span class="kw-2">&</span>D,
+ required_utxos: Vec<WeightedUtxo>,
+ optional_utxos: Vec<WeightedUtxo>,
+ fee_rate: FeeRate,
+ target_amount: u64,
+ drain_script: <span class="kw-2">&</span>Script,
+ ) -> <span class="prelude-ty">Result</span><CoinSelectionResult, Error> {
+ <span class="comment">// Mapping every (UTXO, usize) to an output group
+ </span><span class="kw">let </span>required_utxos: Vec<OutputGroup> = required_utxos
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .collect();
+
+ <span class="comment">// Mapping every (UTXO, usize) to an output group, filtering UTXOs with a negative
+ // effective value
+ </span><span class="kw">let </span>optional_utxos: Vec<OutputGroup> = optional_utxos
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .filter(|u| u.effective_value.is_positive())
+ .collect();
+
+ <span class="kw">let </span>curr_value = required_utxos
+ .iter()
+ .fold(<span class="number">0</span>, |acc, x| acc + x.effective_value);
+
+ <span class="kw">let </span>curr_available_value = optional_utxos
+ .iter()
+ .fold(<span class="number">0</span>, |acc, x| acc + x.effective_value);
+
+ <span class="kw">let </span>cost_of_change = <span class="self">self</span>.size_of_change <span class="kw">as </span>f32 * fee_rate.as_sat_per_vb();
+
+ <span class="comment">// `curr_value` and `curr_available_value` are both the sum of *effective_values* of
+ // the UTXOs. For the optional UTXOs (curr_available_value) we filter out UTXOs with
+ // negative effective value, so it will always be positive.
+ //
+ // Since we are required to spend the required UTXOs (curr_value) we have to consider
+ // all their effective values, even when negative, which means that curr_value could
+ // be negative as well.
+ //
+ // If the sum of curr_value and curr_available_value is negative or lower than our target,
+ // we can immediately exit with an error, as it's guaranteed we will never find a solution
+ // if we actually run the BnB.
+ </span><span class="kw">let </span>total_value: <span class="prelude-ty">Result</span><u64, <span class="kw">_</span>> = (curr_available_value + curr_value).try_into();
+ <span class="kw">match </span>total_value {
+ <span class="prelude-val">Ok</span>(v) <span class="kw">if </span>v >= target_amount => {}
+ <span class="kw">_ </span>=> {
+ <span class="comment">// Assume we spend all the UTXOs we can (all the required + all the optional with
+ // positive effective value), sum their value and their fee cost.
+ </span><span class="kw">let </span>(utxo_fees, utxo_value) = required_utxos
+ .iter()
+ .chain(optional_utxos.iter())
+ .fold((<span class="number">0</span>, <span class="number">0</span>), |(<span class="kw-2">mut </span>fees, <span class="kw-2">mut </span>value), utxo| {
+ fees += utxo.fee;
+ value += utxo.weighted_utxo.utxo.txout().value;
+
+ (fees, value)
});
- <span class="comment">// Add to the target the fee cost of the UTXOs</span>
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">needed</span>: <span class="ident">target_amount</span> <span class="op">+</span> <span class="ident">utxo_fees</span>,
- <span class="ident">available</span>: <span class="ident">utxo_value</span>,
+ <span class="comment">// Add to the target the fee cost of the UTXOs
+ </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::InsufficientFunds {
+ needed: target_amount + utxo_fees,
+ available: utxo_value,
});
}
}
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="ident">target_amount</span>
- .<span class="ident">try_into</span>()
- .<span class="ident">expect</span>(<span class="string">"Bitcoin amount to fit into i64"</span>);
+ <span class="kw">let </span>target_amount = target_amount
+ .try_into()
+ .expect(<span class="string">"Bitcoin amount to fit into i64"</span>);
- <span class="kw">if</span> <span class="ident">curr_value</span> <span class="op">></span> <span class="ident">target_amount</span> {
- <span class="comment">// remaining_amount can't be negative as that would mean the</span>
- <span class="comment">// selection wasn't successful</span>
- <span class="comment">// target_amount = amount_needed + (fee_amount - vin_fees)</span>
- <span class="kw">let</span> <span class="ident">remaining_amount</span> <span class="op">=</span> (<span class="ident">curr_value</span> <span class="op">-</span> <span class="ident">target_amount</span>) <span class="kw">as</span> <span class="ident">u64</span>;
+ <span class="kw">if </span>curr_value > target_amount {
+ <span class="comment">// remaining_amount can't be negative as that would mean the
+ // selection wasn't successful
+ // target_amount = amount_needed + (fee_amount - vin_fees)
+ </span><span class="kw">let </span>remaining_amount = (curr_value - target_amount) <span class="kw">as </span>u64;
- <span class="kw">let</span> <span class="ident">excess</span> <span class="op">=</span> <span class="ident">decide_change</span>(<span class="ident">remaining_amount</span>, <span class="ident">fee_rate</span>, <span class="ident">drain_script</span>);
+ <span class="kw">let </span>excess = decide_change(remaining_amount, fee_rate, drain_script);
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="ident">BranchAndBoundCoinSelection::calculate_cs_result</span>(
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(BranchAndBoundCoinSelection::calculate_cs_result(
<span class="macro">vec!</span>[],
- <span class="ident">required_utxos</span>,
- <span class="ident">excess</span>,
+ required_utxos,
+ excess,
));
}
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">bnb</span>(
- <span class="ident">required_utxos</span>.<span class="ident">clone</span>(),
- <span class="ident">optional_utxos</span>.<span class="ident">clone</span>(),
- <span class="ident">curr_value</span>,
- <span class="ident">curr_available_value</span>,
- <span class="ident">target_amount</span>,
- <span class="ident">cost_of_change</span>,
- <span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.bnb(
+ required_utxos.clone(),
+ optional_utxos.clone(),
+ curr_value,
+ curr_available_value,
+ target_amount,
+ cost_of_change,
+ drain_script,
+ fee_rate,
)
- .<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> {
- <span class="self">self</span>.<span class="ident">single_random_draw</span>(
- <span class="ident">required_utxos</span>,
- <span class="ident">optional_utxos</span>,
- <span class="ident">curr_value</span>,
- <span class="ident">target_amount</span>,
- <span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ .unwrap_or_else(|<span class="kw">_</span>| {
+ <span class="self">self</span>.single_random_draw(
+ required_utxos,
+ optional_utxos,
+ curr_value,
+ target_amount,
+ drain_script,
+ fee_rate,
)
}))
}
}
-<span class="kw">impl</span> <span class="ident">BranchAndBoundCoinSelection</span> {
- <span class="comment">// TODO: make this more Rust-onic :)</span>
- <span class="comment">// (And perhaps refactor with less arguments?)</span>
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::too_many_arguments</span>)]</span>
- <span class="kw">fn</span> <span class="ident">bnb</span>(
+<span class="kw">impl </span>BranchAndBoundCoinSelection {
+ <span class="comment">// TODO: make this more Rust-onic :)
+ // (And perhaps refactor with less arguments?)
+ </span><span class="attr">#[allow(clippy::too_many_arguments)]
+ </span><span class="kw">fn </span>bnb(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span>,
- <span class="kw-2">mut</span> <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span>,
- <span class="kw-2">mut</span> <span class="ident">curr_value</span>: <span class="ident">i64</span>,
- <span class="kw-2">mut</span> <span class="ident">curr_available_value</span>: <span class="ident">i64</span>,
- <span class="ident">target_amount</span>: <span class="ident">i64</span>,
- <span class="ident">cost_of_change</span>: <span class="ident">f32</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">CoinSelectionResult</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// current_selection[i] will contain true if we are using optional_utxos[i],</span>
- <span class="comment">// false otherwise. Note that current_selection.len() could be less than</span>
- <span class="comment">// optional_utxos.len(), it just means that we still haven't decided if we should keep</span>
- <span class="comment">// certain optional_utxos or not.</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">current_selection</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">bool</span><span class="op">></span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">optional_utxos</span>.<span class="ident">len</span>());
-
- <span class="comment">// Sort the utxo_pool</span>
- <span class="ident">optional_utxos</span>.<span class="ident">sort_unstable_by_key</span>(<span class="op">|</span><span class="ident">a</span><span class="op">|</span> <span class="ident">a</span>.<span class="ident">effective_value</span>);
- <span class="ident">optional_utxos</span>.<span class="ident">reverse</span>();
-
- <span class="comment">// Contains the best selection we found</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">best_selection</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">best_selection_value</span> <span class="op">=</span> <span class="prelude-val">None</span>;
-
- <span class="comment">// Depth First search loop for choosing the UTXOs</span>
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">BNB_TOTAL_TRIES</span> {
- <span class="comment">// Conditions for starting a backtrack</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">backtrack</span> <span class="op">=</span> <span class="bool-val">false</span>;
- <span class="comment">// Cannot possibly reach target with the amount remaining in the curr_available_value,</span>
- <span class="comment">// or the selected value is out of range.</span>
- <span class="comment">// Go back and try other branch</span>
- <span class="kw">if</span> <span class="ident">curr_value</span> <span class="op">+</span> <span class="ident">curr_available_value</span> <span class="op"><</span> <span class="ident">target_amount</span>
- <span class="op">|</span><span class="op">|</span> <span class="ident">curr_value</span> <span class="op">></span> <span class="ident">target_amount</span> <span class="op">+</span> <span class="ident">cost_of_change</span> <span class="kw">as</span> <span class="ident">i64</span>
+ required_utxos: Vec<OutputGroup>,
+ <span class="kw-2">mut </span>optional_utxos: Vec<OutputGroup>,
+ <span class="kw-2">mut </span>curr_value: i64,
+ <span class="kw-2">mut </span>curr_available_value: i64,
+ target_amount: i64,
+ cost_of_change: f32,
+ drain_script: <span class="kw-2">&</span>Script,
+ fee_rate: FeeRate,
+ ) -> <span class="prelude-ty">Result</span><CoinSelectionResult, Error> {
+ <span class="comment">// current_selection[i] will contain true if we are using optional_utxos[i],
+ // false otherwise. Note that current_selection.len() could be less than
+ // optional_utxos.len(), it just means that we still haven't decided if we should keep
+ // certain optional_utxos or not.
+ </span><span class="kw">let </span><span class="kw-2">mut </span>current_selection: Vec<bool> = Vec::with_capacity(optional_utxos.len());
+
+ <span class="comment">// Sort the utxo_pool
+ </span>optional_utxos.sort_unstable_by_key(|a| a.effective_value);
+ optional_utxos.reverse();
+
+ <span class="comment">// Contains the best selection we found
+ </span><span class="kw">let </span><span class="kw-2">mut </span>best_selection = Vec::new();
+ <span class="kw">let </span><span class="kw-2">mut </span>best_selection_value = <span class="prelude-val">None</span>;
+
+ <span class="comment">// Depth First search loop for choosing the UTXOs
+ </span><span class="kw">for _ in </span><span class="number">0</span>..BNB_TOTAL_TRIES {
+ <span class="comment">// Conditions for starting a backtrack
+ </span><span class="kw">let </span><span class="kw-2">mut </span>backtrack = <span class="bool-val">false</span>;
+ <span class="comment">// Cannot possibly reach target with the amount remaining in the curr_available_value,
+ // or the selected value is out of range.
+ // Go back and try other branch
+ </span><span class="kw">if </span>curr_value + curr_available_value < target_amount
+ || curr_value > target_amount + cost_of_change <span class="kw">as </span>i64
{
- <span class="ident">backtrack</span> <span class="op">=</span> <span class="bool-val">true</span>;
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">curr_value</span> <span class="op">></span><span class="op">=</span> <span class="ident">target_amount</span> {
- <span class="comment">// Selected value is within range, there's no point in going forward. Start</span>
- <span class="comment">// backtracking</span>
- <span class="ident">backtrack</span> <span class="op">=</span> <span class="bool-val">true</span>;
-
- <span class="comment">// If we found a solution better than the previous one, or if there wasn't previous</span>
- <span class="comment">// solution, update the best solution</span>
- <span class="kw">if</span> <span class="ident">best_selection_value</span>.<span class="ident">is_none</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">curr_value</span> <span class="op"><</span> <span class="ident">best_selection_value</span>.<span class="ident">unwrap</span>() {
- <span class="ident">best_selection</span> <span class="op">=</span> <span class="ident">current_selection</span>.<span class="ident">clone</span>();
- <span class="ident">best_selection_value</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">curr_value</span>);
+ backtrack = <span class="bool-val">true</span>;
+ } <span class="kw">else if </span>curr_value >= target_amount {
+ <span class="comment">// Selected value is within range, there's no point in going forward. Start
+ // backtracking
+ </span>backtrack = <span class="bool-val">true</span>;
+
+ <span class="comment">// If we found a solution better than the previous one, or if there wasn't previous
+ // solution, update the best solution
+ </span><span class="kw">if </span>best_selection_value.is_none() || curr_value < best_selection_value.unwrap() {
+ best_selection = current_selection.clone();
+ best_selection_value = <span class="prelude-val">Some</span>(curr_value);
}
- <span class="comment">// If we found a perfect match, break here</span>
- <span class="kw">if</span> <span class="ident">curr_value</span> <span class="op">==</span> <span class="ident">target_amount</span> {
+ <span class="comment">// If we found a perfect match, break here
+ </span><span class="kw">if </span>curr_value == target_amount {
<span class="kw">break</span>;
}
}
- <span class="comment">// Backtracking, moving backwards</span>
- <span class="kw">if</span> <span class="ident">backtrack</span> {
- <span class="comment">// Walk backwards to find the last included UTXO that still needs to have its omission branch traversed.</span>
- <span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="bool-val">false</span>) <span class="op">=</span> <span class="ident">current_selection</span>.<span class="ident">last</span>() {
- <span class="ident">current_selection</span>.<span class="ident">pop</span>();
- <span class="ident">curr_available_value</span> <span class="op">+</span><span class="op">=</span> <span class="ident">optional_utxos</span>[<span class="ident">current_selection</span>.<span class="ident">len</span>()].<span class="ident">effective_value</span>;
+ <span class="comment">// Backtracking, moving backwards
+ </span><span class="kw">if </span>backtrack {
+ <span class="comment">// Walk backwards to find the last included UTXO that still needs to have its omission branch traversed.
+ </span><span class="kw">while let </span><span class="prelude-val">Some</span>(<span class="bool-val">false</span>) = current_selection.last() {
+ current_selection.pop();
+ curr_available_value += optional_utxos[current_selection.len()].effective_value;
}
- <span class="kw">if</span> <span class="ident">current_selection</span>.<span class="ident">last_mut</span>().<span class="ident">is_none</span>() {
- <span class="comment">// We have walked back to the first utxo and no branch is untraversed. All solutions searched</span>
- <span class="comment">// If best selection is empty, then there's no exact match</span>
- <span class="kw">if</span> <span class="ident">best_selection</span>.<span class="ident">is_empty</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::BnBNoExactMatch</span>);
+ <span class="kw">if </span>current_selection.last_mut().is_none() {
+ <span class="comment">// We have walked back to the first utxo and no branch is untraversed. All solutions searched
+ // If best selection is empty, then there's no exact match
+ </span><span class="kw">if </span>best_selection.is_empty() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BnBNoExactMatch);
}
<span class="kw">break</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">c</span>) <span class="op">=</span> <span class="ident">current_selection</span>.<span class="ident">last_mut</span>() {
- <span class="comment">// Output was included on previous iterations, try excluding now.</span>
- <span class="kw-2">*</span><span class="ident">c</span> <span class="op">=</span> <span class="bool-val">false</span>;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(c) = current_selection.last_mut() {
+ <span class="comment">// Output was included on previous iterations, try excluding now.
+ </span><span class="kw-2">*</span>c = <span class="bool-val">false</span>;
}
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">optional_utxos</span>[<span class="ident">current_selection</span>.<span class="ident">len</span>() <span class="op">-</span> <span class="number">1</span>];
- <span class="ident">curr_value</span> <span class="op">-</span><span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">effective_value</span>;
- } <span class="kw">else</span> {
- <span class="comment">// Moving forwards, continuing down this branch</span>
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">optional_utxos</span>[<span class="ident">current_selection</span>.<span class="ident">len</span>()];
+ <span class="kw">let </span>utxo = <span class="kw-2">&</span>optional_utxos[current_selection.len() - <span class="number">1</span>];
+ curr_value -= utxo.effective_value;
+ } <span class="kw">else </span>{
+ <span class="comment">// Moving forwards, continuing down this branch
+ </span><span class="kw">let </span>utxo = <span class="kw-2">&</span>optional_utxos[current_selection.len()];
- <span class="comment">// Remove this utxo from the curr_available_value utxo amount</span>
- <span class="ident">curr_available_value</span> <span class="op">-</span><span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">effective_value</span>;
+ <span class="comment">// Remove this utxo from the curr_available_value utxo amount
+ </span>curr_available_value -= utxo.effective_value;
- <span class="comment">// Inclusion branch first (Largest First Exploration)</span>
- <span class="ident">current_selection</span>.<span class="ident">push</span>(<span class="bool-val">true</span>);
- <span class="ident">curr_value</span> <span class="op">+</span><span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">effective_value</span>;
+ <span class="comment">// Inclusion branch first (Largest First Exploration)
+ </span>current_selection.push(<span class="bool-val">true</span>);
+ curr_value += utxo.effective_value;
}
}
- <span class="comment">// Check for solution</span>
- <span class="kw">if</span> <span class="ident">best_selection</span>.<span class="ident">is_empty</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::BnBTotalTriesExceeded</span>);
+ <span class="comment">// Check for solution
+ </span><span class="kw">if </span>best_selection.is_empty() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BnBTotalTriesExceeded);
}
- <span class="comment">// Set output set</span>
- <span class="kw">let</span> <span class="ident">selected_utxos</span> <span class="op">=</span> <span class="ident">optional_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">zip</span>(<span class="ident">best_selection</span>)
- .<span class="ident">filter_map</span>(<span class="op">|</span>(<span class="ident">optional</span>, <span class="ident">is_in_best</span>)<span class="op">|</span> <span class="kw">if</span> <span class="ident">is_in_best</span> { <span class="prelude-val">Some</span>(<span class="ident">optional</span>) } <span class="kw">else</span> { <span class="prelude-val">None</span> })
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span><span class="op">></span>();
+ <span class="comment">// Set output set
+ </span><span class="kw">let </span>selected_utxos = optional_utxos
+ .into_iter()
+ .zip(best_selection)
+ .filter_map(|(optional, is_in_best)| <span class="kw">if </span>is_in_best { <span class="prelude-val">Some</span>(optional) } <span class="kw">else </span>{ <span class="prelude-val">None </span>})
+ .collect::<Vec<OutputGroup>>();
- <span class="kw">let</span> <span class="ident">selected_amount</span> <span class="op">=</span> <span class="ident">best_selection_value</span>.<span class="ident">unwrap</span>();
+ <span class="kw">let </span>selected_amount = best_selection_value.unwrap();
- <span class="comment">// remaining_amount can't be negative as that would mean the</span>
- <span class="comment">// selection wasn't successful</span>
- <span class="comment">// target_amount = amount_needed + (fee_amount - vin_fees)</span>
- <span class="kw">let</span> <span class="ident">remaining_amount</span> <span class="op">=</span> (<span class="ident">selected_amount</span> <span class="op">-</span> <span class="ident">target_amount</span>) <span class="kw">as</span> <span class="ident">u64</span>;
+ <span class="comment">// remaining_amount can't be negative as that would mean the
+ // selection wasn't successful
+ // target_amount = amount_needed + (fee_amount - vin_fees)
+ </span><span class="kw">let </span>remaining_amount = (selected_amount - target_amount) <span class="kw">as </span>u64;
- <span class="kw">let</span> <span class="ident">excess</span> <span class="op">=</span> <span class="ident">decide_change</span>(<span class="ident">remaining_amount</span>, <span class="ident">fee_rate</span>, <span class="ident">drain_script</span>);
+ <span class="kw">let </span>excess = decide_change(remaining_amount, fee_rate, drain_script);
- <span class="prelude-val">Ok</span>(<span class="ident">BranchAndBoundCoinSelection::calculate_cs_result</span>(
- <span class="ident">selected_utxos</span>,
- <span class="ident">required_utxos</span>,
- <span class="ident">excess</span>,
+ <span class="prelude-val">Ok</span>(BranchAndBoundCoinSelection::calculate_cs_result(
+ selected_utxos,
+ required_utxos,
+ excess,
))
}
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::too_many_arguments</span>)]</span>
- <span class="kw">fn</span> <span class="ident">single_random_draw</span>(
+ <span class="attr">#[allow(clippy::too_many_arguments)]
+ </span><span class="kw">fn </span>single_random_draw(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span>,
- <span class="kw-2">mut</span> <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span>,
- <span class="ident">curr_value</span>: <span class="ident">i64</span>,
- <span class="ident">target_amount</span>: <span class="ident">i64</span>,
- <span class="ident">drain_script</span>: <span class="kw-2">&</span><span class="ident">Script</span>,
- <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>,
- ) -> <span class="ident">CoinSelectionResult</span> {
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">test</span>))]</span>
- <span class="ident">optional_utxos</span>.<span class="ident">shuffle</span>(<span class="kw-2">&mut</span> <span class="ident">thread_rng</span>());
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
- {
- <span class="kw">let</span> <span class="ident">seed</span> <span class="op">=</span> [<span class="number">0</span>; <span class="number">32</span>];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span>: <span class="ident">StdRng</span> <span class="op">=</span> <span class="ident">SeedableRng::from_seed</span>(<span class="ident">seed</span>);
- <span class="ident">optional_utxos</span>.<span class="ident">shuffle</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>);
+ required_utxos: Vec<OutputGroup>,
+ <span class="kw-2">mut </span>optional_utxos: Vec<OutputGroup>,
+ curr_value: i64,
+ target_amount: i64,
+ drain_script: <span class="kw-2">&</span>Script,
+ fee_rate: FeeRate,
+ ) -> CoinSelectionResult {
+ <span class="attr">#[cfg(not(test))]
+ </span>optional_utxos.shuffle(<span class="kw-2">&mut </span>thread_rng());
+ <span class="attr">#[cfg(test)]
+ </span>{
+ <span class="kw">let </span>seed = [<span class="number">0</span>; <span class="number">32</span>];
+ <span class="kw">let </span><span class="kw-2">mut </span>rng: StdRng = SeedableRng::from_seed(seed);
+ optional_utxos.shuffle(<span class="kw-2">&mut </span>rng);
}
- <span class="kw">let</span> <span class="ident">selected_utxos</span> <span class="op">=</span> <span class="ident">optional_utxos</span>.<span class="ident">into_iter</span>().<span class="ident">fold</span>(
- (<span class="ident">curr_value</span>, <span class="macro">vec!</span>[]),
- <span class="op">|</span>(<span class="kw-2">mut</span> <span class="ident">amount</span>, <span class="kw-2">mut</span> <span class="ident">utxos</span>), <span class="ident">utxo</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="ident">amount</span> <span class="op">></span><span class="op">=</span> <span class="ident">target_amount</span> {
- (<span class="ident">amount</span>, <span class="ident">utxos</span>)
- } <span class="kw">else</span> {
- <span class="ident">amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">effective_value</span>;
- <span class="ident">utxos</span>.<span class="ident">push</span>(<span class="ident">utxo</span>);
- (<span class="ident">amount</span>, <span class="ident">utxos</span>)
+ <span class="kw">let </span>selected_utxos = optional_utxos.into_iter().fold(
+ (curr_value, <span class="macro">vec!</span>[]),
+ |(<span class="kw-2">mut </span>amount, <span class="kw-2">mut </span>utxos), utxo| {
+ <span class="kw">if </span>amount >= target_amount {
+ (amount, utxos)
+ } <span class="kw">else </span>{
+ amount += utxo.effective_value;
+ utxos.push(utxo);
+ (amount, utxos)
}
},
);
- <span class="comment">// remaining_amount can't be negative as that would mean the</span>
- <span class="comment">// selection wasn't successful</span>
- <span class="comment">// target_amount = amount_needed + (fee_amount - vin_fees)</span>
- <span class="kw">let</span> <span class="ident">remaining_amount</span> <span class="op">=</span> (<span class="ident">selected_utxos</span>.<span class="number">0</span> <span class="op">-</span> <span class="ident">target_amount</span>) <span class="kw">as</span> <span class="ident">u64</span>;
+ <span class="comment">// remaining_amount can't be negative as that would mean the
+ // selection wasn't successful
+ // target_amount = amount_needed + (fee_amount - vin_fees)
+ </span><span class="kw">let </span>remaining_amount = (selected_utxos.<span class="number">0 </span>- target_amount) <span class="kw">as </span>u64;
- <span class="kw">let</span> <span class="ident">excess</span> <span class="op">=</span> <span class="ident">decide_change</span>(<span class="ident">remaining_amount</span>, <span class="ident">fee_rate</span>, <span class="ident">drain_script</span>);
+ <span class="kw">let </span>excess = decide_change(remaining_amount, fee_rate, drain_script);
- <span class="ident">BranchAndBoundCoinSelection::calculate_cs_result</span>(<span class="ident">selected_utxos</span>.<span class="number">1</span>, <span class="ident">required_utxos</span>, <span class="ident">excess</span>)
+ BranchAndBoundCoinSelection::calculate_cs_result(selected_utxos.<span class="number">1</span>, required_utxos, excess)
}
- <span class="kw">fn</span> <span class="ident">calculate_cs_result</span>(
- <span class="kw-2">mut</span> <span class="ident">selected_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span>,
- <span class="kw-2">mut</span> <span class="ident">required_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span>,
- <span class="ident">excess</span>: <span class="ident">Excess</span>,
- ) -> <span class="ident">CoinSelectionResult</span> {
- <span class="ident">selected_utxos</span>.<span class="ident">append</span>(<span class="kw-2">&mut</span> <span class="ident">required_utxos</span>);
- <span class="kw">let</span> <span class="ident">fee_amount</span> <span class="op">=</span> <span class="ident">selected_utxos</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">fee</span>).<span class="ident">sum</span>::<span class="op"><</span><span class="ident">u64</span><span class="op">></span>();
- <span class="kw">let</span> <span class="ident">selected</span> <span class="op">=</span> <span class="ident">selected_utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">weighted_utxo</span>.<span class="ident">utxo</span>)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
-
- <span class="ident">CoinSelectionResult</span> {
- <span class="ident">selected</span>,
- <span class="ident">fee_amount</span>,
- <span class="ident">excess</span>,
+ <span class="kw">fn </span>calculate_cs_result(
+ <span class="kw-2">mut </span>selected_utxos: Vec<OutputGroup>,
+ <span class="kw-2">mut </span>required_utxos: Vec<OutputGroup>,
+ excess: Excess,
+ ) -> CoinSelectionResult {
+ selected_utxos.append(<span class="kw-2">&mut </span>required_utxos);
+ <span class="kw">let </span>fee_amount = selected_utxos.iter().map(|u| u.fee).sum::<u64>();
+ <span class="kw">let </span>selected = selected_utxos
+ .into_iter()
+ .map(|u| u.weighted_utxo.utxo)
+ .collect::<Vec<<span class="kw">_</span>>>();
+
+ CoinSelectionResult {
+ selected,
+ fee_amount,
+ excess,
}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">TxOut</span>};
+ <span class="kw">use </span>bitcoin::{OutPoint, Script, TxOut};
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchOperations</span>, <span class="ident">MemoryDatabase</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::Vbytes</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::database::{BatchOperations, MemoryDatabase};
+ <span class="kw">use </span><span class="kw">crate</span>::types::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::Vbytes;
- <span class="kw">use</span> <span class="ident">rand::rngs::StdRng</span>;
- <span class="kw">use</span> <span class="ident">rand::seq::SliceRandom</span>;
- <span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">Rng</span>, <span class="ident">SeedableRng</span>};
+ <span class="kw">use </span>rand::rngs::StdRng;
+ <span class="kw">use </span>rand::seq::SliceRandom;
+ <span class="kw">use </span>rand::{Rng, SeedableRng};
- <span class="comment">// n. of items on witness (1WU) + signature len (1WU) + signature and sighash (72WU)</span>
- <span class="comment">// + pubkey len (1WU) + pubkey (33WU) + script sig len (1 byte, 4WU)</span>
- <span class="kw">const</span> <span class="ident">P2WPKH_SATISFACTION_SIZE</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">1</span> <span class="op">+</span> <span class="number">1</span> <span class="op">+</span> <span class="number">72</span> <span class="op">+</span> <span class="number">1</span> <span class="op">+</span> <span class="number">33</span> <span class="op">+</span> <span class="number">4</span>;
+ <span class="comment">// n. of items on witness (1WU) + signature len (1WU) + signature and sighash (72WU)
+ // + pubkey len (1WU) + pubkey (33WU) + script sig len (1 byte, 4WU)
+ </span><span class="kw">const </span>P2WPKH_SATISFACTION_SIZE: usize = <span class="number">1 </span>+ <span class="number">1 </span>+ <span class="number">72 </span>+ <span class="number">1 </span>+ <span class="number">33 </span>+ <span class="number">4</span>;
- <span class="kw">const</span> <span class="ident">FEE_AMOUNT</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">50</span>;
+ <span class="kw">const </span>FEE_AMOUNT: u64 = <span class="number">50</span>;
- <span class="kw">fn</span> <span class="ident">utxo</span>(<span class="ident">value</span>: <span class="ident">u64</span>, <span class="ident">index</span>: <span class="ident">u32</span>) -> <span class="ident">WeightedUtxo</span> {
- <span class="macro">assert!</span>(<span class="ident">index</span> <span class="op"><</span> <span class="number">10</span>);
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">OutPoint::from_str</span>(<span class="kw-2">&</span><span class="macro">format!</span>(
+ <span class="kw">fn </span>utxo(value: u64, index: u32) -> WeightedUtxo {
+ <span class="macro">assert!</span>(index < <span class="number">10</span>);
+ <span class="kw">let </span>outpoint = OutPoint::from_str(<span class="kw-2">&</span><span class="macro">format!</span>(
<span class="string">"000000000000000000000000000000000000000000000000000000000000000{}:0"</span>,
- <span class="ident">index</span>
+ index
))
- .<span class="ident">unwrap</span>();
- <span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>: <span class="ident">P2WPKH_SATISFACTION_SIZE</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Local</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>,
- <span class="ident">txout</span>: <span class="ident">TxOut</span> {
- <span class="ident">value</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">Script::new</span>(),
+ .unwrap();
+ WeightedUtxo {
+ satisfaction_weight: P2WPKH_SATISFACTION_SIZE,
+ utxo: Utxo::Local(LocalUtxo {
+ outpoint,
+ txout: TxOut {
+ value,
+ script_pubkey: Script::new(),
},
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ keychain: KeychainKind::External,
+ is_spent: <span class="bool-val">false</span>,
}),
}
}
- <span class="kw">fn</span> <span class="ident">get_test_utxos</span>() -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span> {
+ <span class="kw">fn </span>get_test_utxos() -> Vec<WeightedUtxo> {
<span class="macro">vec!</span>[
- <span class="ident">utxo</span>(<span class="number">100_000</span>, <span class="number">0</span>),
- <span class="ident">utxo</span>(<span class="ident">FEE_AMOUNT</span> <span class="kw">as</span> <span class="ident">u64</span> <span class="op">-</span> <span class="number">40</span>, <span class="number">1</span>),
- <span class="ident">utxo</span>(<span class="number">200_000</span>, <span class="number">2</span>),
+ utxo(<span class="number">100_000</span>, <span class="number">0</span>),
+ utxo(FEE_AMOUNT <span class="kw">as </span>u64 - <span class="number">40</span>, <span class="number">1</span>),
+ utxo(<span class="number">200_000</span>, <span class="number">2</span>),
]
}
- <span class="kw">fn</span> <span class="ident">setup_database_and_get_oldest_first_test_utxos</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span><span class="op">></span>(
- <span class="ident">database</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>,
- ) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span> {
- <span class="comment">// ensure utxos are from different tx</span>
- <span class="kw">let</span> <span class="ident">utxo1</span> <span class="op">=</span> <span class="ident">utxo</span>(<span class="number">120_000</span>, <span class="number">1</span>);
- <span class="kw">let</span> <span class="ident">utxo2</span> <span class="op">=</span> <span class="ident">utxo</span>(<span class="number">80_000</span>, <span class="number">2</span>);
- <span class="kw">let</span> <span class="ident">utxo3</span> <span class="op">=</span> <span class="ident">utxo</span>(<span class="number">300_000</span>, <span class="number">3</span>);
-
- <span class="comment">// add tx to DB so utxos are sorted by blocktime asc</span>
- <span class="comment">// utxos will be selected by the following order</span>
- <span class="comment">// utxo1(blockheight 1) -> utxo2(blockheight 2), utxo3 (blockheight 3)</span>
- <span class="comment">// timestamp are all set as the same to ensure that only block height is used in sorting</span>
- <span class="kw">let</span> <span class="ident">utxo1_tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">utxo1</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">None</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">1</span>,
- <span class="ident">timestamp</span>: <span class="number">1231006505</span>,
+ <span class="kw">fn </span>setup_database_and_get_oldest_first_test_utxos<D: Database>(
+ database: <span class="kw-2">&mut </span>D,
+ ) -> Vec<WeightedUtxo> {
+ <span class="comment">// ensure utxos are from different tx
+ </span><span class="kw">let </span>utxo1 = utxo(<span class="number">120_000</span>, <span class="number">1</span>);
+ <span class="kw">let </span>utxo2 = utxo(<span class="number">80_000</span>, <span class="number">2</span>);
+ <span class="kw">let </span>utxo3 = utxo(<span class="number">300_000</span>, <span class="number">3</span>);
+
+ <span class="comment">// add tx to DB so utxos are sorted by blocktime asc
+ // utxos will be selected by the following order
+ // utxo1(blockheight 1) -> utxo2(blockheight 2), utxo3 (blockheight 3)
+ // timestamp are all set as the same to ensure that only block height is used in sorting
+ </span><span class="kw">let </span>utxo1_tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: utxo1.utxo.outpoint().txid,
+ received: <span class="number">1</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">None</span>,
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ height: <span class="number">1</span>,
+ timestamp: <span class="number">1231006505</span>,
}),
};
- <span class="kw">let</span> <span class="ident">utxo2_tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">utxo2</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">None</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">2</span>,
- <span class="ident">timestamp</span>: <span class="number">1231006505</span>,
+ <span class="kw">let </span>utxo2_tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: utxo2.utxo.outpoint().txid,
+ received: <span class="number">1</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">None</span>,
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ height: <span class="number">2</span>,
+ timestamp: <span class="number">1231006505</span>,
}),
};
- <span class="kw">let</span> <span class="ident">utxo3_tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">utxo3</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">None</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">3</span>,
- <span class="ident">timestamp</span>: <span class="number">1231006505</span>,
+ <span class="kw">let </span>utxo3_tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: utxo3.utxo.outpoint().txid,
+ received: <span class="number">1</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">None</span>,
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ height: <span class="number">3</span>,
+ timestamp: <span class="number">1231006505</span>,
}),
};
- <span class="ident">database</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">utxo1_tx_details</span>).<span class="ident">unwrap</span>();
- <span class="ident">database</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">utxo2_tx_details</span>).<span class="ident">unwrap</span>();
- <span class="ident">database</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">utxo3_tx_details</span>).<span class="ident">unwrap</span>();
+ database.set_tx(<span class="kw-2">&</span>utxo1_tx_details).unwrap();
+ database.set_tx(<span class="kw-2">&</span>utxo2_tx_details).unwrap();
+ database.set_tx(<span class="kw-2">&</span>utxo3_tx_details).unwrap();
- <span class="macro">vec!</span>[<span class="ident">utxo1</span>, <span class="ident">utxo2</span>, <span class="ident">utxo3</span>]
+ <span class="macro">vec!</span>[utxo1, utxo2, utxo3]
}
- <span class="kw">fn</span> <span class="ident">generate_random_utxos</span>(<span class="ident">rng</span>: <span class="kw-2">&mut</span> <span class="ident">StdRng</span>, <span class="ident">utxos_number</span>: <span class="ident">usize</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">utxos_number</span> {
- <span class="ident">res</span>.<span class="ident">push</span>(<span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>: <span class="ident">P2WPKH_SATISFACTION_SIZE</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Local</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::from_str</span>(
+ <span class="kw">fn </span>generate_random_utxos(rng: <span class="kw-2">&mut </span>StdRng, utxos_number: usize) -> Vec<WeightedUtxo> {
+ <span class="kw">let </span><span class="kw-2">mut </span>res = Vec::new();
+ <span class="kw">for _ in </span><span class="number">0</span>..utxos_number {
+ res.push(WeightedUtxo {
+ satisfaction_weight: P2WPKH_SATISFACTION_SIZE,
+ utxo: Utxo::Local(LocalUtxo {
+ outpoint: OutPoint::from_str(
<span class="string">"ebd9813ecebc57ff8f30797de7c205e3c7498ca950ea4341ee51a685ff2fa30a:0"</span>,
)
- .<span class="ident">unwrap</span>(),
- <span class="ident">txout</span>: <span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="ident">rng</span>.<span class="ident">gen_range</span>(<span class="number">0</span>..<span class="number">200000000</span>),
- <span class="ident">script_pubkey</span>: <span class="ident">Script::new</span>(),
+ .unwrap(),
+ txout: TxOut {
+ value: rng.gen_range(<span class="number">0</span>..<span class="number">200000000</span>),
+ script_pubkey: Script::new(),
},
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ keychain: KeychainKind::External,
+ is_spent: <span class="bool-val">false</span>,
}),
});
}
- <span class="ident">res</span>
+ res
}
- <span class="kw">fn</span> <span class="ident">generate_same_value_utxos</span>(<span class="ident">utxos_value</span>: <span class="ident">u64</span>, <span class="ident">utxos_number</span>: <span class="ident">usize</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>: <span class="ident">P2WPKH_SATISFACTION_SIZE</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Local</span>(<span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint::from_str</span>(
+ <span class="kw">fn </span>generate_same_value_utxos(utxos_value: u64, utxos_number: usize) -> Vec<WeightedUtxo> {
+ <span class="kw">let </span>utxo = WeightedUtxo {
+ satisfaction_weight: P2WPKH_SATISFACTION_SIZE,
+ utxo: Utxo::Local(LocalUtxo {
+ outpoint: OutPoint::from_str(
<span class="string">"ebd9813ecebc57ff8f30797de7c205e3c7498ca950ea4341ee51a685ff2fa30a:0"</span>,
)
- .<span class="ident">unwrap</span>(),
- <span class="ident">txout</span>: <span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="ident">utxos_value</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">Script::new</span>(),
+ .unwrap(),
+ txout: TxOut {
+ value: utxos_value,
+ script_pubkey: Script::new(),
},
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ keychain: KeychainKind::External,
+ is_spent: <span class="bool-val">false</span>,
}),
};
- <span class="macro">vec!</span>[<span class="ident">utxo</span>; <span class="ident">utxos_number</span>]
+ <span class="macro">vec!</span>[utxo; utxos_number]
}
- <span class="kw">fn</span> <span class="ident">sum_random_utxos</span>(<span class="kw-2">mut</span> <span class="ident">rng</span>: <span class="kw-2">&mut</span> <span class="ident">StdRng</span>, <span class="ident">utxos</span>: <span class="kw-2">&mut</span> <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>) -> <span class="ident">u64</span> {
- <span class="kw">let</span> <span class="ident">utxos_picked_len</span> <span class="op">=</span> <span class="ident">rng</span>.<span class="ident">gen_range</span>(<span class="number">2</span>..<span class="ident">utxos</span>.<span class="ident">len</span>() <span class="op">/</span> <span class="number">2</span>);
- <span class="ident">utxos</span>.<span class="ident">shuffle</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>);
- <span class="ident">utxos</span>[..<span class="ident">utxos_picked_len</span>]
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>)
- .<span class="ident">sum</span>()
+ <span class="kw">fn </span>sum_random_utxos(<span class="kw-2">mut </span>rng: <span class="kw-2">&mut </span>StdRng, utxos: <span class="kw-2">&mut </span>Vec<WeightedUtxo>) -> u64 {
+ <span class="kw">let </span>utxos_picked_len = rng.gen_range(<span class="number">2</span>..utxos.len() / <span class="number">2</span>);
+ utxos.shuffle(<span class="kw-2">&mut </span>rng);
+ utxos[..utxos_picked_len]
+ .iter()
+ .map(|u| u.utxo.txout().value)
+ .sum()
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_largest_first_coin_selection_success</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">250_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">LargestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">utxos</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_largest_first_coin_selection_success() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">250_000 </span>+ FEE_AMOUNT;
+
+ <span class="kw">let </span>result = LargestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ utxos,
<span class="macro">vec!</span>[],
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">3</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">300_010</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">204</span>)
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">3</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">300_010</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">204</span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_largest_first_coin_selection_use_all</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">LargestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">utxos</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_largest_first_coin_selection_use_all() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
+
+ <span class="kw">let </span>result = LargestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ utxos,
<span class="macro">vec!</span>[],
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">3</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">300_010</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">204</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">3</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">300_010</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">204</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_largest_first_coin_selection_use_only_necessary</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_largest_first_coin_selection_use_only_necessary() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">LargestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>result = LargestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">200_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">68</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">200_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">68</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_largest_first_coin_selection_insufficient_funds</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">500_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="ident">LargestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_largest_first_coin_selection_insufficient_funds() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">500_000 </span>+ FEE_AMOUNT;
+
+ LargestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_largest_first_coin_selection_insufficient_funds_high_fees</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">250_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="ident">LargestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_largest_first_coin_selection_insufficient_funds_high_fees() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">250_000 </span>+ FEE_AMOUNT;
+
+ LargestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1000.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1000.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_oldest_first_coin_selection_success</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">setup_database_and_get_oldest_first_test_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">database</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">180_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_oldest_first_coin_selection_success() {
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>utxos = setup_database_and_get_oldest_first_test_utxos(<span class="kw-2">&mut </span>database);
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">180_000 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">OldestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>result = OldestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">200_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">136</span>)
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">200_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">136</span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_oldest_first_coin_selection_utxo_not_in_db_will_be_selected_last</span>() {
- <span class="comment">// ensure utxos are from different tx</span>
- <span class="kw">let</span> <span class="ident">utxo1</span> <span class="op">=</span> <span class="ident">utxo</span>(<span class="number">120_000</span>, <span class="number">1</span>);
- <span class="kw">let</span> <span class="ident">utxo2</span> <span class="op">=</span> <span class="ident">utxo</span>(<span class="number">80_000</span>, <span class="number">2</span>);
- <span class="kw">let</span> <span class="ident">utxo3</span> <span class="op">=</span> <span class="ident">utxo</span>(<span class="number">300_000</span>, <span class="number">3</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
-
- <span class="comment">// add tx to DB so utxos are sorted by blocktime asc</span>
- <span class="comment">// utxos will be selected by the following order</span>
- <span class="comment">// utxo1(blockheight 1) -> utxo2(blockheight 2), utxo3 (not exist in DB)</span>
- <span class="comment">// timestamp are all set as the same to ensure that only block height is used in sorting</span>
- <span class="kw">let</span> <span class="ident">utxo1_tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">utxo1</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">None</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">1</span>,
- <span class="ident">timestamp</span>: <span class="number">1231006505</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_oldest_first_coin_selection_utxo_not_in_db_will_be_selected_last() {
+ <span class="comment">// ensure utxos are from different tx
+ </span><span class="kw">let </span>utxo1 = utxo(<span class="number">120_000</span>, <span class="number">1</span>);
+ <span class="kw">let </span>utxo2 = utxo(<span class="number">80_000</span>, <span class="number">2</span>);
+ <span class="kw">let </span>utxo3 = utxo(<span class="number">300_000</span>, <span class="number">3</span>);
+ <span class="kw">let </span>drain_script = Script::default();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::default();
+
+ <span class="comment">// add tx to DB so utxos are sorted by blocktime asc
+ // utxos will be selected by the following order
+ // utxo1(blockheight 1) -> utxo2(blockheight 2), utxo3 (not exist in DB)
+ // timestamp are all set as the same to ensure that only block height is used in sorting
+ </span><span class="kw">let </span>utxo1_tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: utxo1.utxo.outpoint().txid,
+ received: <span class="number">1</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">None</span>,
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ height: <span class="number">1</span>,
+ timestamp: <span class="number">1231006505</span>,
}),
};
- <span class="kw">let</span> <span class="ident">utxo2_tx_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">utxo2</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>().<span class="ident">txid</span>,
- <span class="ident">received</span>: <span class="number">1</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">None</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">2</span>,
- <span class="ident">timestamp</span>: <span class="number">1231006505</span>,
+ <span class="kw">let </span>utxo2_tx_details = TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: utxo2.utxo.outpoint().txid,
+ received: <span class="number">1</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">None</span>,
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ height: <span class="number">2</span>,
+ timestamp: <span class="number">1231006505</span>,
}),
};
- <span class="ident">database</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">utxo1_tx_details</span>).<span class="ident">unwrap</span>();
- <span class="ident">database</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">utxo2_tx_details</span>).<span class="ident">unwrap</span>();
+ database.set_tx(<span class="kw-2">&</span>utxo1_tx_details).unwrap();
+ database.set_tx(<span class="kw-2">&</span>utxo2_tx_details).unwrap();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">180_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="kw">let </span>target_amount = <span class="number">180_000 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">OldestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>result = OldestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="macro">vec!</span>[<span class="ident">utxo3</span>, <span class="ident">utxo1</span>, <span class="ident">utxo2</span>],
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="macro">vec!</span>[utxo3, utxo1, utxo2],
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">200_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">136</span>)
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">200_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">136</span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_oldest_first_coin_selection_use_all</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">setup_database_and_get_oldest_first_test_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">database</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">OldestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">utxos</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_oldest_first_coin_selection_use_all() {
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>utxos = setup_database_and_get_oldest_first_test_utxos(<span class="kw-2">&mut </span>database);
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
+
+ <span class="kw">let </span>result = OldestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ utxos,
<span class="macro">vec!</span>[],
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">3</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">500_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">204</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">3</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">500_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">204</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_oldest_first_coin_selection_use_only_necessary</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">setup_database_and_get_oldest_first_test_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">database</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_oldest_first_coin_selection_use_only_necessary() {
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>utxos = setup_database_and_get_oldest_first_test_utxos(<span class="kw-2">&mut </span>database);
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">OldestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>result = OldestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">120_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">68</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">120_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">68</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_oldest_first_coin_selection_insufficient_funds</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">setup_database_and_get_oldest_first_test_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">database</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">600_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="ident">OldestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_oldest_first_coin_selection_insufficient_funds() {
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>utxos = setup_database_and_get_oldest_first_test_utxos(<span class="kw-2">&mut </span>database);
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">600_000 </span>+ FEE_AMOUNT;
+
+ OldestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_oldest_first_coin_selection_insufficient_funds_high_fees</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">setup_database_and_get_oldest_first_test_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">database</span>);
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_oldest_first_coin_selection_insufficient_funds_high_fees() {
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>utxos = setup_database_and_get_oldest_first_test_utxos(<span class="kw-2">&mut </span>database);
- <span class="kw">let</span> <span class="ident">target_amount</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">utxos</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">wu</span><span class="op">|</span> <span class="ident">wu</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>).<span class="ident">sum</span>::<span class="op"><</span><span class="ident">u64</span><span class="op">></span>() <span class="op">-</span> <span class="number">50</span>;
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="kw">let </span>target_amount: u64 = utxos.iter().map(|wu| wu.utxo.txout().value).sum::<u64>() - <span class="number">50</span>;
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="ident">OldestFirstCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ OldestFirstCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1000.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1000.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_success</span>() {
- <span class="comment">// In this case bnb won't find a suitable match and single random draw will</span>
- <span class="comment">// select three outputs</span>
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">generate_same_value_utxos</span>(<span class="number">100_000</span>, <span class="number">20</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_success() {
+ <span class="comment">// In this case bnb won't find a suitable match and single random draw will
+ // select three outputs
+ </span><span class="kw">let </span>utxos = generate_same_value_utxos(<span class="number">100_000</span>, <span class="number">20</span>);
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">250_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="kw">let </span>target_amount = <span class="number">250_000 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">3</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">300_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">204</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">3</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">300_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">204</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_required_are_enough</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">utxos</span>.<span class="ident">clone</span>(),
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_required_are_enough() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
+
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ utxos.clone(),
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">3</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">300_010</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">204</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">3</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">300_010</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">204</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_optional_are_enough</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">299756</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_optional_are_enough() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">299756 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">300000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">136</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">300000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">136</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">ignore</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_required_not_enough</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
-
- <span class="kw">let</span> <span class="ident">required</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">utxos</span>[<span class="number">0</span>].<span class="ident">clone</span>()];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">optional</span> <span class="op">=</span> <span class="ident">utxos</span>[<span class="number">1</span>..].<span class="ident">to_vec</span>();
- <span class="ident">optional</span>.<span class="ident">push</span>(<span class="ident">utxo</span>(<span class="number">500_000</span>, <span class="number">3</span>));
-
- <span class="comment">// Defensive assertions, for sanity and in case someone changes the test utxos vector.</span>
- <span class="kw">let</span> <span class="ident">amount</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">required</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>).<span class="ident">sum</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">amount</span>, <span class="number">100_000</span>);
- <span class="kw">let</span> <span class="ident">amount</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="ident">optional</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">u</span>.<span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span>).<span class="ident">sum</span>();
- <span class="macro">assert!</span>(<span class="ident">amount</span> <span class="op">></span> <span class="number">150_000</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
-
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">150_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">required</span>,
- <span class="ident">optional</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="attr">#[test]
+ #[ignore]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_required_not_enough() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+
+ <span class="kw">let </span>required = <span class="macro">vec!</span>[utxos[<span class="number">0</span>].clone()];
+ <span class="kw">let </span><span class="kw-2">mut </span>optional = utxos[<span class="number">1</span>..].to_vec();
+ optional.push(utxo(<span class="number">500_000</span>, <span class="number">3</span>));
+
+ <span class="comment">// Defensive assertions, for sanity and in case someone changes the test utxos vector.
+ </span><span class="kw">let </span>amount: u64 = required.iter().map(|u| u.utxo.txout().value).sum();
+ <span class="macro">assert_eq!</span>(amount, <span class="number">100_000</span>);
+ <span class="kw">let </span>amount: u64 = optional.iter().map(|u| u.utxo.txout().value).sum();
+ <span class="macro">assert!</span>(amount > <span class="number">150_000</span>);
+ <span class="kw">let </span>drain_script = Script::default();
+
+ <span class="kw">let </span>target_amount = <span class="number">150_000 </span>+ FEE_AMOUNT;
+
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ required,
+ optional,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">300_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">136</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">300_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">136</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_insufficient_funds</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">500_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_insufficient_funds() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">500_000 </span>+ FEE_AMOUNT;
+
+ BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_insufficient_funds_high_fees</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">250_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
-
- <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_insufficient_funds_high_fees() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">250_000 </span>+ FEE_AMOUNT;
+
+ BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1000.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1000.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_check_fee_rate</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">99932</span>; <span class="comment">// first utxo's effective value</span>
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_check_fee_rate() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">99932</span>; <span class="comment">// first utxo's effective value
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::new</span>(<span class="number">0</span>)
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ </span><span class="kw">let </span>result = BranchAndBoundCoinSelection::new(<span class="number">0</span>)
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">1.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">100_000</span>);
- <span class="kw">let</span> <span class="ident">input_size</span> <span class="op">=</span> (<span class="ident">TXIN_BASE_WEIGHT</span> <span class="op">+</span> <span class="ident">P2WPKH_SATISFACTION_SIZE</span>).<span class="ident">vbytes</span>();
- <span class="comment">// the final fee rate should be exactly the same as the fee rate given</span>
- <span class="macro">assert!</span>((<span class="number">1.0</span> <span class="op">-</span> (<span class="ident">result</span>.<span class="ident">fee_amount</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="ident">input_size</span> <span class="kw">as</span> <span class="ident">f32</span>)).<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">f32::EPSILON</span>);
+ <span class="macro">assert_eq!</span>(result.selected.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">100_000</span>);
+ <span class="kw">let </span>input_size = (TXIN_BASE_WEIGHT + P2WPKH_SATISFACTION_SIZE).vbytes();
+ <span class="comment">// the final fee rate should be exactly the same as the fee rate given
+ </span><span class="macro">assert!</span>((<span class="number">1.0 </span>- (result.fee_amount <span class="kw">as </span>f32 / input_size <span class="kw">as </span>f32)).abs() < f32::EPSILON);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_coin_selection_exact_match</span>() {
- <span class="kw">let</span> <span class="ident">seed</span> <span class="op">=</span> [<span class="number">0</span>; <span class="number">32</span>];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span>: <span class="ident">StdRng</span> <span class="op">=</span> <span class="ident">SeedableRng::from_seed</span>(<span class="ident">seed</span>);
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
-
- <span class="kw">for</span> <span class="ident">_i</span> <span class="kw">in</span> <span class="number">0</span>..<span class="number">200</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">optional_utxos</span> <span class="op">=</span> <span class="ident">generate_random_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>, <span class="number">16</span>);
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="ident">sum_random_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>, <span class="kw-2">&mut</span> <span class="ident">optional_utxos</span>);
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::new</span>(<span class="number">0</span>)
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_coin_selection_exact_match() {
+ <span class="kw">let </span>seed = [<span class="number">0</span>; <span class="number">32</span>];
+ <span class="kw">let </span><span class="kw-2">mut </span>rng: StdRng = SeedableRng::from_seed(seed);
+ <span class="kw">let </span>database = MemoryDatabase::default();
+
+ <span class="kw">for </span>_i <span class="kw">in </span><span class="number">0</span>..<span class="number">200 </span>{
+ <span class="kw">let </span><span class="kw-2">mut </span>optional_utxos = generate_random_utxos(<span class="kw-2">&mut </span>rng, <span class="number">16</span>);
+ <span class="kw">let </span>target_amount = sum_random_utxos(<span class="kw-2">&mut </span>rng, <span class="kw-2">&mut </span>optional_utxos);
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::new(<span class="number">0</span>)
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">optional_utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">0.0</span>),
- <span class="ident">target_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ optional_utxos,
+ FeeRate::from_sat_per_vb(<span class="number">0.0</span>),
+ target_amount,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="ident">target_amount</span>);
+ .unwrap();
+ <span class="macro">assert_eq!</span>(result.selected_amount(), target_amount);
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"BnBNoExactMatch"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_function_no_exact_match</span>() {
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">10.0</span>);
- <span class="kw">let</span> <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span> <span class="op">=</span> <span class="ident">get_test_utxos</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">collect</span>();
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"BnBNoExactMatch"</span>)]
+ </span><span class="kw">fn </span>test_bnb_function_no_exact_match() {
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">10.0</span>);
+ <span class="kw">let </span>utxos: Vec<OutputGroup> = get_test_utxos()
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .collect();
- <span class="kw">let</span> <span class="ident">curr_available_value</span> <span class="op">=</span> <span class="ident">utxos</span>.<span class="ident">iter</span>().<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">effective_value</span>);
+ <span class="kw">let </span>curr_available_value = utxos.iter().fold(<span class="number">0</span>, |acc, x| acc + x.effective_value);
- <span class="kw">let</span> <span class="ident">size_of_change</span> <span class="op">=</span> <span class="number">31</span>;
- <span class="kw">let</span> <span class="ident">cost_of_change</span> <span class="op">=</span> <span class="ident">size_of_change</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">fee_rate</span>.<span class="ident">as_sat_per_vb</span>();
+ <span class="kw">let </span>size_of_change = <span class="number">31</span>;
+ <span class="kw">let </span>cost_of_change = size_of_change <span class="kw">as </span>f32 * fee_rate.as_sat_per_vb();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
- <span class="ident">BranchAndBoundCoinSelection::new</span>(<span class="ident">size_of_change</span>)
- .<span class="ident">bnb</span>(
+ <span class="kw">let </span>drain_script = Script::default();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
+ BranchAndBoundCoinSelection::new(size_of_change)
+ .bnb(
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
+ utxos,
<span class="number">0</span>,
- <span class="ident">curr_available_value</span>,
- <span class="ident">target_amount</span> <span class="kw">as</span> <span class="ident">i64</span>,
- <span class="ident">cost_of_change</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ curr_available_value,
+ target_amount <span class="kw">as </span>i64,
+ cost_of_change,
+ <span class="kw-2">&</span>drain_script,
+ fee_rate,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"BnBTotalTriesExceeded"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_function_tries_exceeded</span>() {
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">10.0</span>);
- <span class="kw">let</span> <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span> <span class="op">=</span> <span class="ident">generate_same_value_utxos</span>(<span class="number">100_000</span>, <span class="number">100_000</span>)
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">collect</span>();
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"BnBTotalTriesExceeded"</span>)]
+ </span><span class="kw">fn </span>test_bnb_function_tries_exceeded() {
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">10.0</span>);
+ <span class="kw">let </span>utxos: Vec<OutputGroup> = generate_same_value_utxos(<span class="number">100_000</span>, <span class="number">100_000</span>)
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .collect();
- <span class="kw">let</span> <span class="ident">curr_available_value</span> <span class="op">=</span> <span class="ident">utxos</span>.<span class="ident">iter</span>().<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">effective_value</span>);
+ <span class="kw">let </span>curr_available_value = utxos.iter().fold(<span class="number">0</span>, |acc, x| acc + x.effective_value);
- <span class="kw">let</span> <span class="ident">size_of_change</span> <span class="op">=</span> <span class="number">31</span>;
- <span class="kw">let</span> <span class="ident">cost_of_change</span> <span class="op">=</span> <span class="ident">size_of_change</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">fee_rate</span>.<span class="ident">as_sat_per_vb</span>();
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">20_000</span> <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="kw">let </span>size_of_change = <span class="number">31</span>;
+ <span class="kw">let </span>cost_of_change = size_of_change <span class="kw">as </span>f32 * fee_rate.as_sat_per_vb();
+ <span class="kw">let </span>target_amount = <span class="number">20_000 </span>+ FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="ident">BranchAndBoundCoinSelection::new</span>(<span class="ident">size_of_change</span>)
- .<span class="ident">bnb</span>(
+ BranchAndBoundCoinSelection::new(size_of_change)
+ .bnb(
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
+ utxos,
<span class="number">0</span>,
- <span class="ident">curr_available_value</span>,
- <span class="ident">target_amount</span> <span class="kw">as</span> <span class="ident">i64</span>,
- <span class="ident">cost_of_change</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ curr_available_value,
+ target_amount <span class="kw">as </span>i64,
+ cost_of_change,
+ <span class="kw-2">&</span>drain_script,
+ fee_rate,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
}
- <span class="comment">// The match won't be exact but still in the range</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_function_almost_exact_match_with_fees</span>() {
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>);
- <span class="kw">let</span> <span class="ident">size_of_change</span> <span class="op">=</span> <span class="number">31</span>;
- <span class="kw">let</span> <span class="ident">cost_of_change</span> <span class="op">=</span> <span class="ident">size_of_change</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">*</span> <span class="ident">fee_rate</span>.<span class="ident">as_sat_per_vb</span>();
+ <span class="comment">// The match won't be exact but still in the range
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_function_almost_exact_match_with_fees() {
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">1.0</span>);
+ <span class="kw">let </span>size_of_change = <span class="number">31</span>;
+ <span class="kw">let </span>cost_of_change = size_of_change <span class="kw">as </span>f32 * fee_rate.as_sat_per_vb();
- <span class="kw">let</span> <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">generate_same_value_utxos</span>(<span class="number">50_000</span>, <span class="number">10</span>)
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">collect</span>();
+ <span class="kw">let </span>utxos: Vec<<span class="kw">_</span>> = generate_same_value_utxos(<span class="number">50_000</span>, <span class="number">10</span>)
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .collect();
- <span class="kw">let</span> <span class="ident">curr_value</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="kw">let </span>curr_value = <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">curr_available_value</span> <span class="op">=</span> <span class="ident">utxos</span>.<span class="ident">iter</span>().<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">effective_value</span>);
+ <span class="kw">let </span>curr_available_value = utxos.iter().fold(<span class="number">0</span>, |acc, x| acc + x.effective_value);
- <span class="comment">// 2*(value of 1 utxo) - 2*(1 utxo fees with 1.0sat/vbyte fee rate) -</span>
- <span class="comment">// cost_of_change + 5.</span>
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="number">2</span> <span class="op">*</span> <span class="number">50_000</span> <span class="op">-</span> <span class="number">2</span> <span class="op">*</span> <span class="number">67</span> <span class="op">-</span> <span class="ident">cost_of_change</span>.<span class="ident">ceil</span>() <span class="kw">as</span> <span class="ident">i64</span> <span class="op">+</span> <span class="number">5</span>;
+ <span class="comment">// 2*(value of 1 utxo) - 2*(1 utxo fees with 1.0sat/vbyte fee rate) -
+ // cost_of_change + 5.
+ </span><span class="kw">let </span>target_amount = <span class="number">2 </span>* <span class="number">50_000 </span>- <span class="number">2 </span>* <span class="number">67 </span>- cost_of_change.ceil() <span class="kw">as </span>i64 + <span class="number">5</span>;
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::new</span>(<span class="ident">size_of_change</span>)
- .<span class="ident">bnb</span>(
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::new(size_of_change)
+ .bnb(
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">curr_value</span>,
- <span class="ident">curr_available_value</span>,
- <span class="ident">target_amount</span>,
- <span class="ident">cost_of_change</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ utxos,
+ curr_value,
+ curr_available_value,
+ target_amount,
+ cost_of_change,
+ <span class="kw-2">&</span>drain_script,
+ fee_rate,
)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="number">100_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, <span class="number">136</span>);
+ .unwrap();
+ <span class="macro">assert_eq!</span>(result.selected_amount(), <span class="number">100_000</span>);
+ <span class="macro">assert_eq!</span>(result.fee_amount, <span class="number">136</span>);
}
- <span class="comment">// TODO: bnb() function should be optimized, and this test should be done with more utxos</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_function_exact_match_more_utxos</span>() {
- <span class="kw">let</span> <span class="ident">seed</span> <span class="op">=</span> [<span class="number">0</span>; <span class="number">32</span>];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span>: <span class="ident">StdRng</span> <span class="op">=</span> <span class="ident">SeedableRng::from_seed</span>(<span class="ident">seed</span>);
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">0.0</span>);
+ <span class="comment">// TODO: bnb() function should be optimized, and this test should be done with more utxos
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_function_exact_match_more_utxos() {
+ <span class="kw">let </span>seed = [<span class="number">0</span>; <span class="number">32</span>];
+ <span class="kw">let </span><span class="kw-2">mut </span>rng: StdRng = SeedableRng::from_seed(seed);
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">0.0</span>);
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="number">200</span> {
- <span class="kw">let</span> <span class="ident">optional_utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">generate_random_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>, <span class="number">40</span>)
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">collect</span>();
+ <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">200 </span>{
+ <span class="kw">let </span>optional_utxos: Vec<<span class="kw">_</span>> = generate_random_utxos(<span class="kw-2">&mut </span>rng, <span class="number">40</span>)
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .collect();
- <span class="kw">let</span> <span class="ident">curr_value</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="kw">let </span>curr_value = <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">curr_available_value</span> <span class="op">=</span> <span class="ident">optional_utxos</span>
- .<span class="ident">iter</span>()
- .<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">effective_value</span>);
+ <span class="kw">let </span>curr_available_value = optional_utxos
+ .iter()
+ .fold(<span class="number">0</span>, |acc, x| acc + x.effective_value);
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span>
- <span class="ident">optional_utxos</span>[<span class="number">3</span>].<span class="ident">effective_value</span> <span class="op">+</span> <span class="ident">optional_utxos</span>[<span class="number">23</span>].<span class="ident">effective_value</span>;
+ <span class="kw">let </span>target_amount =
+ optional_utxos[<span class="number">3</span>].effective_value + optional_utxos[<span class="number">23</span>].effective_value;
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::new</span>(<span class="number">0</span>)
- .<span class="ident">bnb</span>(
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::new(<span class="number">0</span>)
+ .bnb(
<span class="macro">vec!</span>[],
- <span class="ident">optional_utxos</span>,
- <span class="ident">curr_value</span>,
- <span class="ident">curr_available_value</span>,
- <span class="ident">target_amount</span>,
+ optional_utxos,
+ curr_value,
+ curr_available_value,
+ target_amount,
<span class="number">0.0</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ <span class="kw-2">&</span>drain_script,
+ fee_rate,
)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>(), <span class="ident">target_amount</span> <span class="kw">as</span> <span class="ident">u64</span>);
+ .unwrap();
+ <span class="macro">assert_eq!</span>(result.selected_amount(), target_amount <span class="kw">as </span>u64);
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_single_random_draw_function_success</span>() {
- <span class="kw">let</span> <span class="ident">seed</span> <span class="op">=</span> [<span class="number">0</span>; <span class="number">32</span>];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span>: <span class="ident">StdRng</span> <span class="op">=</span> <span class="ident">SeedableRng::from_seed</span>(<span class="ident">seed</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">generate_random_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>, <span class="number">300</span>);
- <span class="kw">let</span> <span class="ident">target_amount</span> <span class="op">=</span> <span class="ident">sum_random_utxos</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>, <span class="kw-2">&mut</span> <span class="ident">utxos</span>) <span class="op">+</span> <span class="ident">FEE_AMOUNT</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_single_random_draw_function_success() {
+ <span class="kw">let </span>seed = [<span class="number">0</span>; <span class="number">32</span>];
+ <span class="kw">let </span><span class="kw-2">mut </span>rng: StdRng = SeedableRng::from_seed(seed);
+ <span class="kw">let </span><span class="kw-2">mut </span>utxos = generate_random_utxos(<span class="kw-2">&mut </span>rng, <span class="number">300</span>);
+ <span class="kw">let </span>target_amount = sum_random_utxos(<span class="kw-2">&mut </span>rng, <span class="kw-2">&mut </span>utxos) + FEE_AMOUNT;
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>);
- <span class="kw">let</span> <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutputGroup</span><span class="op">></span> <span class="op">=</span> <span class="ident">utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">OutputGroup::new</span>(<span class="ident">u</span>, <span class="ident">fee_rate</span>))
- .<span class="ident">collect</span>();
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">1.0</span>);
+ <span class="kw">let </span>utxos: Vec<OutputGroup> = utxos
+ .into_iter()
+ .map(|u| OutputGroup::new(u, fee_rate))
+ .collect();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>().<span class="ident">single_random_draw</span>(
+ <span class="kw">let </span>result = BranchAndBoundCoinSelection::default().single_random_draw(
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
+ utxos,
<span class="number">0</span>,
- <span class="ident">target_amount</span> <span class="kw">as</span> <span class="ident">i64</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
- <span class="ident">fee_rate</span>,
+ target_amount <span class="kw">as </span>i64,
+ <span class="kw-2">&</span>drain_script,
+ fee_rate,
);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">selected_amount</span>() <span class="op">></span> <span class="ident">target_amount</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">result</span>.<span class="ident">fee_amount</span>, (<span class="ident">result</span>.<span class="ident">selected</span>.<span class="ident">len</span>() <span class="op">*</span> <span class="number">68</span>) <span class="kw">as</span> <span class="ident">u64</span>);
+ <span class="macro">assert!</span>(result.selected_amount() > target_amount);
+ <span class="macro">assert_eq!</span>(result.fee_amount, (result.selected.len() * <span class="number">68</span>) <span class="kw">as </span>u64);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_exclude_negative_effective_value</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_exclude_negative_effective_value() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="kw">let</span> <span class="ident">err</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
+ <span class="kw">let </span>err = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
<span class="macro">vec!</span>[],
- <span class="ident">utxos</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">10.0</span>),
+ utxos,
+ FeeRate::from_sat_per_vb(<span class="number">10.0</span>),
<span class="number">500_000</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap_err</span>();
+ .unwrap_err();
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">err</span>,
- <span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">available</span>: <span class="number">300_000</span>,
+ err,
+ Error::InsufficientFunds {
+ available: <span class="number">300_000</span>,
..
}
));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_include_negative_effective_value_when_required</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
-
- <span class="kw">let</span> (<span class="ident">required</span>, <span class="ident">optional</span>) <span class="op">=</span> <span class="ident">utxos</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">partition</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="macro">matches!</span>(<span class="ident">u</span>, <span class="ident">WeightedUtxo</span> { <span class="ident">utxo</span>, .. } <span class="kw">if</span> <span class="ident">utxo</span>.<span class="ident">txout</span>().<span class="ident">value</span> <span class="op"><</span> <span class="number">1000</span>));
-
- <span class="kw">let</span> <span class="ident">err</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">required</span>,
- <span class="ident">optional</span>,
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">10.0</span>),
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_include_negative_effective_value_when_required() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
+
+ <span class="kw">let </span>(required, optional) = utxos
+ .into_iter()
+ .partition(|u| <span class="macro">matches!</span>(u, WeightedUtxo { utxo, .. } <span class="kw">if </span>utxo.txout().value < <span class="number">1000</span>));
+
+ <span class="kw">let </span>err = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ required,
+ optional,
+ FeeRate::from_sat_per_vb(<span class="number">10.0</span>),
<span class="number">500_000</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap_err</span>();
+ .unwrap_err();
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">err</span>,
- <span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">available</span>: <span class="number">300_010</span>,
+ err,
+ Error::InsufficientFunds {
+ available: <span class="number">300_010</span>,
..
}
));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bnb_sum_of_effective_value_negative</span>() {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>();
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::default</span>();
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="ident">Script::default</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bnb_sum_of_effective_value_negative() {
+ <span class="kw">let </span>utxos = get_test_utxos();
+ <span class="kw">let </span>database = MemoryDatabase::default();
+ <span class="kw">let </span>drain_script = Script::default();
- <span class="kw">let</span> <span class="ident">err</span> <span class="op">=</span> <span class="ident">BranchAndBoundCoinSelection::default</span>()
- .<span class="ident">coin_select</span>(
- <span class="kw-2">&</span><span class="ident">database</span>,
- <span class="ident">utxos</span>,
+ <span class="kw">let </span>err = BranchAndBoundCoinSelection::default()
+ .coin_select(
+ <span class="kw-2">&</span>database,
+ utxos,
<span class="macro">vec!</span>[],
- <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">10_000.0</span>),
+ FeeRate::from_sat_per_vb(<span class="number">10_000.0</span>),
<span class="number">500_000</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="kw-2">&</span>drain_script,
)
- .<span class="ident">unwrap_err</span>();
+ .unwrap_err();
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">err</span>,
- <span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">available</span>: <span class="number">300_010</span>,
+ err,
+ Error::InsufficientFunds {
+ available: <span class="number">300_010</span>,
..
}
));
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/export.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>export.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Wallet export</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This modules implements the wallet export format used by [FullyNoded](https://github.com/Fonta1n3/FullyNoded/blob/10b7808c8b929b171cca537fb50522d015168ac9/Docs/Wallets/Wallet-Export-Spec.md).</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Examples</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ### Import from JSON</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! # use std::str::FromStr;</span>
-<span class="doccomment">//! # use bitcoin::*;</span>
-<span class="doccomment">//! # use bdk::database::*;</span>
-<span class="doccomment">//! # use bdk::wallet::export::*;</span>
-<span class="doccomment">//! # use bdk::*;</span>
-<span class="doccomment">//! let import = r#"{</span>
-<span class="doccomment">//! "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",</span>
-<span class="doccomment">//! "blockheight":1782088,</span>
-<span class="doccomment">//! "label":"testnet"</span>
-<span class="doccomment">//! }"#;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let import = FullyNodedExport::from_str(import)?;</span>
-<span class="doccomment">//! let wallet = Wallet::new(</span>
-<span class="doccomment">//! &import.descriptor(),</span>
-<span class="doccomment">//! import.change_descriptor().as_ref(),</span>
-<span class="doccomment">//! Network::Testnet,</span>
-<span class="doccomment">//! MemoryDatabase::default(),</span>
-<span class="doccomment">//! )?;</span>
-<span class="doccomment">//! # Ok::<_, bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ### Export a `Wallet`</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! # use bitcoin::*;</span>
-<span class="doccomment">//! # use bdk::database::*;</span>
-<span class="doccomment">//! # use bdk::wallet::export::*;</span>
-<span class="doccomment">//! # use bdk::*;</span>
-<span class="doccomment">//! let wallet = Wallet::new(</span>
-<span class="doccomment">//! "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",</span>
-<span class="doccomment">//! Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),</span>
-<span class="doccomment">//! Network::Testnet,</span>
-<span class="doccomment">//! MemoryDatabase::default()</span>
-<span class="doccomment">//! )?;</span>
-<span class="doccomment">//! let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true)</span>
-<span class="doccomment">//! .map_err(ToString::to_string)</span>
-<span class="doccomment">//! .map_err(bdk::Error::Generic)?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! println!("Exported: {}", export.to_string());</span>
-<span class="doccomment">//! # Ok::<_, bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
-
-<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
-
-<span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{<span class="ident">ShInner</span>, <span class="ident">WshInner</span>};
-<span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">Descriptor</span>, <span class="ident">ScriptContext</span>, <span class="ident">Terminal</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::BatchDatabase</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types::KeychainKind</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::Wallet</span>;
-
-<span class="doccomment">/// Alias for [`FullyNodedExport`]</span>
-<span class="attribute">#[<span class="ident">deprecated</span>(<span class="ident">since</span> <span class="op">=</span> <span class="string">"0.18.0"</span>, <span class="ident">note</span> <span class="op">=</span> <span class="string">"Please use [`FullyNodedExport`] instead"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">WalletExport</span> <span class="op">=</span> <span class="ident">FullyNodedExport</span>;
-
-<span class="doccomment">/// Structure that contains the export of a wallet</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// For a usage example see [this module](crate::wallet::export)'s documentation.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Serialize</span>, <span class="ident">Deserialize</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">FullyNodedExport</span> {
- <span class="ident">descriptor</span>: <span class="ident">String</span>,
- <span class="doccomment">/// Earliest block to rescan when looking for the wallet's transactions</span>
- <span class="kw">pub</span> <span class="ident">blockheight</span>: <span class="ident">u32</span>,
- <span class="doccomment">/// Arbitrary label for the wallet</span>
- <span class="kw">pub</span> <span class="ident">label</span>: <span class="ident">String</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/export.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>export.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Wallet export
+//!
+//! This modules implements the wallet export format used by [FullyNoded](https://github.com/Fonta1n3/FullyNoded/blob/10b7808c8b929b171cca537fb50522d015168ac9/Docs/Wallets/Wallet-Export-Spec.md).
+//!
+//! ## Examples
+//!
+//! ### Import from JSON
+//!
+//! ```
+//! # use std::str::FromStr;
+//! # use bitcoin::*;
+//! # use bdk::database::*;
+//! # use bdk::wallet::export::*;
+//! # use bdk::*;
+//! let import = r#"{
+//! "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
+//! "blockheight":1782088,
+//! "label":"testnet"
+//! }"#;
+//!
+//! let import = FullyNodedExport::from_str(import)?;
+//! let wallet = Wallet::new(
+//! &import.descriptor(),
+//! import.change_descriptor().as_ref(),
+//! Network::Testnet,
+//! MemoryDatabase::default(),
+//! )?;
+//! # Ok::<_, bdk::Error>(())
+//! ```
+//!
+//! ### Export a `Wallet`
+//! ```
+//! # use bitcoin::*;
+//! # use bdk::database::*;
+//! # use bdk::wallet::export::*;
+//! # use bdk::*;
+//! let wallet = Wallet::new(
+//! "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
+//! Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
+//! Network::Testnet,
+//! MemoryDatabase::default()
+//! )?;
+//! let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true)
+//! .map_err(ToString::to_string)
+//! .map_err(bdk::Error::Generic)?;
+//!
+//! println!("Exported: {}", export.to_string());
+//! # Ok::<_, bdk::Error>(())
+//! ```
+
+</span><span class="kw">use </span>std::str::FromStr;
+
+<span class="kw">use </span>serde::{Deserialize, Serialize};
+
+<span class="kw">use </span>miniscript::descriptor::{ShInner, WshInner};
+<span class="kw">use </span>miniscript::{Descriptor, ScriptContext, Terminal};
+
+<span class="kw">use </span><span class="kw">crate</span>::database::BatchDatabase;
+<span class="kw">use </span><span class="kw">crate</span>::types::KeychainKind;
+<span class="kw">use </span><span class="kw">crate</span>::wallet::Wallet;
+
+<span class="doccomment">/// Alias for [`FullyNodedExport`]
+</span><span class="attr">#[deprecated(since = <span class="string">"0.18.0"</span>, note = <span class="string">"Please use [`FullyNodedExport`] instead"</span>)]
+</span><span class="kw">pub type </span>WalletExport = FullyNodedExport;
+
+<span class="doccomment">/// Structure that contains the export of a wallet
+///
+/// For a usage example see [this module](crate::wallet::export)'s documentation.
+</span><span class="attr">#[derive(Debug, Serialize, Deserialize)]
+</span><span class="kw">pub struct </span>FullyNodedExport {
+ descriptor: String,
+ <span class="doccomment">/// Earliest block to rescan when looking for the wallet's transactions
+ </span><span class="kw">pub </span>blockheight: u32,
+ <span class="doccomment">/// Arbitrary label for the wallet
+ </span><span class="kw">pub </span>label: String,
}
-<span class="kw">impl</span> <span class="ident">ToString</span> <span class="kw">for</span> <span class="ident">FullyNodedExport</span> {
- <span class="kw">fn</span> <span class="ident">to_string</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">String</span> {
- <span class="ident">serde_json::to_string</span>(<span class="self">self</span>).<span class="ident">unwrap</span>()
+<span class="kw">impl </span>ToString <span class="kw">for </span>FullyNodedExport {
+ <span class="kw">fn </span>to_string(<span class="kw-2">&</span><span class="self">self</span>) -> String {
+ serde_json::to_string(<span class="self">self</span>).unwrap()
}
}
-<span class="kw">impl</span> <span class="ident">FromStr</span> <span class="kw">for</span> <span class="ident">FullyNodedExport</span> {
- <span class="kw">type</span> <span class="prelude-val">Err</span> <span class="op">=</span> <span class="ident">serde_json::Error</span>;
+<span class="kw">impl </span>FromStr <span class="kw">for </span>FullyNodedExport {
+ <span class="kw">type </span><span class="prelude-val">Err </span>= serde_json::Error;
- <span class="kw">fn</span> <span class="ident">from_str</span>(<span class="ident">s</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident"><span class="self">Self</span>::Err</span><span class="op">></span> {
- <span class="ident">serde_json::from_str</span>(<span class="ident">s</span>)
+ <span class="kw">fn </span>from_str(s: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, <span class="self">Self</span>::Err> {
+ serde_json::from_str(s)
}
}
-<span class="kw">fn</span> <span class="ident">remove_checksum</span>(<span class="ident">s</span>: <span class="ident">String</span>) -> <span class="ident">String</span> {
- <span class="ident">s</span>.<span class="ident">split_once</span>(<span class="string">'#'</span>).<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">a</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">String::from</span>(<span class="ident">a</span>)).<span class="ident">unwrap</span>()
+<span class="kw">fn </span>remove_checksum(s: String) -> String {
+ s.split_once(<span class="string">'#'</span>).map(|(a, <span class="kw">_</span>)| String::from(a)).unwrap()
}
-<span class="kw">impl</span> <span class="ident">FullyNodedExport</span> {
- <span class="doccomment">/// Export a wallet</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This function returns an error if it determines that the `wallet`'s descriptor(s) are not</span>
- <span class="doccomment">/// supported by Bitcoin Core or don't follow the standard derivation paths defined by BIP44</span>
- <span class="doccomment">/// and others.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If `include_blockheight` is `true`, this function will look into the `wallet`'s database</span>
- <span class="doccomment">/// for the oldest transaction it knows and use that as the earliest block to rescan.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If the database is empty or `include_blockheight` is false, the `blockheight` field</span>
- <span class="doccomment">/// returned will be `0`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">export_wallet</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span>(
- <span class="ident">wallet</span>: <span class="kw-2">&</span><span class="ident">Wallet</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>,
- <span class="ident">label</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- <span class="ident">include_blockheight</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">to_string_with_secret</span>(
- <span class="kw-2">&</span><span class="ident">wallet</span>
- .<span class="ident">get_signers</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">as_key_map</span>(<span class="ident">wallet</span>.<span class="ident">secp_ctx</span>()),
+<span class="kw">impl </span>FullyNodedExport {
+ <span class="doccomment">/// Export a wallet
+ ///
+ /// This function returns an error if it determines that the `wallet`'s descriptor(s) are not
+ /// supported by Bitcoin Core or don't follow the standard derivation paths defined by BIP44
+ /// and others.
+ ///
+ /// If `include_blockheight` is `true`, this function will look into the `wallet`'s database
+ /// for the oldest transaction it knows and use that as the earliest block to rescan.
+ ///
+ /// If the database is empty or `include_blockheight` is false, the `blockheight` field
+ /// returned will be `0`.
+ </span><span class="kw">pub fn </span>export_wallet<D: BatchDatabase>(
+ wallet: <span class="kw-2">&</span>Wallet<D>,
+ label: <span class="kw-2">&</span>str,
+ include_blockheight: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, <span class="kw-2">&</span><span class="lifetime">'static </span>str> {
+ <span class="kw">let </span>descriptor = wallet
+ .get_descriptor_for_keychain(KeychainKind::External)
+ .to_string_with_secret(
+ <span class="kw-2">&</span>wallet
+ .get_signers(KeychainKind::External)
+ .as_key_map(wallet.secp_ctx()),
);
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">remove_checksum</span>(<span class="ident">descriptor</span>);
- <span class="ident"><span class="self">Self</span>::is_compatible_with_core</span>(<span class="kw-2">&</span><span class="ident">descriptor</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>descriptor = remove_checksum(descriptor);
+ <span class="self">Self</span>::is_compatible_with_core(<span class="kw-2">&</span>descriptor)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">blockheight</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">iter_txs</span>(<span class="bool-val">false</span>) {
- <span class="kw">_</span> <span class="kw">if</span> <span class="op">!</span><span class="ident">include_blockheight</span> => <span class="number">0</span>,
+ <span class="kw">let </span>blockheight = <span class="kw">match </span>wallet.database.borrow().iter_txs(<span class="bool-val">false</span>) {
+ <span class="kw">_ if </span>!include_blockheight => <span class="number">0</span>,
<span class="prelude-val">Err</span>(<span class="kw">_</span>) => <span class="number">0</span>,
- <span class="prelude-val">Ok</span>(<span class="ident">txs</span>) => <span class="ident">txs</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="ident">tx</span>.<span class="ident">confirmation_time</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">c</span><span class="op">|</span> <span class="ident">c</span>.<span class="ident">height</span>))
- .<span class="ident">min</span>()
- .<span class="ident">unwrap_or</span>(<span class="number">0</span>),
+ <span class="prelude-val">Ok</span>(txs) => txs
+ .into_iter()
+ .filter_map(|tx| tx.confirmation_time.map(|c| c.height))
+ .min()
+ .unwrap_or(<span class="number">0</span>),
};
- <span class="kw">let</span> <span class="ident">export</span> <span class="op">=</span> <span class="ident">FullyNodedExport</span> {
- <span class="ident">descriptor</span>,
- <span class="ident">label</span>: <span class="ident">label</span>.<span class="ident">into</span>(),
- <span class="ident">blockheight</span>,
+ <span class="kw">let </span>export = FullyNodedExport {
+ descriptor,
+ label: label.into(),
+ blockheight,
};
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">wallet</span>
- .<span class="ident">public_descriptor</span>(<span class="ident">KeychainKind::Internal</span>)
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="string">"Invalid change descriptor"</span>)<span class="question-mark">?</span>
- .<span class="ident">is_some</span>()
+ <span class="kw">let </span>change_descriptor = <span class="kw">match </span>wallet
+ .public_descriptor(KeychainKind::Internal)
+ .map_err(|<span class="kw">_</span>| <span class="string">"Invalid change descriptor"</span>)<span class="question-mark">?
+ </span>.is_some()
{
- <span class="bool-val">false</span> => <span class="prelude-val">None</span>,
- <span class="bool-val">true</span> => {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::Internal</span>)
- .<span class="ident">to_string_with_secret</span>(
- <span class="kw-2">&</span><span class="ident">wallet</span>
- .<span class="ident">get_signers</span>(<span class="ident">KeychainKind::Internal</span>)
- .<span class="ident">as_key_map</span>(<span class="ident">wallet</span>.<span class="ident">secp_ctx</span>()),
+ <span class="bool-val">false </span>=> <span class="prelude-val">None</span>,
+ <span class="bool-val">true </span>=> {
+ <span class="kw">let </span>descriptor = wallet
+ .get_descriptor_for_keychain(KeychainKind::Internal)
+ .to_string_with_secret(
+ <span class="kw-2">&</span>wallet
+ .get_signers(KeychainKind::Internal)
+ .as_key_map(wallet.secp_ctx()),
);
- <span class="prelude-val">Some</span>(<span class="ident">remove_checksum</span>(<span class="ident">descriptor</span>))
+ <span class="prelude-val">Some</span>(remove_checksum(descriptor))
}
};
- <span class="kw">if</span> <span class="ident">export</span>.<span class="ident">change_descriptor</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">change_descriptor</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="string">"Incompatible change descriptor"</span>);
+ <span class="kw">if </span>export.change_descriptor() != change_descriptor {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(<span class="string">"Incompatible change descriptor"</span>);
}
- <span class="prelude-val">Ok</span>(<span class="ident">export</span>)
+ <span class="prelude-val">Ok</span>(export)
}
- <span class="kw">fn</span> <span class="ident">is_compatible_with_core</span>(<span class="ident">descriptor</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">check_ms</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">terminal</span>: <span class="kw-2">&</span><span class="ident">Terminal</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Ctx</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span><span class="op">></span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">Terminal::Multi</span>(<span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">terminal</span> {
+ <span class="kw">fn </span>is_compatible_with_core(descriptor: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><(), <span class="kw-2">&</span><span class="lifetime">'static </span>str> {
+ <span class="kw">fn </span>check_ms<Ctx: ScriptContext>(
+ terminal: <span class="kw-2">&</span>Terminal<String, Ctx>,
+ ) -> <span class="prelude-ty">Result</span><(), <span class="kw-2">&</span><span class="lifetime">'static </span>str> {
+ <span class="kw">if let </span>Terminal::Multi(<span class="kw">_</span>, <span class="kw">_</span>) = terminal {
<span class="prelude-val">Ok</span>(())
- } <span class="kw">else</span> {
+ } <span class="kw">else </span>{
<span class="prelude-val">Err</span>(<span class="string">"The descriptor contains operators not supported by Bitcoin Core"</span>)
}
}
- <span class="comment">// pkh(), wpkh(), sh(wpkh()) are always fine, as well as multi() and sortedmulti()</span>
- <span class="kw">match</span> <span class="ident">Descriptor</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span><span class="ident">::from_str</span>(<span class="ident">descriptor</span>).<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="string">"Invalid descriptor"</span>)<span class="question-mark">?</span> {
- <span class="ident">Descriptor::Pkh</span>(<span class="kw">_</span>) <span class="op">|</span> <span class="ident">Descriptor::Wpkh</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
- <span class="ident">Descriptor::Sh</span>(<span class="ident">sh</span>) => <span class="kw">match</span> <span class="ident">sh</span>.<span class="ident">as_inner</span>() {
- <span class="ident">ShInner::Wpkh</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
- <span class="ident">ShInner::SortedMulti</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
- <span class="ident">ShInner::Wsh</span>(<span class="ident">wsh</span>) => <span class="kw">match</span> <span class="ident">wsh</span>.<span class="ident">as_inner</span>() {
- <span class="ident">WshInner::SortedMulti</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
- <span class="ident">WshInner::Ms</span>(<span class="ident">ms</span>) => <span class="ident">check_ms</span>(<span class="kw-2">&</span><span class="ident">ms</span>.<span class="ident">node</span>),
+ <span class="comment">// pkh(), wpkh(), sh(wpkh()) are always fine, as well as multi() and sortedmulti()
+ </span><span class="kw">match </span>Descriptor::<String>::from_str(descriptor).map_err(|<span class="kw">_</span>| <span class="string">"Invalid descriptor"</span>)<span class="question-mark">? </span>{
+ Descriptor::Pkh(<span class="kw">_</span>) | Descriptor::Wpkh(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
+ Descriptor::Sh(sh) => <span class="kw">match </span>sh.as_inner() {
+ ShInner::Wpkh(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
+ ShInner::SortedMulti(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
+ ShInner::Wsh(wsh) => <span class="kw">match </span>wsh.as_inner() {
+ WshInner::SortedMulti(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
+ WshInner::Ms(ms) => check_ms(<span class="kw-2">&</span>ms.node),
},
- <span class="ident">ShInner::Ms</span>(<span class="ident">ms</span>) => <span class="ident">check_ms</span>(<span class="kw-2">&</span><span class="ident">ms</span>.<span class="ident">node</span>),
+ ShInner::Ms(ms) => check_ms(<span class="kw-2">&</span>ms.node),
},
- <span class="ident">Descriptor::Wsh</span>(<span class="ident">wsh</span>) => <span class="kw">match</span> <span class="ident">wsh</span>.<span class="ident">as_inner</span>() {
- <span class="ident">WshInner::SortedMulti</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
- <span class="ident">WshInner::Ms</span>(<span class="ident">ms</span>) => <span class="ident">check_ms</span>(<span class="kw-2">&</span><span class="ident">ms</span>.<span class="ident">node</span>),
+ Descriptor::Wsh(wsh) => <span class="kw">match </span>wsh.as_inner() {
+ WshInner::SortedMulti(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
+ WshInner::Ms(ms) => check_ms(<span class="kw-2">&</span>ms.node),
},
- <span class="kw">_</span> => <span class="prelude-val">Err</span>(<span class="string">"The descriptor is not compatible with Bitcoin Core"</span>),
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(<span class="string">"The descriptor is not compatible with Bitcoin Core"</span>),
}
}
- <span class="doccomment">/// Return the external descriptor</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">descriptor</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">String</span> {
- <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">clone</span>()
+ <span class="doccomment">/// Return the external descriptor
+ </span><span class="kw">pub fn </span>descriptor(<span class="kw-2">&</span><span class="self">self</span>) -> String {
+ <span class="self">self</span>.descriptor.clone()
}
- <span class="doccomment">/// Return the internal descriptor, if present</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">change_descriptor</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">replaced</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">replace</span>(<span class="string">"/0/*"</span>, <span class="string">"/1/*"</span>);
+ <span class="doccomment">/// Return the internal descriptor, if present
+ </span><span class="kw">pub fn </span>change_descriptor(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><String> {
+ <span class="kw">let </span>replaced = <span class="self">self</span>.descriptor.replace(<span class="string">"/0/*"</span>, <span class="string">"/1/*"</span>);
- <span class="kw">if</span> <span class="ident">replaced</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">descriptor</span> {
- <span class="prelude-val">Some</span>(<span class="ident">replaced</span>)
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- }
+ <span class="kw">if </span>replaced != <span class="self">self</span>.descriptor {
+ <span class="prelude-val">Some</span>(replaced)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Network</span>, <span class="ident">Txid</span>};
+ <span class="kw">use </span>bitcoin::{Network, Txid};
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">memory::MemoryDatabase</span>, <span class="ident">BatchOperations</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types::TransactionDetails</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::Wallet</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::BlockTime</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::database::{memory::MemoryDatabase, BatchOperations};
+ <span class="kw">use </span><span class="kw">crate</span>::types::TransactionDetails;
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::Wallet;
+ <span class="kw">use </span><span class="kw">crate</span>::BlockTime;
- <span class="kw">fn</span> <span class="ident">get_test_db</span>() -> <span class="ident">MemoryDatabase</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">Txid::from_str</span>(
+ <span class="kw">fn </span>get_test_db() -> MemoryDatabase {
+ <span class="kw">let </span><span class="kw-2">mut </span>db = MemoryDatabase::new();
+ db.set_tx(<span class="kw-2">&</span>TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: Txid::from_str(
<span class="string">"4ddff1fa33af17f377f62b72357b43107c19110a8009b36fb832af505efed98a"</span>,
)
- .<span class="ident">unwrap</span>(),
-
- <span class="ident">received</span>: <span class="number">100_000</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="number">500</span>),
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">timestamp</span>: <span class="number">12345678</span>,
- <span class="ident">height</span>: <span class="number">5001</span>,
+ .unwrap(),
+
+ received: <span class="number">100_000</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">Some</span>(<span class="number">500</span>),
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ timestamp: <span class="number">12345678</span>,
+ height: <span class="number">5001</span>,
}),
})
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="ident">db</span>.<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>: <span class="ident">Txid::from_str</span>(
+ db.set_tx(<span class="kw-2">&</span>TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid: Txid::from_str(
<span class="string">"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"</span>,
)
- .<span class="ident">unwrap</span>(),
- <span class="ident">received</span>: <span class="number">25_000</span>,
- <span class="ident">sent</span>: <span class="number">0</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="number">300</span>),
- <span class="ident">confirmation_time</span>: <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">timestamp</span>: <span class="number">12345677</span>,
- <span class="ident">height</span>: <span class="number">5000</span>,
+ .unwrap(),
+ received: <span class="number">25_000</span>,
+ sent: <span class="number">0</span>,
+ fee: <span class="prelude-val">Some</span>(<span class="number">300</span>),
+ confirmation_time: <span class="prelude-val">Some</span>(BlockTime {
+ timestamp: <span class="number">12345677</span>,
+ height: <span class="number">5000</span>,
}),
})
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="ident">db</span>
+ db
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_export_bip44</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)"</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_export_bip44() {
+ <span class="kw">let </span>descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
+ <span class="kw">let </span>change_descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)"</span>;
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">descriptor</span>,
- <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>),
- <span class="ident">Network::Bitcoin</span>,
- <span class="ident">get_test_db</span>(),
+ <span class="kw">let </span>wallet = Wallet::new(
+ descriptor,
+ <span class="prelude-val">Some</span>(change_descriptor),
+ Network::Bitcoin,
+ get_test_db(),
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">export</span> <span class="op">=</span> <span class="ident">FullyNodedExport::export_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
+ .unwrap();
+ <span class="kw">let </span>export = FullyNodedExport::export_wallet(<span class="kw-2">&</span>wallet, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">descriptor</span>(), <span class="ident">descriptor</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">change_descriptor</span>(), <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>.<span class="ident">into</span>()));
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">blockheight</span>, <span class="number">5000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">label</span>, <span class="string">"Test Label"</span>);
+ <span class="macro">assert_eq!</span>(export.descriptor(), descriptor);
+ <span class="macro">assert_eq!</span>(export.change_descriptor(), <span class="prelude-val">Some</span>(change_descriptor.into()));
+ <span class="macro">assert_eq!</span>(export.blockheight, <span class="number">5000</span>);
+ <span class="macro">assert_eq!</span>(export.label, <span class="string">"Test Label"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"Incompatible change descriptor"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_export_no_change</span>() {
- <span class="comment">// This wallet explicitly doesn't have a change descriptor. It should be impossible to</span>
- <span class="comment">// export, because exporting this kind of external descriptor normally implies the</span>
- <span class="comment">// existence of an internal descriptor</span>
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"Incompatible change descriptor"</span>)]
+ </span><span class="kw">fn </span>test_export_no_change() {
+ <span class="comment">// This wallet explicitly doesn't have a change descriptor. It should be impossible to
+ // export, because exporting this kind of external descriptor normally implies the
+ // existence of an internal descriptor
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
+ </span><span class="kw">let </span>descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="ident">descriptor</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Bitcoin</span>, <span class="ident">get_test_db</span>()).<span class="ident">unwrap</span>();
- <span class="ident">FullyNodedExport::export_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>wallet = Wallet::new(descriptor, <span class="prelude-val">None</span>, Network::Bitcoin, get_test_db()).unwrap();
+ FullyNodedExport::export_wallet(<span class="kw-2">&</span>wallet, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"Incompatible change descriptor"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_export_incompatible_change</span>() {
- <span class="comment">// This wallet has a change descriptor, but the derivation path is not in the "standard"</span>
- <span class="comment">// bip44/49/etc format</span>
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"Incompatible change descriptor"</span>)]
+ </span><span class="kw">fn </span>test_export_incompatible_change() {
+ <span class="comment">// This wallet has a change descriptor, but the derivation path is not in the "standard"
+ // bip44/49/etc format
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/50'/0'/1/*)"</span>;
+ </span><span class="kw">let </span>descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
+ <span class="kw">let </span>change_descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/50'/0'/1/*)"</span>;
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">descriptor</span>,
- <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>),
- <span class="ident">Network::Bitcoin</span>,
- <span class="ident">get_test_db</span>(),
+ <span class="kw">let </span>wallet = Wallet::new(
+ descriptor,
+ <span class="prelude-val">Some</span>(change_descriptor),
+ Network::Bitcoin,
+ get_test_db(),
)
- .<span class="ident">unwrap</span>();
- <span class="ident">FullyNodedExport::export_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
+ .unwrap();
+ FullyNodedExport::export_wallet(<span class="kw-2">&</span>wallet, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_export_multi</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wsh(multi(2,\
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_export_multi() {
+ <span class="kw">let </span>descriptor = <span class="string">"wsh(multi(2,\
[73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*,\
[f9f62194/48'/0'/0'/2']tpubDDp3ZSH1yCwusRppH7zgSxq2t1VEUyXSeEp8E5aFS8m43MknUjiF1bSLo3CGWAxbDyhF1XowA5ukPzyJZjznYk3kYi6oe7QxtX2euvKWsk4/0/*,\
[c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/0/*\
))"</span>;
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="string">"wsh(multi(2,\
+ <span class="kw">let </span>change_descriptor = <span class="string">"wsh(multi(2,\
[73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/1/*,\
[f9f62194/48'/0'/0'/2']tpubDDp3ZSH1yCwusRppH7zgSxq2t1VEUyXSeEp8E5aFS8m43MknUjiF1bSLo3CGWAxbDyhF1XowA5ukPzyJZjznYk3kYi6oe7QxtX2euvKWsk4/1/*,\
[c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/1/*\
))"</span>;
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">descriptor</span>,
- <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>),
- <span class="ident">Network::Testnet</span>,
- <span class="ident">get_test_db</span>(),
+ <span class="kw">let </span>wallet = Wallet::new(
+ descriptor,
+ <span class="prelude-val">Some</span>(change_descriptor),
+ Network::Testnet,
+ get_test_db(),
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">export</span> <span class="op">=</span> <span class="ident">FullyNodedExport::export_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
+ .unwrap();
+ <span class="kw">let </span>export = FullyNodedExport::export_wallet(<span class="kw-2">&</span>wallet, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">descriptor</span>(), <span class="ident">descriptor</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">change_descriptor</span>(), <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>.<span class="ident">into</span>()));
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">blockheight</span>, <span class="number">5000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">label</span>, <span class="string">"Test Label"</span>);
+ <span class="macro">assert_eq!</span>(export.descriptor(), descriptor);
+ <span class="macro">assert_eq!</span>(export.change_descriptor(), <span class="prelude-val">Some</span>(change_descriptor.into()));
+ <span class="macro">assert_eq!</span>(export.blockheight, <span class="number">5000</span>);
+ <span class="macro">assert_eq!</span>(export.label, <span class="string">"Test Label"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_export_to_json</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)"</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_export_to_json() {
+ <span class="kw">let </span>descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
+ <span class="kw">let </span>change_descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)"</span>;
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">descriptor</span>,
- <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>),
- <span class="ident">Network::Bitcoin</span>,
- <span class="ident">get_test_db</span>(),
+ <span class="kw">let </span>wallet = Wallet::new(
+ descriptor,
+ <span class="prelude-val">Some</span>(change_descriptor),
+ Network::Bitcoin,
+ get_test_db(),
)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">export</span> <span class="op">=</span> <span class="ident">FullyNodedExport::export_wallet</span>(<span class="kw-2">&</span><span class="ident">wallet</span>, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
+ .unwrap();
+ <span class="kw">let </span>export = FullyNodedExport::export_wallet(<span class="kw-2">&</span>wallet, <span class="string">"Test Label"</span>, <span class="bool-val">true</span>).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">to_string</span>(), <span class="string">"{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}"</span>);
+ <span class="macro">assert_eq!</span>(export.to_string(), <span class="string">"{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_export_from_json</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)"</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_export_from_json() {
+ <span class="kw">let </span>descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)"</span>;
+ <span class="kw">let </span>change_descriptor = <span class="string">"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)"</span>;
- <span class="kw">let</span> <span class="ident">import_str</span> <span class="op">=</span> <span class="string">"{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}"</span>;
- <span class="kw">let</span> <span class="ident">export</span> <span class="op">=</span> <span class="ident">FullyNodedExport::from_str</span>(<span class="ident">import_str</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>import_str = <span class="string">"{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}"</span>;
+ <span class="kw">let </span>export = FullyNodedExport::from_str(import_str).unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">descriptor</span>(), <span class="ident">descriptor</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">change_descriptor</span>(), <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>.<span class="ident">into</span>()));
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">blockheight</span>, <span class="number">5000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">export</span>.<span class="ident">label</span>, <span class="string">"Test Label"</span>);
+ <span class="macro">assert_eq!</span>(export.descriptor(), descriptor);
+ <span class="macro">assert_eq!</span>(export.change_descriptor(), <span class="prelude-val">Some</span>(change_descriptor.into()));
+ <span class="macro">assert_eq!</span>(export.blockheight, <span class="number">5000</span>);
+ <span class="macro">assert_eq!</span>(export.label, <span class="string">"Test Label"</span>);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/hardwaresigner.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>hardwaresigner.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10">10</span>
-<span id="11">11</span>
-<span id="12">12</span>
-<span id="13">13</span>
-<span id="14">14</span>
-<span id="15">15</span>
-<span id="16">16</span>
-<span id="17">17</span>
-<span id="18">18</span>
-<span id="19">19</span>
-<span id="20">20</span>
-<span id="21">21</span>
-<span id="22">22</span>
-<span id="23">23</span>
-<span id="24">24</span>
-<span id="25">25</span>
-<span id="26">26</span>
-<span id="27">27</span>
-<span id="28">28</span>
-<span id="29">29</span>
-<span id="30">30</span>
-<span id="31">31</span>
-<span id="32">32</span>
-<span id="33">33</span>
-<span id="34">34</span>
-<span id="35">35</span>
-<span id="36">36</span>
-<span id="37">37</span>
-<span id="38">38</span>
-<span id="39">39</span>
-<span id="40">40</span>
-<span id="41">41</span>
-<span id="42">42</span>
-<span id="43">43</span>
-<span id="44">44</span>
-<span id="45">45</span>
-<span id="46">46</span>
-<span id="47">47</span>
-<span id="48">48</span>
-<span id="49">49</span>
-<span id="50">50</span>
-<span id="51">51</span>
-<span id="52">52</span>
-<span id="53">53</span>
-<span id="54">54</span>
-<span id="55">55</span>
-<span id="56">56</span>
-<span id="57">57</span>
-<span id="58">58</span>
-<span id="59">59</span>
-<span id="60">60</span>
-<span id="61">61</span>
-<span id="62">62</span>
-<span id="63">63</span>
-<span id="64">64</span>
-<span id="65">65</span>
-<span id="66">66</span>
-<span id="67">67</span>
-<span id="68">68</span>
-<span id="69">69</span>
-<span id="70">70</span>
-<span id="71">71</span>
-<span id="72">72</span>
-<span id="73">73</span>
-<span id="74">74</span>
-<span id="75">75</span>
-<span id="76">76</span>
-<span id="77">77</span>
-<span id="78">78</span>
-<span id="79">79</span>
-<span id="80">80</span>
-<span id="81">81</span>
-<span id="82">82</span>
-<span id="83">83</span>
-<span id="84">84</span>
-<span id="85">85</span>
-<span id="86">86</span>
-<span id="87">87</span>
-<span id="88">88</span>
-<span id="89">89</span>
-<span id="90">90</span>
-<span id="91">91</span>
-<span id="92">92</span>
-<span id="93">93</span>
-<span id="94">94</span>
-<span id="95">95</span>
-<span id="96">96</span>
-<span id="97">97</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/hardwaresigner.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>hardwaresigner.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! HWI Signer</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module contains HWISigner, an implementation of a [TransactionSigner] to be</span>
-<span class="doccomment">//! used with hardware wallets.</span>
-<span class="doccomment">//! ```no_run</span>
-<span class="doccomment">//! # use bdk::bitcoin::Network;</span>
-<span class="doccomment">//! # use bdk::database::MemoryDatabase;</span>
-<span class="doccomment">//! # use bdk::signer::SignerOrdering;</span>
-<span class="doccomment">//! # use bdk::wallet::hardwaresigner::HWISigner;</span>
-<span class="doccomment">//! # use bdk::wallet::AddressIndex::New;</span>
-<span class="doccomment">//! # use bdk::{FeeRate, KeychainKind, SignOptions, SyncOptions, Wallet};</span>
-<span class="doccomment">//! # use hwi::{types::HWIChain, HWIClient};</span>
-<span class="doccomment">//! # use std::sync::Arc;</span>
-<span class="doccomment">//! #</span>
-<span class="doccomment">//! # fn main() -> Result<(), Box<dyn std::error::Error>> {</span>
-<span class="doccomment">//! let devices = HWIClient::enumerate()?;</span>
-<span class="doccomment">//! let first_device = devices.first().expect("No devices found!");</span>
-<span class="doccomment">//! let custom_signer = HWISigner::from_device(first_device, HWIChain::Test)?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # let mut wallet = Wallet::new(</span>
-<span class="doccomment">//! # "",</span>
-<span class="doccomment">//! # None,</span>
-<span class="doccomment">//! # Network::Testnet,</span>
-<span class="doccomment">//! # MemoryDatabase::default(),</span>
-<span class="doccomment">//! # )?;</span>
-<span class="doccomment">//! #</span>
-<span class="doccomment">//! // Adding the hardware signer to the BDK wallet</span>
-<span class="doccomment">//! wallet.add_signer(</span>
-<span class="doccomment">//! KeychainKind::External,</span>
-<span class="doccomment">//! SignerOrdering(200),</span>
-<span class="doccomment">//! Arc::new(custom_signer),</span>
-<span class="doccomment">//! );</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # Ok(())</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! ```</span>
+</span><span class="doccomment">//! HWI Signer
+//!
+//! This module contains HWISigner, an implementation of a [TransactionSigner] to be
+//! used with hardware wallets.
+//! ```no_run
+//! # use bdk::bitcoin::Network;
+//! # use bdk::database::MemoryDatabase;
+//! # use bdk::signer::SignerOrdering;
+//! # use bdk::wallet::hardwaresigner::HWISigner;
+//! # use bdk::wallet::AddressIndex::New;
+//! # use bdk::{FeeRate, KeychainKind, SignOptions, SyncOptions, Wallet};
+//! # use hwi::{types::HWIChain, HWIClient};
+//! # use std::sync::Arc;
+//! #
+//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
+//! let devices = HWIClient::enumerate()?;
+//! let first_device = devices.first().expect("No devices found!");
+//! let custom_signer = HWISigner::from_device(first_device, HWIChain::Test)?;
+//!
+//! # let mut wallet = Wallet::new(
+//! # "",
+//! # None,
+//! # Network::Testnet,
+//! # MemoryDatabase::default(),
+//! # )?;
+//! #
+//! // Adding the hardware signer to the BDK wallet
+//! wallet.add_signer(
+//! KeychainKind::External,
+//! SignerOrdering(200),
+//! Arc::new(custom_signer),
+//! );
+//!
+//! # Ok(())
+//! # }
+//! ```
-<span class="kw">use</span> <span class="ident">bitcoin::psbt::PartiallySignedTransaction</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::secp256k1</span>::{<span class="ident">All</span>, <span class="ident">Secp256k1</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32::Fingerprint</span>;
+</span><span class="kw">use </span>bitcoin::psbt::PartiallySignedTransaction;
+<span class="kw">use </span>bitcoin::secp256k1::{All, Secp256k1};
+<span class="kw">use </span>bitcoin::util::bip32::Fingerprint;
-<span class="kw">use</span> <span class="ident">hwi::error::Error</span>;
-<span class="kw">use</span> <span class="ident">hwi::types</span>::{<span class="ident">HWIChain</span>, <span class="ident">HWIDevice</span>};
-<span class="kw">use</span> <span class="ident">hwi::HWIClient</span>;
+<span class="kw">use </span>hwi::error::Error;
+<span class="kw">use </span>hwi::types::{HWIChain, HWIDevice};
+<span class="kw">use </span>hwi::HWIClient;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer</span>::{<span class="ident">SignerCommon</span>, <span class="ident">SignerError</span>, <span class="ident">SignerId</span>, <span class="ident">TransactionSigner</span>};
+<span class="kw">use </span><span class="kw">crate</span>::signer::{SignerCommon, SignerError, SignerId, TransactionSigner};
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="doccomment">/// Custom signer for Hardware Wallets</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This ignores `sign_options` and leaves the decisions up to the hardware wallet.</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">HWISigner</span> {
- <span class="ident">fingerprint</span>: <span class="ident">Fingerprint</span>,
- <span class="ident">client</span>: <span class="ident">HWIClient</span>,
+<span class="attr">#[derive(Debug)]
+</span><span class="doccomment">/// Custom signer for Hardware Wallets
+///
+/// This ignores `sign_options` and leaves the decisions up to the hardware wallet.
+</span><span class="kw">pub struct </span>HWISigner {
+ fingerprint: Fingerprint,
+ client: HWIClient,
}
-<span class="kw">impl</span> <span class="ident">HWISigner</span> {
- <span class="doccomment">/// Create a instance from the specified device and chain</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_device</span>(<span class="ident">device</span>: <span class="kw-2">&</span><span class="ident">HWIDevice</span>, <span class="ident">chain</span>: <span class="ident">HWIChain</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">HWISigner</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">HWIClient::get_client</span>(<span class="ident">device</span>, <span class="bool-val">false</span>, <span class="ident">chain</span>)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">HWISigner</span> {
- <span class="ident">fingerprint</span>: <span class="ident">device</span>.<span class="ident">fingerprint</span>,
- <span class="ident">client</span>,
+<span class="kw">impl </span>HWISigner {
+ <span class="doccomment">/// Create a instance from the specified device and chain
+ </span><span class="kw">pub fn </span>from_device(device: <span class="kw-2">&</span>HWIDevice, chain: HWIChain) -> <span class="prelude-ty">Result</span><HWISigner, Error> {
+ <span class="kw">let </span>client = HWIClient::get_client(device, <span class="bool-val">false</span>, chain)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(HWISigner {
+ fingerprint: device.fingerprint,
+ client,
})
}
}
-<span class="kw">impl</span> <span class="ident">SignerCommon</span> <span class="kw">for</span> <span class="ident">HWISigner</span> {
- <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident">Secp256k1</span><span class="op"><</span><span class="ident">All</span><span class="op">></span>) -> <span class="ident">SignerId</span> {
- <span class="ident">SignerId::Fingerprint</span>(<span class="self">self</span>.<span class="ident">fingerprint</span>)
+<span class="kw">impl </span>SignerCommon <span class="kw">for </span>HWISigner {
+ <span class="kw">fn </span>id(<span class="kw-2">&</span><span class="self">self</span>, _secp: <span class="kw-2">&</span>Secp256k1<All>) -> SignerId {
+ SignerId::Fingerprint(<span class="self">self</span>.fingerprint)
}
}
-<span class="doccomment">/// This implementation ignores `sign_options`</span>
-<span class="kw">impl</span> <span class="ident">TransactionSigner</span> <span class="kw">for</span> <span class="ident">HWISigner</span> {
- <span class="kw">fn</span> <span class="ident">sign_transaction</span>(
+<span class="doccomment">/// This implementation ignores `sign_options`
+</span><span class="kw">impl </span>TransactionSigner <span class="kw">for </span>HWISigner {
+ <span class="kw">fn </span>sign_transaction(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">PartiallySignedTransaction</span>,
- <span class="ident">_sign_options</span>: <span class="kw-2">&</span><span class="ident"><span class="kw">crate</span>::SignOptions</span>,
- <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident"><span class="kw">crate</span>::wallet::utils::SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="ident">psbt</span>.<span class="ident">combine</span>(<span class="self">self</span>.<span class="ident">client</span>.<span class="ident">sign_tx</span>(<span class="ident">psbt</span>)<span class="question-mark">?</span>.<span class="ident">psbt</span>)
- .<span class="ident">expect</span>(<span class="string">"Failed to combine HW signed psbt with passed PSBT"</span>);
+ psbt: <span class="kw-2">&mut </span>PartiallySignedTransaction,
+ _sign_options: <span class="kw-2">&</span><span class="kw">crate</span>::SignOptions,
+ _secp: <span class="kw-2">&</span><span class="kw">crate</span>::wallet::utils::SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError> {
+ psbt.combine(<span class="self">self</span>.client.sign_tx(psbt)<span class="question-mark">?</span>.psbt)
+ .expect(<span class="string">"Failed to combine HW signed psbt with passed PSBT"</span>);
<span class="prelude-val">Ok</span>(())
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-<span id="1001">1001</span>
-<span id="1002">1002</span>
-<span id="1003">1003</span>
-<span id="1004">1004</span>
-<span id="1005">1005</span>
-<span id="1006">1006</span>
-<span id="1007">1007</span>
-<span id="1008">1008</span>
-<span id="1009">1009</span>
-<span id="1010">1010</span>
-<span id="1011">1011</span>
-<span id="1012">1012</span>
-<span id="1013">1013</span>
-<span id="1014">1014</span>
-<span id="1015">1015</span>
-<span id="1016">1016</span>
-<span id="1017">1017</span>
-<span id="1018">1018</span>
-<span id="1019">1019</span>
-<span id="1020">1020</span>
-<span id="1021">1021</span>
-<span id="1022">1022</span>
-<span id="1023">1023</span>
-<span id="1024">1024</span>
-<span id="1025">1025</span>
-<span id="1026">1026</span>
-<span id="1027">1027</span>
-<span id="1028">1028</span>
-<span id="1029">1029</span>
-<span id="1030">1030</span>
-<span id="1031">1031</span>
-<span id="1032">1032</span>
-<span id="1033">1033</span>
-<span id="1034">1034</span>
-<span id="1035">1035</span>
-<span id="1036">1036</span>
-<span id="1037">1037</span>
-<span id="1038">1038</span>
-<span id="1039">1039</span>
-<span id="1040">1040</span>
-<span id="1041">1041</span>
-<span id="1042">1042</span>
-<span id="1043">1043</span>
-<span id="1044">1044</span>
-<span id="1045">1045</span>
-<span id="1046">1046</span>
-<span id="1047">1047</span>
-<span id="1048">1048</span>
-<span id="1049">1049</span>
-<span id="1050">1050</span>
-<span id="1051">1051</span>
-<span id="1052">1052</span>
-<span id="1053">1053</span>
-<span id="1054">1054</span>
-<span id="1055">1055</span>
-<span id="1056">1056</span>
-<span id="1057">1057</span>
-<span id="1058">1058</span>
-<span id="1059">1059</span>
-<span id="1060">1060</span>
-<span id="1061">1061</span>
-<span id="1062">1062</span>
-<span id="1063">1063</span>
-<span id="1064">1064</span>
-<span id="1065">1065</span>
-<span id="1066">1066</span>
-<span id="1067">1067</span>
-<span id="1068">1068</span>
-<span id="1069">1069</span>
-<span id="1070">1070</span>
-<span id="1071">1071</span>
-<span id="1072">1072</span>
-<span id="1073">1073</span>
-<span id="1074">1074</span>
-<span id="1075">1075</span>
-<span id="1076">1076</span>
-<span id="1077">1077</span>
-<span id="1078">1078</span>
-<span id="1079">1079</span>
-<span id="1080">1080</span>
-<span id="1081">1081</span>
-<span id="1082">1082</span>
-<span id="1083">1083</span>
-<span id="1084">1084</span>
-<span id="1085">1085</span>
-<span id="1086">1086</span>
-<span id="1087">1087</span>
-<span id="1088">1088</span>
-<span id="1089">1089</span>
-<span id="1090">1090</span>
-<span id="1091">1091</span>
-<span id="1092">1092</span>
-<span id="1093">1093</span>
-<span id="1094">1094</span>
-<span id="1095">1095</span>
-<span id="1096">1096</span>
-<span id="1097">1097</span>
-<span id="1098">1098</span>
-<span id="1099">1099</span>
-<span id="1100">1100</span>
-<span id="1101">1101</span>
-<span id="1102">1102</span>
-<span id="1103">1103</span>
-<span id="1104">1104</span>
-<span id="1105">1105</span>
-<span id="1106">1106</span>
-<span id="1107">1107</span>
-<span id="1108">1108</span>
-<span id="1109">1109</span>
-<span id="1110">1110</span>
-<span id="1111">1111</span>
-<span id="1112">1112</span>
-<span id="1113">1113</span>
-<span id="1114">1114</span>
-<span id="1115">1115</span>
-<span id="1116">1116</span>
-<span id="1117">1117</span>
-<span id="1118">1118</span>
-<span id="1119">1119</span>
-<span id="1120">1120</span>
-<span id="1121">1121</span>
-<span id="1122">1122</span>
-<span id="1123">1123</span>
-<span id="1124">1124</span>
-<span id="1125">1125</span>
-<span id="1126">1126</span>
-<span id="1127">1127</span>
-<span id="1128">1128</span>
-<span id="1129">1129</span>
-<span id="1130">1130</span>
-<span id="1131">1131</span>
-<span id="1132">1132</span>
-<span id="1133">1133</span>
-<span id="1134">1134</span>
-<span id="1135">1135</span>
-<span id="1136">1136</span>
-<span id="1137">1137</span>
-<span id="1138">1138</span>
-<span id="1139">1139</span>
-<span id="1140">1140</span>
-<span id="1141">1141</span>
-<span id="1142">1142</span>
-<span id="1143">1143</span>
-<span id="1144">1144</span>
-<span id="1145">1145</span>
-<span id="1146">1146</span>
-<span id="1147">1147</span>
-<span id="1148">1148</span>
-<span id="1149">1149</span>
-<span id="1150">1150</span>
-<span id="1151">1151</span>
-<span id="1152">1152</span>
-<span id="1153">1153</span>
-<span id="1154">1154</span>
-<span id="1155">1155</span>
-<span id="1156">1156</span>
-<span id="1157">1157</span>
-<span id="1158">1158</span>
-<span id="1159">1159</span>
-<span id="1160">1160</span>
-<span id="1161">1161</span>
-<span id="1162">1162</span>
-<span id="1163">1163</span>
-<span id="1164">1164</span>
-<span id="1165">1165</span>
-<span id="1166">1166</span>
-<span id="1167">1167</span>
-<span id="1168">1168</span>
-<span id="1169">1169</span>
-<span id="1170">1170</span>
-<span id="1171">1171</span>
-<span id="1172">1172</span>
-<span id="1173">1173</span>
-<span id="1174">1174</span>
-<span id="1175">1175</span>
-<span id="1176">1176</span>
-<span id="1177">1177</span>
-<span id="1178">1178</span>
-<span id="1179">1179</span>
-<span id="1180">1180</span>
-<span id="1181">1181</span>
-<span id="1182">1182</span>
-<span id="1183">1183</span>
-<span id="1184">1184</span>
-<span id="1185">1185</span>
-<span id="1186">1186</span>
-<span id="1187">1187</span>
-<span id="1188">1188</span>
-<span id="1189">1189</span>
-<span id="1190">1190</span>
-<span id="1191">1191</span>
-<span id="1192">1192</span>
-<span id="1193">1193</span>
-<span id="1194">1194</span>
-<span id="1195">1195</span>
-<span id="1196">1196</span>
-<span id="1197">1197</span>
-<span id="1198">1198</span>
-<span id="1199">1199</span>
-<span id="1200">1200</span>
-<span id="1201">1201</span>
-<span id="1202">1202</span>
-<span id="1203">1203</span>
-<span id="1204">1204</span>
-<span id="1205">1205</span>
-<span id="1206">1206</span>
-<span id="1207">1207</span>
-<span id="1208">1208</span>
-<span id="1209">1209</span>
-<span id="1210">1210</span>
-<span id="1211">1211</span>
-<span id="1212">1212</span>
-<span id="1213">1213</span>
-<span id="1214">1214</span>
-<span id="1215">1215</span>
-<span id="1216">1216</span>
-<span id="1217">1217</span>
-<span id="1218">1218</span>
-<span id="1219">1219</span>
-<span id="1220">1220</span>
-<span id="1221">1221</span>
-<span id="1222">1222</span>
-<span id="1223">1223</span>
-<span id="1224">1224</span>
-<span id="1225">1225</span>
-<span id="1226">1226</span>
-<span id="1227">1227</span>
-<span id="1228">1228</span>
-<span id="1229">1229</span>
-<span id="1230">1230</span>
-<span id="1231">1231</span>
-<span id="1232">1232</span>
-<span id="1233">1233</span>
-<span id="1234">1234</span>
-<span id="1235">1235</span>
-<span id="1236">1236</span>
-<span id="1237">1237</span>
-<span id="1238">1238</span>
-<span id="1239">1239</span>
-<span id="1240">1240</span>
-<span id="1241">1241</span>
-<span id="1242">1242</span>
-<span id="1243">1243</span>
-<span id="1244">1244</span>
-<span id="1245">1245</span>
-<span id="1246">1246</span>
-<span id="1247">1247</span>
-<span id="1248">1248</span>
-<span id="1249">1249</span>
-<span id="1250">1250</span>
-<span id="1251">1251</span>
-<span id="1252">1252</span>
-<span id="1253">1253</span>
-<span id="1254">1254</span>
-<span id="1255">1255</span>
-<span id="1256">1256</span>
-<span id="1257">1257</span>
-<span id="1258">1258</span>
-<span id="1259">1259</span>
-<span id="1260">1260</span>
-<span id="1261">1261</span>
-<span id="1262">1262</span>
-<span id="1263">1263</span>
-<span id="1264">1264</span>
-<span id="1265">1265</span>
-<span id="1266">1266</span>
-<span id="1267">1267</span>
-<span id="1268">1268</span>
-<span id="1269">1269</span>
-<span id="1270">1270</span>
-<span id="1271">1271</span>
-<span id="1272">1272</span>
-<span id="1273">1273</span>
-<span id="1274">1274</span>
-<span id="1275">1275</span>
-<span id="1276">1276</span>
-<span id="1277">1277</span>
-<span id="1278">1278</span>
-<span id="1279">1279</span>
-<span id="1280">1280</span>
-<span id="1281">1281</span>
-<span id="1282">1282</span>
-<span id="1283">1283</span>
-<span id="1284">1284</span>
-<span id="1285">1285</span>
-<span id="1286">1286</span>
-<span id="1287">1287</span>
-<span id="1288">1288</span>
-<span id="1289">1289</span>
-<span id="1290">1290</span>
-<span id="1291">1291</span>
-<span id="1292">1292</span>
-<span id="1293">1293</span>
-<span id="1294">1294</span>
-<span id="1295">1295</span>
-<span id="1296">1296</span>
-<span id="1297">1297</span>
-<span id="1298">1298</span>
-<span id="1299">1299</span>
-<span id="1300">1300</span>
-<span id="1301">1301</span>
-<span id="1302">1302</span>
-<span id="1303">1303</span>
-<span id="1304">1304</span>
-<span id="1305">1305</span>
-<span id="1306">1306</span>
-<span id="1307">1307</span>
-<span id="1308">1308</span>
-<span id="1309">1309</span>
-<span id="1310">1310</span>
-<span id="1311">1311</span>
-<span id="1312">1312</span>
-<span id="1313">1313</span>
-<span id="1314">1314</span>
-<span id="1315">1315</span>
-<span id="1316">1316</span>
-<span id="1317">1317</span>
-<span id="1318">1318</span>
-<span id="1319">1319</span>
-<span id="1320">1320</span>
-<span id="1321">1321</span>
-<span id="1322">1322</span>
-<span id="1323">1323</span>
-<span id="1324">1324</span>
-<span id="1325">1325</span>
-<span id="1326">1326</span>
-<span id="1327">1327</span>
-<span id="1328">1328</span>
-<span id="1329">1329</span>
-<span id="1330">1330</span>
-<span id="1331">1331</span>
-<span id="1332">1332</span>
-<span id="1333">1333</span>
-<span id="1334">1334</span>
-<span id="1335">1335</span>
-<span id="1336">1336</span>
-<span id="1337">1337</span>
-<span id="1338">1338</span>
-<span id="1339">1339</span>
-<span id="1340">1340</span>
-<span id="1341">1341</span>
-<span id="1342">1342</span>
-<span id="1343">1343</span>
-<span id="1344">1344</span>
-<span id="1345">1345</span>
-<span id="1346">1346</span>
-<span id="1347">1347</span>
-<span id="1348">1348</span>
-<span id="1349">1349</span>
-<span id="1350">1350</span>
-<span id="1351">1351</span>
-<span id="1352">1352</span>
-<span id="1353">1353</span>
-<span id="1354">1354</span>
-<span id="1355">1355</span>
-<span id="1356">1356</span>
-<span id="1357">1357</span>
-<span id="1358">1358</span>
-<span id="1359">1359</span>
-<span id="1360">1360</span>
-<span id="1361">1361</span>
-<span id="1362">1362</span>
-<span id="1363">1363</span>
-<span id="1364">1364</span>
-<span id="1365">1365</span>
-<span id="1366">1366</span>
-<span id="1367">1367</span>
-<span id="1368">1368</span>
-<span id="1369">1369</span>
-<span id="1370">1370</span>
-<span id="1371">1371</span>
-<span id="1372">1372</span>
-<span id="1373">1373</span>
-<span id="1374">1374</span>
-<span id="1375">1375</span>
-<span id="1376">1376</span>
-<span id="1377">1377</span>
-<span id="1378">1378</span>
-<span id="1379">1379</span>
-<span id="1380">1380</span>
-<span id="1381">1381</span>
-<span id="1382">1382</span>
-<span id="1383">1383</span>
-<span id="1384">1384</span>
-<span id="1385">1385</span>
-<span id="1386">1386</span>
-<span id="1387">1387</span>
-<span id="1388">1388</span>
-<span id="1389">1389</span>
-<span id="1390">1390</span>
-<span id="1391">1391</span>
-<span id="1392">1392</span>
-<span id="1393">1393</span>
-<span id="1394">1394</span>
-<span id="1395">1395</span>
-<span id="1396">1396</span>
-<span id="1397">1397</span>
-<span id="1398">1398</span>
-<span id="1399">1399</span>
-<span id="1400">1400</span>
-<span id="1401">1401</span>
-<span id="1402">1402</span>
-<span id="1403">1403</span>
-<span id="1404">1404</span>
-<span id="1405">1405</span>
-<span id="1406">1406</span>
-<span id="1407">1407</span>
-<span id="1408">1408</span>
-<span id="1409">1409</span>
-<span id="1410">1410</span>
-<span id="1411">1411</span>
-<span id="1412">1412</span>
-<span id="1413">1413</span>
-<span id="1414">1414</span>
-<span id="1415">1415</span>
-<span id="1416">1416</span>
-<span id="1417">1417</span>
-<span id="1418">1418</span>
-<span id="1419">1419</span>
-<span id="1420">1420</span>
-<span id="1421">1421</span>
-<span id="1422">1422</span>
-<span id="1423">1423</span>
-<span id="1424">1424</span>
-<span id="1425">1425</span>
-<span id="1426">1426</span>
-<span id="1427">1427</span>
-<span id="1428">1428</span>
-<span id="1429">1429</span>
-<span id="1430">1430</span>
-<span id="1431">1431</span>
-<span id="1432">1432</span>
-<span id="1433">1433</span>
-<span id="1434">1434</span>
-<span id="1435">1435</span>
-<span id="1436">1436</span>
-<span id="1437">1437</span>
-<span id="1438">1438</span>
-<span id="1439">1439</span>
-<span id="1440">1440</span>
-<span id="1441">1441</span>
-<span id="1442">1442</span>
-<span id="1443">1443</span>
-<span id="1444">1444</span>
-<span id="1445">1445</span>
-<span id="1446">1446</span>
-<span id="1447">1447</span>
-<span id="1448">1448</span>
-<span id="1449">1449</span>
-<span id="1450">1450</span>
-<span id="1451">1451</span>
-<span id="1452">1452</span>
-<span id="1453">1453</span>
-<span id="1454">1454</span>
-<span id="1455">1455</span>
-<span id="1456">1456</span>
-<span id="1457">1457</span>
-<span id="1458">1458</span>
-<span id="1459">1459</span>
-<span id="1460">1460</span>
-<span id="1461">1461</span>
-<span id="1462">1462</span>
-<span id="1463">1463</span>
-<span id="1464">1464</span>
-<span id="1465">1465</span>
-<span id="1466">1466</span>
-<span id="1467">1467</span>
-<span id="1468">1468</span>
-<span id="1469">1469</span>
-<span id="1470">1470</span>
-<span id="1471">1471</span>
-<span id="1472">1472</span>
-<span id="1473">1473</span>
-<span id="1474">1474</span>
-<span id="1475">1475</span>
-<span id="1476">1476</span>
-<span id="1477">1477</span>
-<span id="1478">1478</span>
-<span id="1479">1479</span>
-<span id="1480">1480</span>
-<span id="1481">1481</span>
-<span id="1482">1482</span>
-<span id="1483">1483</span>
-<span id="1484">1484</span>
-<span id="1485">1485</span>
-<span id="1486">1486</span>
-<span id="1487">1487</span>
-<span id="1488">1488</span>
-<span id="1489">1489</span>
-<span id="1490">1490</span>
-<span id="1491">1491</span>
-<span id="1492">1492</span>
-<span id="1493">1493</span>
-<span id="1494">1494</span>
-<span id="1495">1495</span>
-<span id="1496">1496</span>
-<span id="1497">1497</span>
-<span id="1498">1498</span>
-<span id="1499">1499</span>
-<span id="1500">1500</span>
-<span id="1501">1501</span>
-<span id="1502">1502</span>
-<span id="1503">1503</span>
-<span id="1504">1504</span>
-<span id="1505">1505</span>
-<span id="1506">1506</span>
-<span id="1507">1507</span>
-<span id="1508">1508</span>
-<span id="1509">1509</span>
-<span id="1510">1510</span>
-<span id="1511">1511</span>
-<span id="1512">1512</span>
-<span id="1513">1513</span>
-<span id="1514">1514</span>
-<span id="1515">1515</span>
-<span id="1516">1516</span>
-<span id="1517">1517</span>
-<span id="1518">1518</span>
-<span id="1519">1519</span>
-<span id="1520">1520</span>
-<span id="1521">1521</span>
-<span id="1522">1522</span>
-<span id="1523">1523</span>
-<span id="1524">1524</span>
-<span id="1525">1525</span>
-<span id="1526">1526</span>
-<span id="1527">1527</span>
-<span id="1528">1528</span>
-<span id="1529">1529</span>
-<span id="1530">1530</span>
-<span id="1531">1531</span>
-<span id="1532">1532</span>
-<span id="1533">1533</span>
-<span id="1534">1534</span>
-<span id="1535">1535</span>
-<span id="1536">1536</span>
-<span id="1537">1537</span>
-<span id="1538">1538</span>
-<span id="1539">1539</span>
-<span id="1540">1540</span>
-<span id="1541">1541</span>
-<span id="1542">1542</span>
-<span id="1543">1543</span>
-<span id="1544">1544</span>
-<span id="1545">1545</span>
-<span id="1546">1546</span>
-<span id="1547">1547</span>
-<span id="1548">1548</span>
-<span id="1549">1549</span>
-<span id="1550">1550</span>
-<span id="1551">1551</span>
-<span id="1552">1552</span>
-<span id="1553">1553</span>
-<span id="1554">1554</span>
-<span id="1555">1555</span>
-<span id="1556">1556</span>
-<span id="1557">1557</span>
-<span id="1558">1558</span>
-<span id="1559">1559</span>
-<span id="1560">1560</span>
-<span id="1561">1561</span>
-<span id="1562">1562</span>
-<span id="1563">1563</span>
-<span id="1564">1564</span>
-<span id="1565">1565</span>
-<span id="1566">1566</span>
-<span id="1567">1567</span>
-<span id="1568">1568</span>
-<span id="1569">1569</span>
-<span id="1570">1570</span>
-<span id="1571">1571</span>
-<span id="1572">1572</span>
-<span id="1573">1573</span>
-<span id="1574">1574</span>
-<span id="1575">1575</span>
-<span id="1576">1576</span>
-<span id="1577">1577</span>
-<span id="1578">1578</span>
-<span id="1579">1579</span>
-<span id="1580">1580</span>
-<span id="1581">1581</span>
-<span id="1582">1582</span>
-<span id="1583">1583</span>
-<span id="1584">1584</span>
-<span id="1585">1585</span>
-<span id="1586">1586</span>
-<span id="1587">1587</span>
-<span id="1588">1588</span>
-<span id="1589">1589</span>
-<span id="1590">1590</span>
-<span id="1591">1591</span>
-<span id="1592">1592</span>
-<span id="1593">1593</span>
-<span id="1594">1594</span>
-<span id="1595">1595</span>
-<span id="1596">1596</span>
-<span id="1597">1597</span>
-<span id="1598">1598</span>
-<span id="1599">1599</span>
-<span id="1600">1600</span>
-<span id="1601">1601</span>
-<span id="1602">1602</span>
-<span id="1603">1603</span>
-<span id="1604">1604</span>
-<span id="1605">1605</span>
-<span id="1606">1606</span>
-<span id="1607">1607</span>
-<span id="1608">1608</span>
-<span id="1609">1609</span>
-<span id="1610">1610</span>
-<span id="1611">1611</span>
-<span id="1612">1612</span>
-<span id="1613">1613</span>
-<span id="1614">1614</span>
-<span id="1615">1615</span>
-<span id="1616">1616</span>
-<span id="1617">1617</span>
-<span id="1618">1618</span>
-<span id="1619">1619</span>
-<span id="1620">1620</span>
-<span id="1621">1621</span>
-<span id="1622">1622</span>
-<span id="1623">1623</span>
-<span id="1624">1624</span>
-<span id="1625">1625</span>
-<span id="1626">1626</span>
-<span id="1627">1627</span>
-<span id="1628">1628</span>
-<span id="1629">1629</span>
-<span id="1630">1630</span>
-<span id="1631">1631</span>
-<span id="1632">1632</span>
-<span id="1633">1633</span>
-<span id="1634">1634</span>
-<span id="1635">1635</span>
-<span id="1636">1636</span>
-<span id="1637">1637</span>
-<span id="1638">1638</span>
-<span id="1639">1639</span>
-<span id="1640">1640</span>
-<span id="1641">1641</span>
-<span id="1642">1642</span>
-<span id="1643">1643</span>
-<span id="1644">1644</span>
-<span id="1645">1645</span>
-<span id="1646">1646</span>
-<span id="1647">1647</span>
-<span id="1648">1648</span>
-<span id="1649">1649</span>
-<span id="1650">1650</span>
-<span id="1651">1651</span>
-<span id="1652">1652</span>
-<span id="1653">1653</span>
-<span id="1654">1654</span>
-<span id="1655">1655</span>
-<span id="1656">1656</span>
-<span id="1657">1657</span>
-<span id="1658">1658</span>
-<span id="1659">1659</span>
-<span id="1660">1660</span>
-<span id="1661">1661</span>
-<span id="1662">1662</span>
-<span id="1663">1663</span>
-<span id="1664">1664</span>
-<span id="1665">1665</span>
-<span id="1666">1666</span>
-<span id="1667">1667</span>
-<span id="1668">1668</span>
-<span id="1669">1669</span>
-<span id="1670">1670</span>
-<span id="1671">1671</span>
-<span id="1672">1672</span>
-<span id="1673">1673</span>
-<span id="1674">1674</span>
-<span id="1675">1675</span>
-<span id="1676">1676</span>
-<span id="1677">1677</span>
-<span id="1678">1678</span>
-<span id="1679">1679</span>
-<span id="1680">1680</span>
-<span id="1681">1681</span>
-<span id="1682">1682</span>
-<span id="1683">1683</span>
-<span id="1684">1684</span>
-<span id="1685">1685</span>
-<span id="1686">1686</span>
-<span id="1687">1687</span>
-<span id="1688">1688</span>
-<span id="1689">1689</span>
-<span id="1690">1690</span>
-<span id="1691">1691</span>
-<span id="1692">1692</span>
-<span id="1693">1693</span>
-<span id="1694">1694</span>
-<span id="1695">1695</span>
-<span id="1696">1696</span>
-<span id="1697">1697</span>
-<span id="1698">1698</span>
-<span id="1699">1699</span>
-<span id="1700">1700</span>
-<span id="1701">1701</span>
-<span id="1702">1702</span>
-<span id="1703">1703</span>
-<span id="1704">1704</span>
-<span id="1705">1705</span>
-<span id="1706">1706</span>
-<span id="1707">1707</span>
-<span id="1708">1708</span>
-<span id="1709">1709</span>
-<span id="1710">1710</span>
-<span id="1711">1711</span>
-<span id="1712">1712</span>
-<span id="1713">1713</span>
-<span id="1714">1714</span>
-<span id="1715">1715</span>
-<span id="1716">1716</span>
-<span id="1717">1717</span>
-<span id="1718">1718</span>
-<span id="1719">1719</span>
-<span id="1720">1720</span>
-<span id="1721">1721</span>
-<span id="1722">1722</span>
-<span id="1723">1723</span>
-<span id="1724">1724</span>
-<span id="1725">1725</span>
-<span id="1726">1726</span>
-<span id="1727">1727</span>
-<span id="1728">1728</span>
-<span id="1729">1729</span>
-<span id="1730">1730</span>
-<span id="1731">1731</span>
-<span id="1732">1732</span>
-<span id="1733">1733</span>
-<span id="1734">1734</span>
-<span id="1735">1735</span>
-<span id="1736">1736</span>
-<span id="1737">1737</span>
-<span id="1738">1738</span>
-<span id="1739">1739</span>
-<span id="1740">1740</span>
-<span id="1741">1741</span>
-<span id="1742">1742</span>
-<span id="1743">1743</span>
-<span id="1744">1744</span>
-<span id="1745">1745</span>
-<span id="1746">1746</span>
-<span id="1747">1747</span>
-<span id="1748">1748</span>
-<span id="1749">1749</span>
-<span id="1750">1750</span>
-<span id="1751">1751</span>
-<span id="1752">1752</span>
-<span id="1753">1753</span>
-<span id="1754">1754</span>
-<span id="1755">1755</span>
-<span id="1756">1756</span>
-<span id="1757">1757</span>
-<span id="1758">1758</span>
-<span id="1759">1759</span>
-<span id="1760">1760</span>
-<span id="1761">1761</span>
-<span id="1762">1762</span>
-<span id="1763">1763</span>
-<span id="1764">1764</span>
-<span id="1765">1765</span>
-<span id="1766">1766</span>
-<span id="1767">1767</span>
-<span id="1768">1768</span>
-<span id="1769">1769</span>
-<span id="1770">1770</span>
-<span id="1771">1771</span>
-<span id="1772">1772</span>
-<span id="1773">1773</span>
-<span id="1774">1774</span>
-<span id="1775">1775</span>
-<span id="1776">1776</span>
-<span id="1777">1777</span>
-<span id="1778">1778</span>
-<span id="1779">1779</span>
-<span id="1780">1780</span>
-<span id="1781">1781</span>
-<span id="1782">1782</span>
-<span id="1783">1783</span>
-<span id="1784">1784</span>
-<span id="1785">1785</span>
-<span id="1786">1786</span>
-<span id="1787">1787</span>
-<span id="1788">1788</span>
-<span id="1789">1789</span>
-<span id="1790">1790</span>
-<span id="1791">1791</span>
-<span id="1792">1792</span>
-<span id="1793">1793</span>
-<span id="1794">1794</span>
-<span id="1795">1795</span>
-<span id="1796">1796</span>
-<span id="1797">1797</span>
-<span id="1798">1798</span>
-<span id="1799">1799</span>
-<span id="1800">1800</span>
-<span id="1801">1801</span>
-<span id="1802">1802</span>
-<span id="1803">1803</span>
-<span id="1804">1804</span>
-<span id="1805">1805</span>
-<span id="1806">1806</span>
-<span id="1807">1807</span>
-<span id="1808">1808</span>
-<span id="1809">1809</span>
-<span id="1810">1810</span>
-<span id="1811">1811</span>
-<span id="1812">1812</span>
-<span id="1813">1813</span>
-<span id="1814">1814</span>
-<span id="1815">1815</span>
-<span id="1816">1816</span>
-<span id="1817">1817</span>
-<span id="1818">1818</span>
-<span id="1819">1819</span>
-<span id="1820">1820</span>
-<span id="1821">1821</span>
-<span id="1822">1822</span>
-<span id="1823">1823</span>
-<span id="1824">1824</span>
-<span id="1825">1825</span>
-<span id="1826">1826</span>
-<span id="1827">1827</span>
-<span id="1828">1828</span>
-<span id="1829">1829</span>
-<span id="1830">1830</span>
-<span id="1831">1831</span>
-<span id="1832">1832</span>
-<span id="1833">1833</span>
-<span id="1834">1834</span>
-<span id="1835">1835</span>
-<span id="1836">1836</span>
-<span id="1837">1837</span>
-<span id="1838">1838</span>
-<span id="1839">1839</span>
-<span id="1840">1840</span>
-<span id="1841">1841</span>
-<span id="1842">1842</span>
-<span id="1843">1843</span>
-<span id="1844">1844</span>
-<span id="1845">1845</span>
-<span id="1846">1846</span>
-<span id="1847">1847</span>
-<span id="1848">1848</span>
-<span id="1849">1849</span>
-<span id="1850">1850</span>
-<span id="1851">1851</span>
-<span id="1852">1852</span>
-<span id="1853">1853</span>
-<span id="1854">1854</span>
-<span id="1855">1855</span>
-<span id="1856">1856</span>
-<span id="1857">1857</span>
-<span id="1858">1858</span>
-<span id="1859">1859</span>
-<span id="1860">1860</span>
-<span id="1861">1861</span>
-<span id="1862">1862</span>
-<span id="1863">1863</span>
-<span id="1864">1864</span>
-<span id="1865">1865</span>
-<span id="1866">1866</span>
-<span id="1867">1867</span>
-<span id="1868">1868</span>
-<span id="1869">1869</span>
-<span id="1870">1870</span>
-<span id="1871">1871</span>
-<span id="1872">1872</span>
-<span id="1873">1873</span>
-<span id="1874">1874</span>
-<span id="1875">1875</span>
-<span id="1876">1876</span>
-<span id="1877">1877</span>
-<span id="1878">1878</span>
-<span id="1879">1879</span>
-<span id="1880">1880</span>
-<span id="1881">1881</span>
-<span id="1882">1882</span>
-<span id="1883">1883</span>
-<span id="1884">1884</span>
-<span id="1885">1885</span>
-<span id="1886">1886</span>
-<span id="1887">1887</span>
-<span id="1888">1888</span>
-<span id="1889">1889</span>
-<span id="1890">1890</span>
-<span id="1891">1891</span>
-<span id="1892">1892</span>
-<span id="1893">1893</span>
-<span id="1894">1894</span>
-<span id="1895">1895</span>
-<span id="1896">1896</span>
-<span id="1897">1897</span>
-<span id="1898">1898</span>
-<span id="1899">1899</span>
-<span id="1900">1900</span>
-<span id="1901">1901</span>
-<span id="1902">1902</span>
-<span id="1903">1903</span>
-<span id="1904">1904</span>
-<span id="1905">1905</span>
-<span id="1906">1906</span>
-<span id="1907">1907</span>
-<span id="1908">1908</span>
-<span id="1909">1909</span>
-<span id="1910">1910</span>
-<span id="1911">1911</span>
-<span id="1912">1912</span>
-<span id="1913">1913</span>
-<span id="1914">1914</span>
-<span id="1915">1915</span>
-<span id="1916">1916</span>
-<span id="1917">1917</span>
-<span id="1918">1918</span>
-<span id="1919">1919</span>
-<span id="1920">1920</span>
-<span id="1921">1921</span>
-<span id="1922">1922</span>
-<span id="1923">1923</span>
-<span id="1924">1924</span>
-<span id="1925">1925</span>
-<span id="1926">1926</span>
-<span id="1927">1927</span>
-<span id="1928">1928</span>
-<span id="1929">1929</span>
-<span id="1930">1930</span>
-<span id="1931">1931</span>
-<span id="1932">1932</span>
-<span id="1933">1933</span>
-<span id="1934">1934</span>
-<span id="1935">1935</span>
-<span id="1936">1936</span>
-<span id="1937">1937</span>
-<span id="1938">1938</span>
-<span id="1939">1939</span>
-<span id="1940">1940</span>
-<span id="1941">1941</span>
-<span id="1942">1942</span>
-<span id="1943">1943</span>
-<span id="1944">1944</span>
-<span id="1945">1945</span>
-<span id="1946">1946</span>
-<span id="1947">1947</span>
-<span id="1948">1948</span>
-<span id="1949">1949</span>
-<span id="1950">1950</span>
-<span id="1951">1951</span>
-<span id="1952">1952</span>
-<span id="1953">1953</span>
-<span id="1954">1954</span>
-<span id="1955">1955</span>
-<span id="1956">1956</span>
-<span id="1957">1957</span>
-<span id="1958">1958</span>
-<span id="1959">1959</span>
-<span id="1960">1960</span>
-<span id="1961">1961</span>
-<span id="1962">1962</span>
-<span id="1963">1963</span>
-<span id="1964">1964</span>
-<span id="1965">1965</span>
-<span id="1966">1966</span>
-<span id="1967">1967</span>
-<span id="1968">1968</span>
-<span id="1969">1969</span>
-<span id="1970">1970</span>
-<span id="1971">1971</span>
-<span id="1972">1972</span>
-<span id="1973">1973</span>
-<span id="1974">1974</span>
-<span id="1975">1975</span>
-<span id="1976">1976</span>
-<span id="1977">1977</span>
-<span id="1978">1978</span>
-<span id="1979">1979</span>
-<span id="1980">1980</span>
-<span id="1981">1981</span>
-<span id="1982">1982</span>
-<span id="1983">1983</span>
-<span id="1984">1984</span>
-<span id="1985">1985</span>
-<span id="1986">1986</span>
-<span id="1987">1987</span>
-<span id="1988">1988</span>
-<span id="1989">1989</span>
-<span id="1990">1990</span>
-<span id="1991">1991</span>
-<span id="1992">1992</span>
-<span id="1993">1993</span>
-<span id="1994">1994</span>
-<span id="1995">1995</span>
-<span id="1996">1996</span>
-<span id="1997">1997</span>
-<span id="1998">1998</span>
-<span id="1999">1999</span>
-<span id="2000">2000</span>
-<span id="2001">2001</span>
-<span id="2002">2002</span>
-<span id="2003">2003</span>
-<span id="2004">2004</span>
-<span id="2005">2005</span>
-<span id="2006">2006</span>
-<span id="2007">2007</span>
-<span id="2008">2008</span>
-<span id="2009">2009</span>
-<span id="2010">2010</span>
-<span id="2011">2011</span>
-<span id="2012">2012</span>
-<span id="2013">2013</span>
-<span id="2014">2014</span>
-<span id="2015">2015</span>
-<span id="2016">2016</span>
-<span id="2017">2017</span>
-<span id="2018">2018</span>
-<span id="2019">2019</span>
-<span id="2020">2020</span>
-<span id="2021">2021</span>
-<span id="2022">2022</span>
-<span id="2023">2023</span>
-<span id="2024">2024</span>
-<span id="2025">2025</span>
-<span id="2026">2026</span>
-<span id="2027">2027</span>
-<span id="2028">2028</span>
-<span id="2029">2029</span>
-<span id="2030">2030</span>
-<span id="2031">2031</span>
-<span id="2032">2032</span>
-<span id="2033">2033</span>
-<span id="2034">2034</span>
-<span id="2035">2035</span>
-<span id="2036">2036</span>
-<span id="2037">2037</span>
-<span id="2038">2038</span>
-<span id="2039">2039</span>
-<span id="2040">2040</span>
-<span id="2041">2041</span>
-<span id="2042">2042</span>
-<span id="2043">2043</span>
-<span id="2044">2044</span>
-<span id="2045">2045</span>
-<span id="2046">2046</span>
-<span id="2047">2047</span>
-<span id="2048">2048</span>
-<span id="2049">2049</span>
-<span id="2050">2050</span>
-<span id="2051">2051</span>
-<span id="2052">2052</span>
-<span id="2053">2053</span>
-<span id="2054">2054</span>
-<span id="2055">2055</span>
-<span id="2056">2056</span>
-<span id="2057">2057</span>
-<span id="2058">2058</span>
-<span id="2059">2059</span>
-<span id="2060">2060</span>
-<span id="2061">2061</span>
-<span id="2062">2062</span>
-<span id="2063">2063</span>
-<span id="2064">2064</span>
-<span id="2065">2065</span>
-<span id="2066">2066</span>
-<span id="2067">2067</span>
-<span id="2068">2068</span>
-<span id="2069">2069</span>
-<span id="2070">2070</span>
-<span id="2071">2071</span>
-<span id="2072">2072</span>
-<span id="2073">2073</span>
-<span id="2074">2074</span>
-<span id="2075">2075</span>
-<span id="2076">2076</span>
-<span id="2077">2077</span>
-<span id="2078">2078</span>
-<span id="2079">2079</span>
-<span id="2080">2080</span>
-<span id="2081">2081</span>
-<span id="2082">2082</span>
-<span id="2083">2083</span>
-<span id="2084">2084</span>
-<span id="2085">2085</span>
-<span id="2086">2086</span>
-<span id="2087">2087</span>
-<span id="2088">2088</span>
-<span id="2089">2089</span>
-<span id="2090">2090</span>
-<span id="2091">2091</span>
-<span id="2092">2092</span>
-<span id="2093">2093</span>
-<span id="2094">2094</span>
-<span id="2095">2095</span>
-<span id="2096">2096</span>
-<span id="2097">2097</span>
-<span id="2098">2098</span>
-<span id="2099">2099</span>
-<span id="2100">2100</span>
-<span id="2101">2101</span>
-<span id="2102">2102</span>
-<span id="2103">2103</span>
-<span id="2104">2104</span>
-<span id="2105">2105</span>
-<span id="2106">2106</span>
-<span id="2107">2107</span>
-<span id="2108">2108</span>
-<span id="2109">2109</span>
-<span id="2110">2110</span>
-<span id="2111">2111</span>
-<span id="2112">2112</span>
-<span id="2113">2113</span>
-<span id="2114">2114</span>
-<span id="2115">2115</span>
-<span id="2116">2116</span>
-<span id="2117">2117</span>
-<span id="2118">2118</span>
-<span id="2119">2119</span>
-<span id="2120">2120</span>
-<span id="2121">2121</span>
-<span id="2122">2122</span>
-<span id="2123">2123</span>
-<span id="2124">2124</span>
-<span id="2125">2125</span>
-<span id="2126">2126</span>
-<span id="2127">2127</span>
-<span id="2128">2128</span>
-<span id="2129">2129</span>
-<span id="2130">2130</span>
-<span id="2131">2131</span>
-<span id="2132">2132</span>
-<span id="2133">2133</span>
-<span id="2134">2134</span>
-<span id="2135">2135</span>
-<span id="2136">2136</span>
-<span id="2137">2137</span>
-<span id="2138">2138</span>
-<span id="2139">2139</span>
-<span id="2140">2140</span>
-<span id="2141">2141</span>
-<span id="2142">2142</span>
-<span id="2143">2143</span>
-<span id="2144">2144</span>
-<span id="2145">2145</span>
-<span id="2146">2146</span>
-<span id="2147">2147</span>
-<span id="2148">2148</span>
-<span id="2149">2149</span>
-<span id="2150">2150</span>
-<span id="2151">2151</span>
-<span id="2152">2152</span>
-<span id="2153">2153</span>
-<span id="2154">2154</span>
-<span id="2155">2155</span>
-<span id="2156">2156</span>
-<span id="2157">2157</span>
-<span id="2158">2158</span>
-<span id="2159">2159</span>
-<span id="2160">2160</span>
-<span id="2161">2161</span>
-<span id="2162">2162</span>
-<span id="2163">2163</span>
-<span id="2164">2164</span>
-<span id="2165">2165</span>
-<span id="2166">2166</span>
-<span id="2167">2167</span>
-<span id="2168">2168</span>
-<span id="2169">2169</span>
-<span id="2170">2170</span>
-<span id="2171">2171</span>
-<span id="2172">2172</span>
-<span id="2173">2173</span>
-<span id="2174">2174</span>
-<span id="2175">2175</span>
-<span id="2176">2176</span>
-<span id="2177">2177</span>
-<span id="2178">2178</span>
-<span id="2179">2179</span>
-<span id="2180">2180</span>
-<span id="2181">2181</span>
-<span id="2182">2182</span>
-<span id="2183">2183</span>
-<span id="2184">2184</span>
-<span id="2185">2185</span>
-<span id="2186">2186</span>
-<span id="2187">2187</span>
-<span id="2188">2188</span>
-<span id="2189">2189</span>
-<span id="2190">2190</span>
-<span id="2191">2191</span>
-<span id="2192">2192</span>
-<span id="2193">2193</span>
-<span id="2194">2194</span>
-<span id="2195">2195</span>
-<span id="2196">2196</span>
-<span id="2197">2197</span>
-<span id="2198">2198</span>
-<span id="2199">2199</span>
-<span id="2200">2200</span>
-<span id="2201">2201</span>
-<span id="2202">2202</span>
-<span id="2203">2203</span>
-<span id="2204">2204</span>
-<span id="2205">2205</span>
-<span id="2206">2206</span>
-<span id="2207">2207</span>
-<span id="2208">2208</span>
-<span id="2209">2209</span>
-<span id="2210">2210</span>
-<span id="2211">2211</span>
-<span id="2212">2212</span>
-<span id="2213">2213</span>
-<span id="2214">2214</span>
-<span id="2215">2215</span>
-<span id="2216">2216</span>
-<span id="2217">2217</span>
-<span id="2218">2218</span>
-<span id="2219">2219</span>
-<span id="2220">2220</span>
-<span id="2221">2221</span>
-<span id="2222">2222</span>
-<span id="2223">2223</span>
-<span id="2224">2224</span>
-<span id="2225">2225</span>
-<span id="2226">2226</span>
-<span id="2227">2227</span>
-<span id="2228">2228</span>
-<span id="2229">2229</span>
-<span id="2230">2230</span>
-<span id="2231">2231</span>
-<span id="2232">2232</span>
-<span id="2233">2233</span>
-<span id="2234">2234</span>
-<span id="2235">2235</span>
-<span id="2236">2236</span>
-<span id="2237">2237</span>
-<span id="2238">2238</span>
-<span id="2239">2239</span>
-<span id="2240">2240</span>
-<span id="2241">2241</span>
-<span id="2242">2242</span>
-<span id="2243">2243</span>
-<span id="2244">2244</span>
-<span id="2245">2245</span>
-<span id="2246">2246</span>
-<span id="2247">2247</span>
-<span id="2248">2248</span>
-<span id="2249">2249</span>
-<span id="2250">2250</span>
-<span id="2251">2251</span>
-<span id="2252">2252</span>
-<span id="2253">2253</span>
-<span id="2254">2254</span>
-<span id="2255">2255</span>
-<span id="2256">2256</span>
-<span id="2257">2257</span>
-<span id="2258">2258</span>
-<span id="2259">2259</span>
-<span id="2260">2260</span>
-<span id="2261">2261</span>
-<span id="2262">2262</span>
-<span id="2263">2263</span>
-<span id="2264">2264</span>
-<span id="2265">2265</span>
-<span id="2266">2266</span>
-<span id="2267">2267</span>
-<span id="2268">2268</span>
-<span id="2269">2269</span>
-<span id="2270">2270</span>
-<span id="2271">2271</span>
-<span id="2272">2272</span>
-<span id="2273">2273</span>
-<span id="2274">2274</span>
-<span id="2275">2275</span>
-<span id="2276">2276</span>
-<span id="2277">2277</span>
-<span id="2278">2278</span>
-<span id="2279">2279</span>
-<span id="2280">2280</span>
-<span id="2281">2281</span>
-<span id="2282">2282</span>
-<span id="2283">2283</span>
-<span id="2284">2284</span>
-<span id="2285">2285</span>
-<span id="2286">2286</span>
-<span id="2287">2287</span>
-<span id="2288">2288</span>
-<span id="2289">2289</span>
-<span id="2290">2290</span>
-<span id="2291">2291</span>
-<span id="2292">2292</span>
-<span id="2293">2293</span>
-<span id="2294">2294</span>
-<span id="2295">2295</span>
-<span id="2296">2296</span>
-<span id="2297">2297</span>
-<span id="2298">2298</span>
-<span id="2299">2299</span>
-<span id="2300">2300</span>
-<span id="2301">2301</span>
-<span id="2302">2302</span>
-<span id="2303">2303</span>
-<span id="2304">2304</span>
-<span id="2305">2305</span>
-<span id="2306">2306</span>
-<span id="2307">2307</span>
-<span id="2308">2308</span>
-<span id="2309">2309</span>
-<span id="2310">2310</span>
-<span id="2311">2311</span>
-<span id="2312">2312</span>
-<span id="2313">2313</span>
-<span id="2314">2314</span>
-<span id="2315">2315</span>
-<span id="2316">2316</span>
-<span id="2317">2317</span>
-<span id="2318">2318</span>
-<span id="2319">2319</span>
-<span id="2320">2320</span>
-<span id="2321">2321</span>
-<span id="2322">2322</span>
-<span id="2323">2323</span>
-<span id="2324">2324</span>
-<span id="2325">2325</span>
-<span id="2326">2326</span>
-<span id="2327">2327</span>
-<span id="2328">2328</span>
-<span id="2329">2329</span>
-<span id="2330">2330</span>
-<span id="2331">2331</span>
-<span id="2332">2332</span>
-<span id="2333">2333</span>
-<span id="2334">2334</span>
-<span id="2335">2335</span>
-<span id="2336">2336</span>
-<span id="2337">2337</span>
-<span id="2338">2338</span>
-<span id="2339">2339</span>
-<span id="2340">2340</span>
-<span id="2341">2341</span>
-<span id="2342">2342</span>
-<span id="2343">2343</span>
-<span id="2344">2344</span>
-<span id="2345">2345</span>
-<span id="2346">2346</span>
-<span id="2347">2347</span>
-<span id="2348">2348</span>
-<span id="2349">2349</span>
-<span id="2350">2350</span>
-<span id="2351">2351</span>
-<span id="2352">2352</span>
-<span id="2353">2353</span>
-<span id="2354">2354</span>
-<span id="2355">2355</span>
-<span id="2356">2356</span>
-<span id="2357">2357</span>
-<span id="2358">2358</span>
-<span id="2359">2359</span>
-<span id="2360">2360</span>
-<span id="2361">2361</span>
-<span id="2362">2362</span>
-<span id="2363">2363</span>
-<span id="2364">2364</span>
-<span id="2365">2365</span>
-<span id="2366">2366</span>
-<span id="2367">2367</span>
-<span id="2368">2368</span>
-<span id="2369">2369</span>
-<span id="2370">2370</span>
-<span id="2371">2371</span>
-<span id="2372">2372</span>
-<span id="2373">2373</span>
-<span id="2374">2374</span>
-<span id="2375">2375</span>
-<span id="2376">2376</span>
-<span id="2377">2377</span>
-<span id="2378">2378</span>
-<span id="2379">2379</span>
-<span id="2380">2380</span>
-<span id="2381">2381</span>
-<span id="2382">2382</span>
-<span id="2383">2383</span>
-<span id="2384">2384</span>
-<span id="2385">2385</span>
-<span id="2386">2386</span>
-<span id="2387">2387</span>
-<span id="2388">2388</span>
-<span id="2389">2389</span>
-<span id="2390">2390</span>
-<span id="2391">2391</span>
-<span id="2392">2392</span>
-<span id="2393">2393</span>
-<span id="2394">2394</span>
-<span id="2395">2395</span>
-<span id="2396">2396</span>
-<span id="2397">2397</span>
-<span id="2398">2398</span>
-<span id="2399">2399</span>
-<span id="2400">2400</span>
-<span id="2401">2401</span>
-<span id="2402">2402</span>
-<span id="2403">2403</span>
-<span id="2404">2404</span>
-<span id="2405">2405</span>
-<span id="2406">2406</span>
-<span id="2407">2407</span>
-<span id="2408">2408</span>
-<span id="2409">2409</span>
-<span id="2410">2410</span>
-<span id="2411">2411</span>
-<span id="2412">2412</span>
-<span id="2413">2413</span>
-<span id="2414">2414</span>
-<span id="2415">2415</span>
-<span id="2416">2416</span>
-<span id="2417">2417</span>
-<span id="2418">2418</span>
-<span id="2419">2419</span>
-<span id="2420">2420</span>
-<span id="2421">2421</span>
-<span id="2422">2422</span>
-<span id="2423">2423</span>
-<span id="2424">2424</span>
-<span id="2425">2425</span>
-<span id="2426">2426</span>
-<span id="2427">2427</span>
-<span id="2428">2428</span>
-<span id="2429">2429</span>
-<span id="2430">2430</span>
-<span id="2431">2431</span>
-<span id="2432">2432</span>
-<span id="2433">2433</span>
-<span id="2434">2434</span>
-<span id="2435">2435</span>
-<span id="2436">2436</span>
-<span id="2437">2437</span>
-<span id="2438">2438</span>
-<span id="2439">2439</span>
-<span id="2440">2440</span>
-<span id="2441">2441</span>
-<span id="2442">2442</span>
-<span id="2443">2443</span>
-<span id="2444">2444</span>
-<span id="2445">2445</span>
-<span id="2446">2446</span>
-<span id="2447">2447</span>
-<span id="2448">2448</span>
-<span id="2449">2449</span>
-<span id="2450">2450</span>
-<span id="2451">2451</span>
-<span id="2452">2452</span>
-<span id="2453">2453</span>
-<span id="2454">2454</span>
-<span id="2455">2455</span>
-<span id="2456">2456</span>
-<span id="2457">2457</span>
-<span id="2458">2458</span>
-<span id="2459">2459</span>
-<span id="2460">2460</span>
-<span id="2461">2461</span>
-<span id="2462">2462</span>
-<span id="2463">2463</span>
-<span id="2464">2464</span>
-<span id="2465">2465</span>
-<span id="2466">2466</span>
-<span id="2467">2467</span>
-<span id="2468">2468</span>
-<span id="2469">2469</span>
-<span id="2470">2470</span>
-<span id="2471">2471</span>
-<span id="2472">2472</span>
-<span id="2473">2473</span>
-<span id="2474">2474</span>
-<span id="2475">2475</span>
-<span id="2476">2476</span>
-<span id="2477">2477</span>
-<span id="2478">2478</span>
-<span id="2479">2479</span>
-<span id="2480">2480</span>
-<span id="2481">2481</span>
-<span id="2482">2482</span>
-<span id="2483">2483</span>
-<span id="2484">2484</span>
-<span id="2485">2485</span>
-<span id="2486">2486</span>
-<span id="2487">2487</span>
-<span id="2488">2488</span>
-<span id="2489">2489</span>
-<span id="2490">2490</span>
-<span id="2491">2491</span>
-<span id="2492">2492</span>
-<span id="2493">2493</span>
-<span id="2494">2494</span>
-<span id="2495">2495</span>
-<span id="2496">2496</span>
-<span id="2497">2497</span>
-<span id="2498">2498</span>
-<span id="2499">2499</span>
-<span id="2500">2500</span>
-<span id="2501">2501</span>
-<span id="2502">2502</span>
-<span id="2503">2503</span>
-<span id="2504">2504</span>
-<span id="2505">2505</span>
-<span id="2506">2506</span>
-<span id="2507">2507</span>
-<span id="2508">2508</span>
-<span id="2509">2509</span>
-<span id="2510">2510</span>
-<span id="2511">2511</span>
-<span id="2512">2512</span>
-<span id="2513">2513</span>
-<span id="2514">2514</span>
-<span id="2515">2515</span>
-<span id="2516">2516</span>
-<span id="2517">2517</span>
-<span id="2518">2518</span>
-<span id="2519">2519</span>
-<span id="2520">2520</span>
-<span id="2521">2521</span>
-<span id="2522">2522</span>
-<span id="2523">2523</span>
-<span id="2524">2524</span>
-<span id="2525">2525</span>
-<span id="2526">2526</span>
-<span id="2527">2527</span>
-<span id="2528">2528</span>
-<span id="2529">2529</span>
-<span id="2530">2530</span>
-<span id="2531">2531</span>
-<span id="2532">2532</span>
-<span id="2533">2533</span>
-<span id="2534">2534</span>
-<span id="2535">2535</span>
-<span id="2536">2536</span>
-<span id="2537">2537</span>
-<span id="2538">2538</span>
-<span id="2539">2539</span>
-<span id="2540">2540</span>
-<span id="2541">2541</span>
-<span id="2542">2542</span>
-<span id="2543">2543</span>
-<span id="2544">2544</span>
-<span id="2545">2545</span>
-<span id="2546">2546</span>
-<span id="2547">2547</span>
-<span id="2548">2548</span>
-<span id="2549">2549</span>
-<span id="2550">2550</span>
-<span id="2551">2551</span>
-<span id="2552">2552</span>
-<span id="2553">2553</span>
-<span id="2554">2554</span>
-<span id="2555">2555</span>
-<span id="2556">2556</span>
-<span id="2557">2557</span>
-<span id="2558">2558</span>
-<span id="2559">2559</span>
-<span id="2560">2560</span>
-<span id="2561">2561</span>
-<span id="2562">2562</span>
-<span id="2563">2563</span>
-<span id="2564">2564</span>
-<span id="2565">2565</span>
-<span id="2566">2566</span>
-<span id="2567">2567</span>
-<span id="2568">2568</span>
-<span id="2569">2569</span>
-<span id="2570">2570</span>
-<span id="2571">2571</span>
-<span id="2572">2572</span>
-<span id="2573">2573</span>
-<span id="2574">2574</span>
-<span id="2575">2575</span>
-<span id="2576">2576</span>
-<span id="2577">2577</span>
-<span id="2578">2578</span>
-<span id="2579">2579</span>
-<span id="2580">2580</span>
-<span id="2581">2581</span>
-<span id="2582">2582</span>
-<span id="2583">2583</span>
-<span id="2584">2584</span>
-<span id="2585">2585</span>
-<span id="2586">2586</span>
-<span id="2587">2587</span>
-<span id="2588">2588</span>
-<span id="2589">2589</span>
-<span id="2590">2590</span>
-<span id="2591">2591</span>
-<span id="2592">2592</span>
-<span id="2593">2593</span>
-<span id="2594">2594</span>
-<span id="2595">2595</span>
-<span id="2596">2596</span>
-<span id="2597">2597</span>
-<span id="2598">2598</span>
-<span id="2599">2599</span>
-<span id="2600">2600</span>
-<span id="2601">2601</span>
-<span id="2602">2602</span>
-<span id="2603">2603</span>
-<span id="2604">2604</span>
-<span id="2605">2605</span>
-<span id="2606">2606</span>
-<span id="2607">2607</span>
-<span id="2608">2608</span>
-<span id="2609">2609</span>
-<span id="2610">2610</span>
-<span id="2611">2611</span>
-<span id="2612">2612</span>
-<span id="2613">2613</span>
-<span id="2614">2614</span>
-<span id="2615">2615</span>
-<span id="2616">2616</span>
-<span id="2617">2617</span>
-<span id="2618">2618</span>
-<span id="2619">2619</span>
-<span id="2620">2620</span>
-<span id="2621">2621</span>
-<span id="2622">2622</span>
-<span id="2623">2623</span>
-<span id="2624">2624</span>
-<span id="2625">2625</span>
-<span id="2626">2626</span>
-<span id="2627">2627</span>
-<span id="2628">2628</span>
-<span id="2629">2629</span>
-<span id="2630">2630</span>
-<span id="2631">2631</span>
-<span id="2632">2632</span>
-<span id="2633">2633</span>
-<span id="2634">2634</span>
-<span id="2635">2635</span>
-<span id="2636">2636</span>
-<span id="2637">2637</span>
-<span id="2638">2638</span>
-<span id="2639">2639</span>
-<span id="2640">2640</span>
-<span id="2641">2641</span>
-<span id="2642">2642</span>
-<span id="2643">2643</span>
-<span id="2644">2644</span>
-<span id="2645">2645</span>
-<span id="2646">2646</span>
-<span id="2647">2647</span>
-<span id="2648">2648</span>
-<span id="2649">2649</span>
-<span id="2650">2650</span>
-<span id="2651">2651</span>
-<span id="2652">2652</span>
-<span id="2653">2653</span>
-<span id="2654">2654</span>
-<span id="2655">2655</span>
-<span id="2656">2656</span>
-<span id="2657">2657</span>
-<span id="2658">2658</span>
-<span id="2659">2659</span>
-<span id="2660">2660</span>
-<span id="2661">2661</span>
-<span id="2662">2662</span>
-<span id="2663">2663</span>
-<span id="2664">2664</span>
-<span id="2665">2665</span>
-<span id="2666">2666</span>
-<span id="2667">2667</span>
-<span id="2668">2668</span>
-<span id="2669">2669</span>
-<span id="2670">2670</span>
-<span id="2671">2671</span>
-<span id="2672">2672</span>
-<span id="2673">2673</span>
-<span id="2674">2674</span>
-<span id="2675">2675</span>
-<span id="2676">2676</span>
-<span id="2677">2677</span>
-<span id="2678">2678</span>
-<span id="2679">2679</span>
-<span id="2680">2680</span>
-<span id="2681">2681</span>
-<span id="2682">2682</span>
-<span id="2683">2683</span>
-<span id="2684">2684</span>
-<span id="2685">2685</span>
-<span id="2686">2686</span>
-<span id="2687">2687</span>
-<span id="2688">2688</span>
-<span id="2689">2689</span>
-<span id="2690">2690</span>
-<span id="2691">2691</span>
-<span id="2692">2692</span>
-<span id="2693">2693</span>
-<span id="2694">2694</span>
-<span id="2695">2695</span>
-<span id="2696">2696</span>
-<span id="2697">2697</span>
-<span id="2698">2698</span>
-<span id="2699">2699</span>
-<span id="2700">2700</span>
-<span id="2701">2701</span>
-<span id="2702">2702</span>
-<span id="2703">2703</span>
-<span id="2704">2704</span>
-<span id="2705">2705</span>
-<span id="2706">2706</span>
-<span id="2707">2707</span>
-<span id="2708">2708</span>
-<span id="2709">2709</span>
-<span id="2710">2710</span>
-<span id="2711">2711</span>
-<span id="2712">2712</span>
-<span id="2713">2713</span>
-<span id="2714">2714</span>
-<span id="2715">2715</span>
-<span id="2716">2716</span>
-<span id="2717">2717</span>
-<span id="2718">2718</span>
-<span id="2719">2719</span>
-<span id="2720">2720</span>
-<span id="2721">2721</span>
-<span id="2722">2722</span>
-<span id="2723">2723</span>
-<span id="2724">2724</span>
-<span id="2725">2725</span>
-<span id="2726">2726</span>
-<span id="2727">2727</span>
-<span id="2728">2728</span>
-<span id="2729">2729</span>
-<span id="2730">2730</span>
-<span id="2731">2731</span>
-<span id="2732">2732</span>
-<span id="2733">2733</span>
-<span id="2734">2734</span>
-<span id="2735">2735</span>
-<span id="2736">2736</span>
-<span id="2737">2737</span>
-<span id="2738">2738</span>
-<span id="2739">2739</span>
-<span id="2740">2740</span>
-<span id="2741">2741</span>
-<span id="2742">2742</span>
-<span id="2743">2743</span>
-<span id="2744">2744</span>
-<span id="2745">2745</span>
-<span id="2746">2746</span>
-<span id="2747">2747</span>
-<span id="2748">2748</span>
-<span id="2749">2749</span>
-<span id="2750">2750</span>
-<span id="2751">2751</span>
-<span id="2752">2752</span>
-<span id="2753">2753</span>
-<span id="2754">2754</span>
-<span id="2755">2755</span>
-<span id="2756">2756</span>
-<span id="2757">2757</span>
-<span id="2758">2758</span>
-<span id="2759">2759</span>
-<span id="2760">2760</span>
-<span id="2761">2761</span>
-<span id="2762">2762</span>
-<span id="2763">2763</span>
-<span id="2764">2764</span>
-<span id="2765">2765</span>
-<span id="2766">2766</span>
-<span id="2767">2767</span>
-<span id="2768">2768</span>
-<span id="2769">2769</span>
-<span id="2770">2770</span>
-<span id="2771">2771</span>
-<span id="2772">2772</span>
-<span id="2773">2773</span>
-<span id="2774">2774</span>
-<span id="2775">2775</span>
-<span id="2776">2776</span>
-<span id="2777">2777</span>
-<span id="2778">2778</span>
-<span id="2779">2779</span>
-<span id="2780">2780</span>
-<span id="2781">2781</span>
-<span id="2782">2782</span>
-<span id="2783">2783</span>
-<span id="2784">2784</span>
-<span id="2785">2785</span>
-<span id="2786">2786</span>
-<span id="2787">2787</span>
-<span id="2788">2788</span>
-<span id="2789">2789</span>
-<span id="2790">2790</span>
-<span id="2791">2791</span>
-<span id="2792">2792</span>
-<span id="2793">2793</span>
-<span id="2794">2794</span>
-<span id="2795">2795</span>
-<span id="2796">2796</span>
-<span id="2797">2797</span>
-<span id="2798">2798</span>
-<span id="2799">2799</span>
-<span id="2800">2800</span>
-<span id="2801">2801</span>
-<span id="2802">2802</span>
-<span id="2803">2803</span>
-<span id="2804">2804</span>
-<span id="2805">2805</span>
-<span id="2806">2806</span>
-<span id="2807">2807</span>
-<span id="2808">2808</span>
-<span id="2809">2809</span>
-<span id="2810">2810</span>
-<span id="2811">2811</span>
-<span id="2812">2812</span>
-<span id="2813">2813</span>
-<span id="2814">2814</span>
-<span id="2815">2815</span>
-<span id="2816">2816</span>
-<span id="2817">2817</span>
-<span id="2818">2818</span>
-<span id="2819">2819</span>
-<span id="2820">2820</span>
-<span id="2821">2821</span>
-<span id="2822">2822</span>
-<span id="2823">2823</span>
-<span id="2824">2824</span>
-<span id="2825">2825</span>
-<span id="2826">2826</span>
-<span id="2827">2827</span>
-<span id="2828">2828</span>
-<span id="2829">2829</span>
-<span id="2830">2830</span>
-<span id="2831">2831</span>
-<span id="2832">2832</span>
-<span id="2833">2833</span>
-<span id="2834">2834</span>
-<span id="2835">2835</span>
-<span id="2836">2836</span>
-<span id="2837">2837</span>
-<span id="2838">2838</span>
-<span id="2839">2839</span>
-<span id="2840">2840</span>
-<span id="2841">2841</span>
-<span id="2842">2842</span>
-<span id="2843">2843</span>
-<span id="2844">2844</span>
-<span id="2845">2845</span>
-<span id="2846">2846</span>
-<span id="2847">2847</span>
-<span id="2848">2848</span>
-<span id="2849">2849</span>
-<span id="2850">2850</span>
-<span id="2851">2851</span>
-<span id="2852">2852</span>
-<span id="2853">2853</span>
-<span id="2854">2854</span>
-<span id="2855">2855</span>
-<span id="2856">2856</span>
-<span id="2857">2857</span>
-<span id="2858">2858</span>
-<span id="2859">2859</span>
-<span id="2860">2860</span>
-<span id="2861">2861</span>
-<span id="2862">2862</span>
-<span id="2863">2863</span>
-<span id="2864">2864</span>
-<span id="2865">2865</span>
-<span id="2866">2866</span>
-<span id="2867">2867</span>
-<span id="2868">2868</span>
-<span id="2869">2869</span>
-<span id="2870">2870</span>
-<span id="2871">2871</span>
-<span id="2872">2872</span>
-<span id="2873">2873</span>
-<span id="2874">2874</span>
-<span id="2875">2875</span>
-<span id="2876">2876</span>
-<span id="2877">2877</span>
-<span id="2878">2878</span>
-<span id="2879">2879</span>
-<span id="2880">2880</span>
-<span id="2881">2881</span>
-<span id="2882">2882</span>
-<span id="2883">2883</span>
-<span id="2884">2884</span>
-<span id="2885">2885</span>
-<span id="2886">2886</span>
-<span id="2887">2887</span>
-<span id="2888">2888</span>
-<span id="2889">2889</span>
-<span id="2890">2890</span>
-<span id="2891">2891</span>
-<span id="2892">2892</span>
-<span id="2893">2893</span>
-<span id="2894">2894</span>
-<span id="2895">2895</span>
-<span id="2896">2896</span>
-<span id="2897">2897</span>
-<span id="2898">2898</span>
-<span id="2899">2899</span>
-<span id="2900">2900</span>
-<span id="2901">2901</span>
-<span id="2902">2902</span>
-<span id="2903">2903</span>
-<span id="2904">2904</span>
-<span id="2905">2905</span>
-<span id="2906">2906</span>
-<span id="2907">2907</span>
-<span id="2908">2908</span>
-<span id="2909">2909</span>
-<span id="2910">2910</span>
-<span id="2911">2911</span>
-<span id="2912">2912</span>
-<span id="2913">2913</span>
-<span id="2914">2914</span>
-<span id="2915">2915</span>
-<span id="2916">2916</span>
-<span id="2917">2917</span>
-<span id="2918">2918</span>
-<span id="2919">2919</span>
-<span id="2920">2920</span>
-<span id="2921">2921</span>
-<span id="2922">2922</span>
-<span id="2923">2923</span>
-<span id="2924">2924</span>
-<span id="2925">2925</span>
-<span id="2926">2926</span>
-<span id="2927">2927</span>
-<span id="2928">2928</span>
-<span id="2929">2929</span>
-<span id="2930">2930</span>
-<span id="2931">2931</span>
-<span id="2932">2932</span>
-<span id="2933">2933</span>
-<span id="2934">2934</span>
-<span id="2935">2935</span>
-<span id="2936">2936</span>
-<span id="2937">2937</span>
-<span id="2938">2938</span>
-<span id="2939">2939</span>
-<span id="2940">2940</span>
-<span id="2941">2941</span>
-<span id="2942">2942</span>
-<span id="2943">2943</span>
-<span id="2944">2944</span>
-<span id="2945">2945</span>
-<span id="2946">2946</span>
-<span id="2947">2947</span>
-<span id="2948">2948</span>
-<span id="2949">2949</span>
-<span id="2950">2950</span>
-<span id="2951">2951</span>
-<span id="2952">2952</span>
-<span id="2953">2953</span>
-<span id="2954">2954</span>
-<span id="2955">2955</span>
-<span id="2956">2956</span>
-<span id="2957">2957</span>
-<span id="2958">2958</span>
-<span id="2959">2959</span>
-<span id="2960">2960</span>
-<span id="2961">2961</span>
-<span id="2962">2962</span>
-<span id="2963">2963</span>
-<span id="2964">2964</span>
-<span id="2965">2965</span>
-<span id="2966">2966</span>
-<span id="2967">2967</span>
-<span id="2968">2968</span>
-<span id="2969">2969</span>
-<span id="2970">2970</span>
-<span id="2971">2971</span>
-<span id="2972">2972</span>
-<span id="2973">2973</span>
-<span id="2974">2974</span>
-<span id="2975">2975</span>
-<span id="2976">2976</span>
-<span id="2977">2977</span>
-<span id="2978">2978</span>
-<span id="2979">2979</span>
-<span id="2980">2980</span>
-<span id="2981">2981</span>
-<span id="2982">2982</span>
-<span id="2983">2983</span>
-<span id="2984">2984</span>
-<span id="2985">2985</span>
-<span id="2986">2986</span>
-<span id="2987">2987</span>
-<span id="2988">2988</span>
-<span id="2989">2989</span>
-<span id="2990">2990</span>
-<span id="2991">2991</span>
-<span id="2992">2992</span>
-<span id="2993">2993</span>
-<span id="2994">2994</span>
-<span id="2995">2995</span>
-<span id="2996">2996</span>
-<span id="2997">2997</span>
-<span id="2998">2998</span>
-<span id="2999">2999</span>
-<span id="3000">3000</span>
-<span id="3001">3001</span>
-<span id="3002">3002</span>
-<span id="3003">3003</span>
-<span id="3004">3004</span>
-<span id="3005">3005</span>
-<span id="3006">3006</span>
-<span id="3007">3007</span>
-<span id="3008">3008</span>
-<span id="3009">3009</span>
-<span id="3010">3010</span>
-<span id="3011">3011</span>
-<span id="3012">3012</span>
-<span id="3013">3013</span>
-<span id="3014">3014</span>
-<span id="3015">3015</span>
-<span id="3016">3016</span>
-<span id="3017">3017</span>
-<span id="3018">3018</span>
-<span id="3019">3019</span>
-<span id="3020">3020</span>
-<span id="3021">3021</span>
-<span id="3022">3022</span>
-<span id="3023">3023</span>
-<span id="3024">3024</span>
-<span id="3025">3025</span>
-<span id="3026">3026</span>
-<span id="3027">3027</span>
-<span id="3028">3028</span>
-<span id="3029">3029</span>
-<span id="3030">3030</span>
-<span id="3031">3031</span>
-<span id="3032">3032</span>
-<span id="3033">3033</span>
-<span id="3034">3034</span>
-<span id="3035">3035</span>
-<span id="3036">3036</span>
-<span id="3037">3037</span>
-<span id="3038">3038</span>
-<span id="3039">3039</span>
-<span id="3040">3040</span>
-<span id="3041">3041</span>
-<span id="3042">3042</span>
-<span id="3043">3043</span>
-<span id="3044">3044</span>
-<span id="3045">3045</span>
-<span id="3046">3046</span>
-<span id="3047">3047</span>
-<span id="3048">3048</span>
-<span id="3049">3049</span>
-<span id="3050">3050</span>
-<span id="3051">3051</span>
-<span id="3052">3052</span>
-<span id="3053">3053</span>
-<span id="3054">3054</span>
-<span id="3055">3055</span>
-<span id="3056">3056</span>
-<span id="3057">3057</span>
-<span id="3058">3058</span>
-<span id="3059">3059</span>
-<span id="3060">3060</span>
-<span id="3061">3061</span>
-<span id="3062">3062</span>
-<span id="3063">3063</span>
-<span id="3064">3064</span>
-<span id="3065">3065</span>
-<span id="3066">3066</span>
-<span id="3067">3067</span>
-<span id="3068">3068</span>
-<span id="3069">3069</span>
-<span id="3070">3070</span>
-<span id="3071">3071</span>
-<span id="3072">3072</span>
-<span id="3073">3073</span>
-<span id="3074">3074</span>
-<span id="3075">3075</span>
-<span id="3076">3076</span>
-<span id="3077">3077</span>
-<span id="3078">3078</span>
-<span id="3079">3079</span>
-<span id="3080">3080</span>
-<span id="3081">3081</span>
-<span id="3082">3082</span>
-<span id="3083">3083</span>
-<span id="3084">3084</span>
-<span id="3085">3085</span>
-<span id="3086">3086</span>
-<span id="3087">3087</span>
-<span id="3088">3088</span>
-<span id="3089">3089</span>
-<span id="3090">3090</span>
-<span id="3091">3091</span>
-<span id="3092">3092</span>
-<span id="3093">3093</span>
-<span id="3094">3094</span>
-<span id="3095">3095</span>
-<span id="3096">3096</span>
-<span id="3097">3097</span>
-<span id="3098">3098</span>
-<span id="3099">3099</span>
-<span id="3100">3100</span>
-<span id="3101">3101</span>
-<span id="3102">3102</span>
-<span id="3103">3103</span>
-<span id="3104">3104</span>
-<span id="3105">3105</span>
-<span id="3106">3106</span>
-<span id="3107">3107</span>
-<span id="3108">3108</span>
-<span id="3109">3109</span>
-<span id="3110">3110</span>
-<span id="3111">3111</span>
-<span id="3112">3112</span>
-<span id="3113">3113</span>
-<span id="3114">3114</span>
-<span id="3115">3115</span>
-<span id="3116">3116</span>
-<span id="3117">3117</span>
-<span id="3118">3118</span>
-<span id="3119">3119</span>
-<span id="3120">3120</span>
-<span id="3121">3121</span>
-<span id="3122">3122</span>
-<span id="3123">3123</span>
-<span id="3124">3124</span>
-<span id="3125">3125</span>
-<span id="3126">3126</span>
-<span id="3127">3127</span>
-<span id="3128">3128</span>
-<span id="3129">3129</span>
-<span id="3130">3130</span>
-<span id="3131">3131</span>
-<span id="3132">3132</span>
-<span id="3133">3133</span>
-<span id="3134">3134</span>
-<span id="3135">3135</span>
-<span id="3136">3136</span>
-<span id="3137">3137</span>
-<span id="3138">3138</span>
-<span id="3139">3139</span>
-<span id="3140">3140</span>
-<span id="3141">3141</span>
-<span id="3142">3142</span>
-<span id="3143">3143</span>
-<span id="3144">3144</span>
-<span id="3145">3145</span>
-<span id="3146">3146</span>
-<span id="3147">3147</span>
-<span id="3148">3148</span>
-<span id="3149">3149</span>
-<span id="3150">3150</span>
-<span id="3151">3151</span>
-<span id="3152">3152</span>
-<span id="3153">3153</span>
-<span id="3154">3154</span>
-<span id="3155">3155</span>
-<span id="3156">3156</span>
-<span id="3157">3157</span>
-<span id="3158">3158</span>
-<span id="3159">3159</span>
-<span id="3160">3160</span>
-<span id="3161">3161</span>
-<span id="3162">3162</span>
-<span id="3163">3163</span>
-<span id="3164">3164</span>
-<span id="3165">3165</span>
-<span id="3166">3166</span>
-<span id="3167">3167</span>
-<span id="3168">3168</span>
-<span id="3169">3169</span>
-<span id="3170">3170</span>
-<span id="3171">3171</span>
-<span id="3172">3172</span>
-<span id="3173">3173</span>
-<span id="3174">3174</span>
-<span id="3175">3175</span>
-<span id="3176">3176</span>
-<span id="3177">3177</span>
-<span id="3178">3178</span>
-<span id="3179">3179</span>
-<span id="3180">3180</span>
-<span id="3181">3181</span>
-<span id="3182">3182</span>
-<span id="3183">3183</span>
-<span id="3184">3184</span>
-<span id="3185">3185</span>
-<span id="3186">3186</span>
-<span id="3187">3187</span>
-<span id="3188">3188</span>
-<span id="3189">3189</span>
-<span id="3190">3190</span>
-<span id="3191">3191</span>
-<span id="3192">3192</span>
-<span id="3193">3193</span>
-<span id="3194">3194</span>
-<span id="3195">3195</span>
-<span id="3196">3196</span>
-<span id="3197">3197</span>
-<span id="3198">3198</span>
-<span id="3199">3199</span>
-<span id="3200">3200</span>
-<span id="3201">3201</span>
-<span id="3202">3202</span>
-<span id="3203">3203</span>
-<span id="3204">3204</span>
-<span id="3205">3205</span>
-<span id="3206">3206</span>
-<span id="3207">3207</span>
-<span id="3208">3208</span>
-<span id="3209">3209</span>
-<span id="3210">3210</span>
-<span id="3211">3211</span>
-<span id="3212">3212</span>
-<span id="3213">3213</span>
-<span id="3214">3214</span>
-<span id="3215">3215</span>
-<span id="3216">3216</span>
-<span id="3217">3217</span>
-<span id="3218">3218</span>
-<span id="3219">3219</span>
-<span id="3220">3220</span>
-<span id="3221">3221</span>
-<span id="3222">3222</span>
-<span id="3223">3223</span>
-<span id="3224">3224</span>
-<span id="3225">3225</span>
-<span id="3226">3226</span>
-<span id="3227">3227</span>
-<span id="3228">3228</span>
-<span id="3229">3229</span>
-<span id="3230">3230</span>
-<span id="3231">3231</span>
-<span id="3232">3232</span>
-<span id="3233">3233</span>
-<span id="3234">3234</span>
-<span id="3235">3235</span>
-<span id="3236">3236</span>
-<span id="3237">3237</span>
-<span id="3238">3238</span>
-<span id="3239">3239</span>
-<span id="3240">3240</span>
-<span id="3241">3241</span>
-<span id="3242">3242</span>
-<span id="3243">3243</span>
-<span id="3244">3244</span>
-<span id="3245">3245</span>
-<span id="3246">3246</span>
-<span id="3247">3247</span>
-<span id="3248">3248</span>
-<span id="3249">3249</span>
-<span id="3250">3250</span>
-<span id="3251">3251</span>
-<span id="3252">3252</span>
-<span id="3253">3253</span>
-<span id="3254">3254</span>
-<span id="3255">3255</span>
-<span id="3256">3256</span>
-<span id="3257">3257</span>
-<span id="3258">3258</span>
-<span id="3259">3259</span>
-<span id="3260">3260</span>
-<span id="3261">3261</span>
-<span id="3262">3262</span>
-<span id="3263">3263</span>
-<span id="3264">3264</span>
-<span id="3265">3265</span>
-<span id="3266">3266</span>
-<span id="3267">3267</span>
-<span id="3268">3268</span>
-<span id="3269">3269</span>
-<span id="3270">3270</span>
-<span id="3271">3271</span>
-<span id="3272">3272</span>
-<span id="3273">3273</span>
-<span id="3274">3274</span>
-<span id="3275">3275</span>
-<span id="3276">3276</span>
-<span id="3277">3277</span>
-<span id="3278">3278</span>
-<span id="3279">3279</span>
-<span id="3280">3280</span>
-<span id="3281">3281</span>
-<span id="3282">3282</span>
-<span id="3283">3283</span>
-<span id="3284">3284</span>
-<span id="3285">3285</span>
-<span id="3286">3286</span>
-<span id="3287">3287</span>
-<span id="3288">3288</span>
-<span id="3289">3289</span>
-<span id="3290">3290</span>
-<span id="3291">3291</span>
-<span id="3292">3292</span>
-<span id="3293">3293</span>
-<span id="3294">3294</span>
-<span id="3295">3295</span>
-<span id="3296">3296</span>
-<span id="3297">3297</span>
-<span id="3298">3298</span>
-<span id="3299">3299</span>
-<span id="3300">3300</span>
-<span id="3301">3301</span>
-<span id="3302">3302</span>
-<span id="3303">3303</span>
-<span id="3304">3304</span>
-<span id="3305">3305</span>
-<span id="3306">3306</span>
-<span id="3307">3307</span>
-<span id="3308">3308</span>
-<span id="3309">3309</span>
-<span id="3310">3310</span>
-<span id="3311">3311</span>
-<span id="3312">3312</span>
-<span id="3313">3313</span>
-<span id="3314">3314</span>
-<span id="3315">3315</span>
-<span id="3316">3316</span>
-<span id="3317">3317</span>
-<span id="3318">3318</span>
-<span id="3319">3319</span>
-<span id="3320">3320</span>
-<span id="3321">3321</span>
-<span id="3322">3322</span>
-<span id="3323">3323</span>
-<span id="3324">3324</span>
-<span id="3325">3325</span>
-<span id="3326">3326</span>
-<span id="3327">3327</span>
-<span id="3328">3328</span>
-<span id="3329">3329</span>
-<span id="3330">3330</span>
-<span id="3331">3331</span>
-<span id="3332">3332</span>
-<span id="3333">3333</span>
-<span id="3334">3334</span>
-<span id="3335">3335</span>
-<span id="3336">3336</span>
-<span id="3337">3337</span>
-<span id="3338">3338</span>
-<span id="3339">3339</span>
-<span id="3340">3340</span>
-<span id="3341">3341</span>
-<span id="3342">3342</span>
-<span id="3343">3343</span>
-<span id="3344">3344</span>
-<span id="3345">3345</span>
-<span id="3346">3346</span>
-<span id="3347">3347</span>
-<span id="3348">3348</span>
-<span id="3349">3349</span>
-<span id="3350">3350</span>
-<span id="3351">3351</span>
-<span id="3352">3352</span>
-<span id="3353">3353</span>
-<span id="3354">3354</span>
-<span id="3355">3355</span>
-<span id="3356">3356</span>
-<span id="3357">3357</span>
-<span id="3358">3358</span>
-<span id="3359">3359</span>
-<span id="3360">3360</span>
-<span id="3361">3361</span>
-<span id="3362">3362</span>
-<span id="3363">3363</span>
-<span id="3364">3364</span>
-<span id="3365">3365</span>
-<span id="3366">3366</span>
-<span id="3367">3367</span>
-<span id="3368">3368</span>
-<span id="3369">3369</span>
-<span id="3370">3370</span>
-<span id="3371">3371</span>
-<span id="3372">3372</span>
-<span id="3373">3373</span>
-<span id="3374">3374</span>
-<span id="3375">3375</span>
-<span id="3376">3376</span>
-<span id="3377">3377</span>
-<span id="3378">3378</span>
-<span id="3379">3379</span>
-<span id="3380">3380</span>
-<span id="3381">3381</span>
-<span id="3382">3382</span>
-<span id="3383">3383</span>
-<span id="3384">3384</span>
-<span id="3385">3385</span>
-<span id="3386">3386</span>
-<span id="3387">3387</span>
-<span id="3388">3388</span>
-<span id="3389">3389</span>
-<span id="3390">3390</span>
-<span id="3391">3391</span>
-<span id="3392">3392</span>
-<span id="3393">3393</span>
-<span id="3394">3394</span>
-<span id="3395">3395</span>
-<span id="3396">3396</span>
-<span id="3397">3397</span>
-<span id="3398">3398</span>
-<span id="3399">3399</span>
-<span id="3400">3400</span>
-<span id="3401">3401</span>
-<span id="3402">3402</span>
-<span id="3403">3403</span>
-<span id="3404">3404</span>
-<span id="3405">3405</span>
-<span id="3406">3406</span>
-<span id="3407">3407</span>
-<span id="3408">3408</span>
-<span id="3409">3409</span>
-<span id="3410">3410</span>
-<span id="3411">3411</span>
-<span id="3412">3412</span>
-<span id="3413">3413</span>
-<span id="3414">3414</span>
-<span id="3415">3415</span>
-<span id="3416">3416</span>
-<span id="3417">3417</span>
-<span id="3418">3418</span>
-<span id="3419">3419</span>
-<span id="3420">3420</span>
-<span id="3421">3421</span>
-<span id="3422">3422</span>
-<span id="3423">3423</span>
-<span id="3424">3424</span>
-<span id="3425">3425</span>
-<span id="3426">3426</span>
-<span id="3427">3427</span>
-<span id="3428">3428</span>
-<span id="3429">3429</span>
-<span id="3430">3430</span>
-<span id="3431">3431</span>
-<span id="3432">3432</span>
-<span id="3433">3433</span>
-<span id="3434">3434</span>
-<span id="3435">3435</span>
-<span id="3436">3436</span>
-<span id="3437">3437</span>
-<span id="3438">3438</span>
-<span id="3439">3439</span>
-<span id="3440">3440</span>
-<span id="3441">3441</span>
-<span id="3442">3442</span>
-<span id="3443">3443</span>
-<span id="3444">3444</span>
-<span id="3445">3445</span>
-<span id="3446">3446</span>
-<span id="3447">3447</span>
-<span id="3448">3448</span>
-<span id="3449">3449</span>
-<span id="3450">3450</span>
-<span id="3451">3451</span>
-<span id="3452">3452</span>
-<span id="3453">3453</span>
-<span id="3454">3454</span>
-<span id="3455">3455</span>
-<span id="3456">3456</span>
-<span id="3457">3457</span>
-<span id="3458">3458</span>
-<span id="3459">3459</span>
-<span id="3460">3460</span>
-<span id="3461">3461</span>
-<span id="3462">3462</span>
-<span id="3463">3463</span>
-<span id="3464">3464</span>
-<span id="3465">3465</span>
-<span id="3466">3466</span>
-<span id="3467">3467</span>
-<span id="3468">3468</span>
-<span id="3469">3469</span>
-<span id="3470">3470</span>
-<span id="3471">3471</span>
-<span id="3472">3472</span>
-<span id="3473">3473</span>
-<span id="3474">3474</span>
-<span id="3475">3475</span>
-<span id="3476">3476</span>
-<span id="3477">3477</span>
-<span id="3478">3478</span>
-<span id="3479">3479</span>
-<span id="3480">3480</span>
-<span id="3481">3481</span>
-<span id="3482">3482</span>
-<span id="3483">3483</span>
-<span id="3484">3484</span>
-<span id="3485">3485</span>
-<span id="3486">3486</span>
-<span id="3487">3487</span>
-<span id="3488">3488</span>
-<span id="3489">3489</span>
-<span id="3490">3490</span>
-<span id="3491">3491</span>
-<span id="3492">3492</span>
-<span id="3493">3493</span>
-<span id="3494">3494</span>
-<span id="3495">3495</span>
-<span id="3496">3496</span>
-<span id="3497">3497</span>
-<span id="3498">3498</span>
-<span id="3499">3499</span>
-<span id="3500">3500</span>
-<span id="3501">3501</span>
-<span id="3502">3502</span>
-<span id="3503">3503</span>
-<span id="3504">3504</span>
-<span id="3505">3505</span>
-<span id="3506">3506</span>
-<span id="3507">3507</span>
-<span id="3508">3508</span>
-<span id="3509">3509</span>
-<span id="3510">3510</span>
-<span id="3511">3511</span>
-<span id="3512">3512</span>
-<span id="3513">3513</span>
-<span id="3514">3514</span>
-<span id="3515">3515</span>
-<span id="3516">3516</span>
-<span id="3517">3517</span>
-<span id="3518">3518</span>
-<span id="3519">3519</span>
-<span id="3520">3520</span>
-<span id="3521">3521</span>
-<span id="3522">3522</span>
-<span id="3523">3523</span>
-<span id="3524">3524</span>
-<span id="3525">3525</span>
-<span id="3526">3526</span>
-<span id="3527">3527</span>
-<span id="3528">3528</span>
-<span id="3529">3529</span>
-<span id="3530">3530</span>
-<span id="3531">3531</span>
-<span id="3532">3532</span>
-<span id="3533">3533</span>
-<span id="3534">3534</span>
-<span id="3535">3535</span>
-<span id="3536">3536</span>
-<span id="3537">3537</span>
-<span id="3538">3538</span>
-<span id="3539">3539</span>
-<span id="3540">3540</span>
-<span id="3541">3541</span>
-<span id="3542">3542</span>
-<span id="3543">3543</span>
-<span id="3544">3544</span>
-<span id="3545">3545</span>
-<span id="3546">3546</span>
-<span id="3547">3547</span>
-<span id="3548">3548</span>
-<span id="3549">3549</span>
-<span id="3550">3550</span>
-<span id="3551">3551</span>
-<span id="3552">3552</span>
-<span id="3553">3553</span>
-<span id="3554">3554</span>
-<span id="3555">3555</span>
-<span id="3556">3556</span>
-<span id="3557">3557</span>
-<span id="3558">3558</span>
-<span id="3559">3559</span>
-<span id="3560">3560</span>
-<span id="3561">3561</span>
-<span id="3562">3562</span>
-<span id="3563">3563</span>
-<span id="3564">3564</span>
-<span id="3565">3565</span>
-<span id="3566">3566</span>
-<span id="3567">3567</span>
-<span id="3568">3568</span>
-<span id="3569">3569</span>
-<span id="3570">3570</span>
-<span id="3571">3571</span>
-<span id="3572">3572</span>
-<span id="3573">3573</span>
-<span id="3574">3574</span>
-<span id="3575">3575</span>
-<span id="3576">3576</span>
-<span id="3577">3577</span>
-<span id="3578">3578</span>
-<span id="3579">3579</span>
-<span id="3580">3580</span>
-<span id="3581">3581</span>
-<span id="3582">3582</span>
-<span id="3583">3583</span>
-<span id="3584">3584</span>
-<span id="3585">3585</span>
-<span id="3586">3586</span>
-<span id="3587">3587</span>
-<span id="3588">3588</span>
-<span id="3589">3589</span>
-<span id="3590">3590</span>
-<span id="3591">3591</span>
-<span id="3592">3592</span>
-<span id="3593">3593</span>
-<span id="3594">3594</span>
-<span id="3595">3595</span>
-<span id="3596">3596</span>
-<span id="3597">3597</span>
-<span id="3598">3598</span>
-<span id="3599">3599</span>
-<span id="3600">3600</span>
-<span id="3601">3601</span>
-<span id="3602">3602</span>
-<span id="3603">3603</span>
-<span id="3604">3604</span>
-<span id="3605">3605</span>
-<span id="3606">3606</span>
-<span id="3607">3607</span>
-<span id="3608">3608</span>
-<span id="3609">3609</span>
-<span id="3610">3610</span>
-<span id="3611">3611</span>
-<span id="3612">3612</span>
-<span id="3613">3613</span>
-<span id="3614">3614</span>
-<span id="3615">3615</span>
-<span id="3616">3616</span>
-<span id="3617">3617</span>
-<span id="3618">3618</span>
-<span id="3619">3619</span>
-<span id="3620">3620</span>
-<span id="3621">3621</span>
-<span id="3622">3622</span>
-<span id="3623">3623</span>
-<span id="3624">3624</span>
-<span id="3625">3625</span>
-<span id="3626">3626</span>
-<span id="3627">3627</span>
-<span id="3628">3628</span>
-<span id="3629">3629</span>
-<span id="3630">3630</span>
-<span id="3631">3631</span>
-<span id="3632">3632</span>
-<span id="3633">3633</span>
-<span id="3634">3634</span>
-<span id="3635">3635</span>
-<span id="3636">3636</span>
-<span id="3637">3637</span>
-<span id="3638">3638</span>
-<span id="3639">3639</span>
-<span id="3640">3640</span>
-<span id="3641">3641</span>
-<span id="3642">3642</span>
-<span id="3643">3643</span>
-<span id="3644">3644</span>
-<span id="3645">3645</span>
-<span id="3646">3646</span>
-<span id="3647">3647</span>
-<span id="3648">3648</span>
-<span id="3649">3649</span>
-<span id="3650">3650</span>
-<span id="3651">3651</span>
-<span id="3652">3652</span>
-<span id="3653">3653</span>
-<span id="3654">3654</span>
-<span id="3655">3655</span>
-<span id="3656">3656</span>
-<span id="3657">3657</span>
-<span id="3658">3658</span>
-<span id="3659">3659</span>
-<span id="3660">3660</span>
-<span id="3661">3661</span>
-<span id="3662">3662</span>
-<span id="3663">3663</span>
-<span id="3664">3664</span>
-<span id="3665">3665</span>
-<span id="3666">3666</span>
-<span id="3667">3667</span>
-<span id="3668">3668</span>
-<span id="3669">3669</span>
-<span id="3670">3670</span>
-<span id="3671">3671</span>
-<span id="3672">3672</span>
-<span id="3673">3673</span>
-<span id="3674">3674</span>
-<span id="3675">3675</span>
-<span id="3676">3676</span>
-<span id="3677">3677</span>
-<span id="3678">3678</span>
-<span id="3679">3679</span>
-<span id="3680">3680</span>
-<span id="3681">3681</span>
-<span id="3682">3682</span>
-<span id="3683">3683</span>
-<span id="3684">3684</span>
-<span id="3685">3685</span>
-<span id="3686">3686</span>
-<span id="3687">3687</span>
-<span id="3688">3688</span>
-<span id="3689">3689</span>
-<span id="3690">3690</span>
-<span id="3691">3691</span>
-<span id="3692">3692</span>
-<span id="3693">3693</span>
-<span id="3694">3694</span>
-<span id="3695">3695</span>
-<span id="3696">3696</span>
-<span id="3697">3697</span>
-<span id="3698">3698</span>
-<span id="3699">3699</span>
-<span id="3700">3700</span>
-<span id="3701">3701</span>
-<span id="3702">3702</span>
-<span id="3703">3703</span>
-<span id="3704">3704</span>
-<span id="3705">3705</span>
-<span id="3706">3706</span>
-<span id="3707">3707</span>
-<span id="3708">3708</span>
-<span id="3709">3709</span>
-<span id="3710">3710</span>
-<span id="3711">3711</span>
-<span id="3712">3712</span>
-<span id="3713">3713</span>
-<span id="3714">3714</span>
-<span id="3715">3715</span>
-<span id="3716">3716</span>
-<span id="3717">3717</span>
-<span id="3718">3718</span>
-<span id="3719">3719</span>
-<span id="3720">3720</span>
-<span id="3721">3721</span>
-<span id="3722">3722</span>
-<span id="3723">3723</span>
-<span id="3724">3724</span>
-<span id="3725">3725</span>
-<span id="3726">3726</span>
-<span id="3727">3727</span>
-<span id="3728">3728</span>
-<span id="3729">3729</span>
-<span id="3730">3730</span>
-<span id="3731">3731</span>
-<span id="3732">3732</span>
-<span id="3733">3733</span>
-<span id="3734">3734</span>
-<span id="3735">3735</span>
-<span id="3736">3736</span>
-<span id="3737">3737</span>
-<span id="3738">3738</span>
-<span id="3739">3739</span>
-<span id="3740">3740</span>
-<span id="3741">3741</span>
-<span id="3742">3742</span>
-<span id="3743">3743</span>
-<span id="3744">3744</span>
-<span id="3745">3745</span>
-<span id="3746">3746</span>
-<span id="3747">3747</span>
-<span id="3748">3748</span>
-<span id="3749">3749</span>
-<span id="3750">3750</span>
-<span id="3751">3751</span>
-<span id="3752">3752</span>
-<span id="3753">3753</span>
-<span id="3754">3754</span>
-<span id="3755">3755</span>
-<span id="3756">3756</span>
-<span id="3757">3757</span>
-<span id="3758">3758</span>
-<span id="3759">3759</span>
-<span id="3760">3760</span>
-<span id="3761">3761</span>
-<span id="3762">3762</span>
-<span id="3763">3763</span>
-<span id="3764">3764</span>
-<span id="3765">3765</span>
-<span id="3766">3766</span>
-<span id="3767">3767</span>
-<span id="3768">3768</span>
-<span id="3769">3769</span>
-<span id="3770">3770</span>
-<span id="3771">3771</span>
-<span id="3772">3772</span>
-<span id="3773">3773</span>
-<span id="3774">3774</span>
-<span id="3775">3775</span>
-<span id="3776">3776</span>
-<span id="3777">3777</span>
-<span id="3778">3778</span>
-<span id="3779">3779</span>
-<span id="3780">3780</span>
-<span id="3781">3781</span>
-<span id="3782">3782</span>
-<span id="3783">3783</span>
-<span id="3784">3784</span>
-<span id="3785">3785</span>
-<span id="3786">3786</span>
-<span id="3787">3787</span>
-<span id="3788">3788</span>
-<span id="3789">3789</span>
-<span id="3790">3790</span>
-<span id="3791">3791</span>
-<span id="3792">3792</span>
-<span id="3793">3793</span>
-<span id="3794">3794</span>
-<span id="3795">3795</span>
-<span id="3796">3796</span>
-<span id="3797">3797</span>
-<span id="3798">3798</span>
-<span id="3799">3799</span>
-<span id="3800">3800</span>
-<span id="3801">3801</span>
-<span id="3802">3802</span>
-<span id="3803">3803</span>
-<span id="3804">3804</span>
-<span id="3805">3805</span>
-<span id="3806">3806</span>
-<span id="3807">3807</span>
-<span id="3808">3808</span>
-<span id="3809">3809</span>
-<span id="3810">3810</span>
-<span id="3811">3811</span>
-<span id="3812">3812</span>
-<span id="3813">3813</span>
-<span id="3814">3814</span>
-<span id="3815">3815</span>
-<span id="3816">3816</span>
-<span id="3817">3817</span>
-<span id="3818">3818</span>
-<span id="3819">3819</span>
-<span id="3820">3820</span>
-<span id="3821">3821</span>
-<span id="3822">3822</span>
-<span id="3823">3823</span>
-<span id="3824">3824</span>
-<span id="3825">3825</span>
-<span id="3826">3826</span>
-<span id="3827">3827</span>
-<span id="3828">3828</span>
-<span id="3829">3829</span>
-<span id="3830">3830</span>
-<span id="3831">3831</span>
-<span id="3832">3832</span>
-<span id="3833">3833</span>
-<span id="3834">3834</span>
-<span id="3835">3835</span>
-<span id="3836">3836</span>
-<span id="3837">3837</span>
-<span id="3838">3838</span>
-<span id="3839">3839</span>
-<span id="3840">3840</span>
-<span id="3841">3841</span>
-<span id="3842">3842</span>
-<span id="3843">3843</span>
-<span id="3844">3844</span>
-<span id="3845">3845</span>
-<span id="3846">3846</span>
-<span id="3847">3847</span>
-<span id="3848">3848</span>
-<span id="3849">3849</span>
-<span id="3850">3850</span>
-<span id="3851">3851</span>
-<span id="3852">3852</span>
-<span id="3853">3853</span>
-<span id="3854">3854</span>
-<span id="3855">3855</span>
-<span id="3856">3856</span>
-<span id="3857">3857</span>
-<span id="3858">3858</span>
-<span id="3859">3859</span>
-<span id="3860">3860</span>
-<span id="3861">3861</span>
-<span id="3862">3862</span>
-<span id="3863">3863</span>
-<span id="3864">3864</span>
-<span id="3865">3865</span>
-<span id="3866">3866</span>
-<span id="3867">3867</span>
-<span id="3868">3868</span>
-<span id="3869">3869</span>
-<span id="3870">3870</span>
-<span id="3871">3871</span>
-<span id="3872">3872</span>
-<span id="3873">3873</span>
-<span id="3874">3874</span>
-<span id="3875">3875</span>
-<span id="3876">3876</span>
-<span id="3877">3877</span>
-<span id="3878">3878</span>
-<span id="3879">3879</span>
-<span id="3880">3880</span>
-<span id="3881">3881</span>
-<span id="3882">3882</span>
-<span id="3883">3883</span>
-<span id="3884">3884</span>
-<span id="3885">3885</span>
-<span id="3886">3886</span>
-<span id="3887">3887</span>
-<span id="3888">3888</span>
-<span id="3889">3889</span>
-<span id="3890">3890</span>
-<span id="3891">3891</span>
-<span id="3892">3892</span>
-<span id="3893">3893</span>
-<span id="3894">3894</span>
-<span id="3895">3895</span>
-<span id="3896">3896</span>
-<span id="3897">3897</span>
-<span id="3898">3898</span>
-<span id="3899">3899</span>
-<span id="3900">3900</span>
-<span id="3901">3901</span>
-<span id="3902">3902</span>
-<span id="3903">3903</span>
-<span id="3904">3904</span>
-<span id="3905">3905</span>
-<span id="3906">3906</span>
-<span id="3907">3907</span>
-<span id="3908">3908</span>
-<span id="3909">3909</span>
-<span id="3910">3910</span>
-<span id="3911">3911</span>
-<span id="3912">3912</span>
-<span id="3913">3913</span>
-<span id="3914">3914</span>
-<span id="3915">3915</span>
-<span id="3916">3916</span>
-<span id="3917">3917</span>
-<span id="3918">3918</span>
-<span id="3919">3919</span>
-<span id="3920">3920</span>
-<span id="3921">3921</span>
-<span id="3922">3922</span>
-<span id="3923">3923</span>
-<span id="3924">3924</span>
-<span id="3925">3925</span>
-<span id="3926">3926</span>
-<span id="3927">3927</span>
-<span id="3928">3928</span>
-<span id="3929">3929</span>
-<span id="3930">3930</span>
-<span id="3931">3931</span>
-<span id="3932">3932</span>
-<span id="3933">3933</span>
-<span id="3934">3934</span>
-<span id="3935">3935</span>
-<span id="3936">3936</span>
-<span id="3937">3937</span>
-<span id="3938">3938</span>
-<span id="3939">3939</span>
-<span id="3940">3940</span>
-<span id="3941">3941</span>
-<span id="3942">3942</span>
-<span id="3943">3943</span>
-<span id="3944">3944</span>
-<span id="3945">3945</span>
-<span id="3946">3946</span>
-<span id="3947">3947</span>
-<span id="3948">3948</span>
-<span id="3949">3949</span>
-<span id="3950">3950</span>
-<span id="3951">3951</span>
-<span id="3952">3952</span>
-<span id="3953">3953</span>
-<span id="3954">3954</span>
-<span id="3955">3955</span>
-<span id="3956">3956</span>
-<span id="3957">3957</span>
-<span id="3958">3958</span>
-<span id="3959">3959</span>
-<span id="3960">3960</span>
-<span id="3961">3961</span>
-<span id="3962">3962</span>
-<span id="3963">3963</span>
-<span id="3964">3964</span>
-<span id="3965">3965</span>
-<span id="3966">3966</span>
-<span id="3967">3967</span>
-<span id="3968">3968</span>
-<span id="3969">3969</span>
-<span id="3970">3970</span>
-<span id="3971">3971</span>
-<span id="3972">3972</span>
-<span id="3973">3973</span>
-<span id="3974">3974</span>
-<span id="3975">3975</span>
-<span id="3976">3976</span>
-<span id="3977">3977</span>
-<span id="3978">3978</span>
-<span id="3979">3979</span>
-<span id="3980">3980</span>
-<span id="3981">3981</span>
-<span id="3982">3982</span>
-<span id="3983">3983</span>
-<span id="3984">3984</span>
-<span id="3985">3985</span>
-<span id="3986">3986</span>
-<span id="3987">3987</span>
-<span id="3988">3988</span>
-<span id="3989">3989</span>
-<span id="3990">3990</span>
-<span id="3991">3991</span>
-<span id="3992">3992</span>
-<span id="3993">3993</span>
-<span id="3994">3994</span>
-<span id="3995">3995</span>
-<span id="3996">3996</span>
-<span id="3997">3997</span>
-<span id="3998">3998</span>
-<span id="3999">3999</span>
-<span id="4000">4000</span>
-<span id="4001">4001</span>
-<span id="4002">4002</span>
-<span id="4003">4003</span>
-<span id="4004">4004</span>
-<span id="4005">4005</span>
-<span id="4006">4006</span>
-<span id="4007">4007</span>
-<span id="4008">4008</span>
-<span id="4009">4009</span>
-<span id="4010">4010</span>
-<span id="4011">4011</span>
-<span id="4012">4012</span>
-<span id="4013">4013</span>
-<span id="4014">4014</span>
-<span id="4015">4015</span>
-<span id="4016">4016</span>
-<span id="4017">4017</span>
-<span id="4018">4018</span>
-<span id="4019">4019</span>
-<span id="4020">4020</span>
-<span id="4021">4021</span>
-<span id="4022">4022</span>
-<span id="4023">4023</span>
-<span id="4024">4024</span>
-<span id="4025">4025</span>
-<span id="4026">4026</span>
-<span id="4027">4027</span>
-<span id="4028">4028</span>
-<span id="4029">4029</span>
-<span id="4030">4030</span>
-<span id="4031">4031</span>
-<span id="4032">4032</span>
-<span id="4033">4033</span>
-<span id="4034">4034</span>
-<span id="4035">4035</span>
-<span id="4036">4036</span>
-<span id="4037">4037</span>
-<span id="4038">4038</span>
-<span id="4039">4039</span>
-<span id="4040">4040</span>
-<span id="4041">4041</span>
-<span id="4042">4042</span>
-<span id="4043">4043</span>
-<span id="4044">4044</span>
-<span id="4045">4045</span>
-<span id="4046">4046</span>
-<span id="4047">4047</span>
-<span id="4048">4048</span>
-<span id="4049">4049</span>
-<span id="4050">4050</span>
-<span id="4051">4051</span>
-<span id="4052">4052</span>
-<span id="4053">4053</span>
-<span id="4054">4054</span>
-<span id="4055">4055</span>
-<span id="4056">4056</span>
-<span id="4057">4057</span>
-<span id="4058">4058</span>
-<span id="4059">4059</span>
-<span id="4060">4060</span>
-<span id="4061">4061</span>
-<span id="4062">4062</span>
-<span id="4063">4063</span>
-<span id="4064">4064</span>
-<span id="4065">4065</span>
-<span id="4066">4066</span>
-<span id="4067">4067</span>
-<span id="4068">4068</span>
-<span id="4069">4069</span>
-<span id="4070">4070</span>
-<span id="4071">4071</span>
-<span id="4072">4072</span>
-<span id="4073">4073</span>
-<span id="4074">4074</span>
-<span id="4075">4075</span>
-<span id="4076">4076</span>
-<span id="4077">4077</span>
-<span id="4078">4078</span>
-<span id="4079">4079</span>
-<span id="4080">4080</span>
-<span id="4081">4081</span>
-<span id="4082">4082</span>
-<span id="4083">4083</span>
-<span id="4084">4084</span>
-<span id="4085">4085</span>
-<span id="4086">4086</span>
-<span id="4087">4087</span>
-<span id="4088">4088</span>
-<span id="4089">4089</span>
-<span id="4090">4090</span>
-<span id="4091">4091</span>
-<span id="4092">4092</span>
-<span id="4093">4093</span>
-<span id="4094">4094</span>
-<span id="4095">4095</span>
-<span id="4096">4096</span>
-<span id="4097">4097</span>
-<span id="4098">4098</span>
-<span id="4099">4099</span>
-<span id="4100">4100</span>
-<span id="4101">4101</span>
-<span id="4102">4102</span>
-<span id="4103">4103</span>
-<span id="4104">4104</span>
-<span id="4105">4105</span>
-<span id="4106">4106</span>
-<span id="4107">4107</span>
-<span id="4108">4108</span>
-<span id="4109">4109</span>
-<span id="4110">4110</span>
-<span id="4111">4111</span>
-<span id="4112">4112</span>
-<span id="4113">4113</span>
-<span id="4114">4114</span>
-<span id="4115">4115</span>
-<span id="4116">4116</span>
-<span id="4117">4117</span>
-<span id="4118">4118</span>
-<span id="4119">4119</span>
-<span id="4120">4120</span>
-<span id="4121">4121</span>
-<span id="4122">4122</span>
-<span id="4123">4123</span>
-<span id="4124">4124</span>
-<span id="4125">4125</span>
-<span id="4126">4126</span>
-<span id="4127">4127</span>
-<span id="4128">4128</span>
-<span id="4129">4129</span>
-<span id="4130">4130</span>
-<span id="4131">4131</span>
-<span id="4132">4132</span>
-<span id="4133">4133</span>
-<span id="4134">4134</span>
-<span id="4135">4135</span>
-<span id="4136">4136</span>
-<span id="4137">4137</span>
-<span id="4138">4138</span>
-<span id="4139">4139</span>
-<span id="4140">4140</span>
-<span id="4141">4141</span>
-<span id="4142">4142</span>
-<span id="4143">4143</span>
-<span id="4144">4144</span>
-<span id="4145">4145</span>
-<span id="4146">4146</span>
-<span id="4147">4147</span>
-<span id="4148">4148</span>
-<span id="4149">4149</span>
-<span id="4150">4150</span>
-<span id="4151">4151</span>
-<span id="4152">4152</span>
-<span id="4153">4153</span>
-<span id="4154">4154</span>
-<span id="4155">4155</span>
-<span id="4156">4156</span>
-<span id="4157">4157</span>
-<span id="4158">4158</span>
-<span id="4159">4159</span>
-<span id="4160">4160</span>
-<span id="4161">4161</span>
-<span id="4162">4162</span>
-<span id="4163">4163</span>
-<span id="4164">4164</span>
-<span id="4165">4165</span>
-<span id="4166">4166</span>
-<span id="4167">4167</span>
-<span id="4168">4168</span>
-<span id="4169">4169</span>
-<span id="4170">4170</span>
-<span id="4171">4171</span>
-<span id="4172">4172</span>
-<span id="4173">4173</span>
-<span id="4174">4174</span>
-<span id="4175">4175</span>
-<span id="4176">4176</span>
-<span id="4177">4177</span>
-<span id="4178">4178</span>
-<span id="4179">4179</span>
-<span id="4180">4180</span>
-<span id="4181">4181</span>
-<span id="4182">4182</span>
-<span id="4183">4183</span>
-<span id="4184">4184</span>
-<span id="4185">4185</span>
-<span id="4186">4186</span>
-<span id="4187">4187</span>
-<span id="4188">4188</span>
-<span id="4189">4189</span>
-<span id="4190">4190</span>
-<span id="4191">4191</span>
-<span id="4192">4192</span>
-<span id="4193">4193</span>
-<span id="4194">4194</span>
-<span id="4195">4195</span>
-<span id="4196">4196</span>
-<span id="4197">4197</span>
-<span id="4198">4198</span>
-<span id="4199">4199</span>
-<span id="4200">4200</span>
-<span id="4201">4201</span>
-<span id="4202">4202</span>
-<span id="4203">4203</span>
-<span id="4204">4204</span>
-<span id="4205">4205</span>
-<span id="4206">4206</span>
-<span id="4207">4207</span>
-<span id="4208">4208</span>
-<span id="4209">4209</span>
-<span id="4210">4210</span>
-<span id="4211">4211</span>
-<span id="4212">4212</span>
-<span id="4213">4213</span>
-<span id="4214">4214</span>
-<span id="4215">4215</span>
-<span id="4216">4216</span>
-<span id="4217">4217</span>
-<span id="4218">4218</span>
-<span id="4219">4219</span>
-<span id="4220">4220</span>
-<span id="4221">4221</span>
-<span id="4222">4222</span>
-<span id="4223">4223</span>
-<span id="4224">4224</span>
-<span id="4225">4225</span>
-<span id="4226">4226</span>
-<span id="4227">4227</span>
-<span id="4228">4228</span>
-<span id="4229">4229</span>
-<span id="4230">4230</span>
-<span id="4231">4231</span>
-<span id="4232">4232</span>
-<span id="4233">4233</span>
-<span id="4234">4234</span>
-<span id="4235">4235</span>
-<span id="4236">4236</span>
-<span id="4237">4237</span>
-<span id="4238">4238</span>
-<span id="4239">4239</span>
-<span id="4240">4240</span>
-<span id="4241">4241</span>
-<span id="4242">4242</span>
-<span id="4243">4243</span>
-<span id="4244">4244</span>
-<span id="4245">4245</span>
-<span id="4246">4246</span>
-<span id="4247">4247</span>
-<span id="4248">4248</span>
-<span id="4249">4249</span>
-<span id="4250">4250</span>
-<span id="4251">4251</span>
-<span id="4252">4252</span>
-<span id="4253">4253</span>
-<span id="4254">4254</span>
-<span id="4255">4255</span>
-<span id="4256">4256</span>
-<span id="4257">4257</span>
-<span id="4258">4258</span>
-<span id="4259">4259</span>
-<span id="4260">4260</span>
-<span id="4261">4261</span>
-<span id="4262">4262</span>
-<span id="4263">4263</span>
-<span id="4264">4264</span>
-<span id="4265">4265</span>
-<span id="4266">4266</span>
-<span id="4267">4267</span>
-<span id="4268">4268</span>
-<span id="4269">4269</span>
-<span id="4270">4270</span>
-<span id="4271">4271</span>
-<span id="4272">4272</span>
-<span id="4273">4273</span>
-<span id="4274">4274</span>
-<span id="4275">4275</span>
-<span id="4276">4276</span>
-<span id="4277">4277</span>
-<span id="4278">4278</span>
-<span id="4279">4279</span>
-<span id="4280">4280</span>
-<span id="4281">4281</span>
-<span id="4282">4282</span>
-<span id="4283">4283</span>
-<span id="4284">4284</span>
-<span id="4285">4285</span>
-<span id="4286">4286</span>
-<span id="4287">4287</span>
-<span id="4288">4288</span>
-<span id="4289">4289</span>
-<span id="4290">4290</span>
-<span id="4291">4291</span>
-<span id="4292">4292</span>
-<span id="4293">4293</span>
-<span id="4294">4294</span>
-<span id="4295">4295</span>
-<span id="4296">4296</span>
-<span id="4297">4297</span>
-<span id="4298">4298</span>
-<span id="4299">4299</span>
-<span id="4300">4300</span>
-<span id="4301">4301</span>
-<span id="4302">4302</span>
-<span id="4303">4303</span>
-<span id="4304">4304</span>
-<span id="4305">4305</span>
-<span id="4306">4306</span>
-<span id="4307">4307</span>
-<span id="4308">4308</span>
-<span id="4309">4309</span>
-<span id="4310">4310</span>
-<span id="4311">4311</span>
-<span id="4312">4312</span>
-<span id="4313">4313</span>
-<span id="4314">4314</span>
-<span id="4315">4315</span>
-<span id="4316">4316</span>
-<span id="4317">4317</span>
-<span id="4318">4318</span>
-<span id="4319">4319</span>
-<span id="4320">4320</span>
-<span id="4321">4321</span>
-<span id="4322">4322</span>
-<span id="4323">4323</span>
-<span id="4324">4324</span>
-<span id="4325">4325</span>
-<span id="4326">4326</span>
-<span id="4327">4327</span>
-<span id="4328">4328</span>
-<span id="4329">4329</span>
-<span id="4330">4330</span>
-<span id="4331">4331</span>
-<span id="4332">4332</span>
-<span id="4333">4333</span>
-<span id="4334">4334</span>
-<span id="4335">4335</span>
-<span id="4336">4336</span>
-<span id="4337">4337</span>
-<span id="4338">4338</span>
-<span id="4339">4339</span>
-<span id="4340">4340</span>
-<span id="4341">4341</span>
-<span id="4342">4342</span>
-<span id="4343">4343</span>
-<span id="4344">4344</span>
-<span id="4345">4345</span>
-<span id="4346">4346</span>
-<span id="4347">4347</span>
-<span id="4348">4348</span>
-<span id="4349">4349</span>
-<span id="4350">4350</span>
-<span id="4351">4351</span>
-<span id="4352">4352</span>
-<span id="4353">4353</span>
-<span id="4354">4354</span>
-<span id="4355">4355</span>
-<span id="4356">4356</span>
-<span id="4357">4357</span>
-<span id="4358">4358</span>
-<span id="4359">4359</span>
-<span id="4360">4360</span>
-<span id="4361">4361</span>
-<span id="4362">4362</span>
-<span id="4363">4363</span>
-<span id="4364">4364</span>
-<span id="4365">4365</span>
-<span id="4366">4366</span>
-<span id="4367">4367</span>
-<span id="4368">4368</span>
-<span id="4369">4369</span>
-<span id="4370">4370</span>
-<span id="4371">4371</span>
-<span id="4372">4372</span>
-<span id="4373">4373</span>
-<span id="4374">4374</span>
-<span id="4375">4375</span>
-<span id="4376">4376</span>
-<span id="4377">4377</span>
-<span id="4378">4378</span>
-<span id="4379">4379</span>
-<span id="4380">4380</span>
-<span id="4381">4381</span>
-<span id="4382">4382</span>
-<span id="4383">4383</span>
-<span id="4384">4384</span>
-<span id="4385">4385</span>
-<span id="4386">4386</span>
-<span id="4387">4387</span>
-<span id="4388">4388</span>
-<span id="4389">4389</span>
-<span id="4390">4390</span>
-<span id="4391">4391</span>
-<span id="4392">4392</span>
-<span id="4393">4393</span>
-<span id="4394">4394</span>
-<span id="4395">4395</span>
-<span id="4396">4396</span>
-<span id="4397">4397</span>
-<span id="4398">4398</span>
-<span id="4399">4399</span>
-<span id="4400">4400</span>
-<span id="4401">4401</span>
-<span id="4402">4402</span>
-<span id="4403">4403</span>
-<span id="4404">4404</span>
-<span id="4405">4405</span>
-<span id="4406">4406</span>
-<span id="4407">4407</span>
-<span id="4408">4408</span>
-<span id="4409">4409</span>
-<span id="4410">4410</span>
-<span id="4411">4411</span>
-<span id="4412">4412</span>
-<span id="4413">4413</span>
-<span id="4414">4414</span>
-<span id="4415">4415</span>
-<span id="4416">4416</span>
-<span id="4417">4417</span>
-<span id="4418">4418</span>
-<span id="4419">4419</span>
-<span id="4420">4420</span>
-<span id="4421">4421</span>
-<span id="4422">4422</span>
-<span id="4423">4423</span>
-<span id="4424">4424</span>
-<span id="4425">4425</span>
-<span id="4426">4426</span>
-<span id="4427">4427</span>
-<span id="4428">4428</span>
-<span id="4429">4429</span>
-<span id="4430">4430</span>
-<span id="4431">4431</span>
-<span id="4432">4432</span>
-<span id="4433">4433</span>
-<span id="4434">4434</span>
-<span id="4435">4435</span>
-<span id="4436">4436</span>
-<span id="4437">4437</span>
-<span id="4438">4438</span>
-<span id="4439">4439</span>
-<span id="4440">4440</span>
-<span id="4441">4441</span>
-<span id="4442">4442</span>
-<span id="4443">4443</span>
-<span id="4444">4444</span>
-<span id="4445">4445</span>
-<span id="4446">4446</span>
-<span id="4447">4447</span>
-<span id="4448">4448</span>
-<span id="4449">4449</span>
-<span id="4450">4450</span>
-<span id="4451">4451</span>
-<span id="4452">4452</span>
-<span id="4453">4453</span>
-<span id="4454">4454</span>
-<span id="4455">4455</span>
-<span id="4456">4456</span>
-<span id="4457">4457</span>
-<span id="4458">4458</span>
-<span id="4459">4459</span>
-<span id="4460">4460</span>
-<span id="4461">4461</span>
-<span id="4462">4462</span>
-<span id="4463">4463</span>
-<span id="4464">4464</span>
-<span id="4465">4465</span>
-<span id="4466">4466</span>
-<span id="4467">4467</span>
-<span id="4468">4468</span>
-<span id="4469">4469</span>
-<span id="4470">4470</span>
-<span id="4471">4471</span>
-<span id="4472">4472</span>
-<span id="4473">4473</span>
-<span id="4474">4474</span>
-<span id="4475">4475</span>
-<span id="4476">4476</span>
-<span id="4477">4477</span>
-<span id="4478">4478</span>
-<span id="4479">4479</span>
-<span id="4480">4480</span>
-<span id="4481">4481</span>
-<span id="4482">4482</span>
-<span id="4483">4483</span>
-<span id="4484">4484</span>
-<span id="4485">4485</span>
-<span id="4486">4486</span>
-<span id="4487">4487</span>
-<span id="4488">4488</span>
-<span id="4489">4489</span>
-<span id="4490">4490</span>
-<span id="4491">4491</span>
-<span id="4492">4492</span>
-<span id="4493">4493</span>
-<span id="4494">4494</span>
-<span id="4495">4495</span>
-<span id="4496">4496</span>
-<span id="4497">4497</span>
-<span id="4498">4498</span>
-<span id="4499">4499</span>
-<span id="4500">4500</span>
-<span id="4501">4501</span>
-<span id="4502">4502</span>
-<span id="4503">4503</span>
-<span id="4504">4504</span>
-<span id="4505">4505</span>
-<span id="4506">4506</span>
-<span id="4507">4507</span>
-<span id="4508">4508</span>
-<span id="4509">4509</span>
-<span id="4510">4510</span>
-<span id="4511">4511</span>
-<span id="4512">4512</span>
-<span id="4513">4513</span>
-<span id="4514">4514</span>
-<span id="4515">4515</span>
-<span id="4516">4516</span>
-<span id="4517">4517</span>
-<span id="4518">4518</span>
-<span id="4519">4519</span>
-<span id="4520">4520</span>
-<span id="4521">4521</span>
-<span id="4522">4522</span>
-<span id="4523">4523</span>
-<span id="4524">4524</span>
-<span id="4525">4525</span>
-<span id="4526">4526</span>
-<span id="4527">4527</span>
-<span id="4528">4528</span>
-<span id="4529">4529</span>
-<span id="4530">4530</span>
-<span id="4531">4531</span>
-<span id="4532">4532</span>
-<span id="4533">4533</span>
-<span id="4534">4534</span>
-<span id="4535">4535</span>
-<span id="4536">4536</span>
-<span id="4537">4537</span>
-<span id="4538">4538</span>
-<span id="4539">4539</span>
-<span id="4540">4540</span>
-<span id="4541">4541</span>
-<span id="4542">4542</span>
-<span id="4543">4543</span>
-<span id="4544">4544</span>
-<span id="4545">4545</span>
-<span id="4546">4546</span>
-<span id="4547">4547</span>
-<span id="4548">4548</span>
-<span id="4549">4549</span>
-<span id="4550">4550</span>
-<span id="4551">4551</span>
-<span id="4552">4552</span>
-<span id="4553">4553</span>
-<span id="4554">4554</span>
-<span id="4555">4555</span>
-<span id="4556">4556</span>
-<span id="4557">4557</span>
-<span id="4558">4558</span>
-<span id="4559">4559</span>
-<span id="4560">4560</span>
-<span id="4561">4561</span>
-<span id="4562">4562</span>
-<span id="4563">4563</span>
-<span id="4564">4564</span>
-<span id="4565">4565</span>
-<span id="4566">4566</span>
-<span id="4567">4567</span>
-<span id="4568">4568</span>
-<span id="4569">4569</span>
-<span id="4570">4570</span>
-<span id="4571">4571</span>
-<span id="4572">4572</span>
-<span id="4573">4573</span>
-<span id="4574">4574</span>
-<span id="4575">4575</span>
-<span id="4576">4576</span>
-<span id="4577">4577</span>
-<span id="4578">4578</span>
-<span id="4579">4579</span>
-<span id="4580">4580</span>
-<span id="4581">4581</span>
-<span id="4582">4582</span>
-<span id="4583">4583</span>
-<span id="4584">4584</span>
-<span id="4585">4585</span>
-<span id="4586">4586</span>
-<span id="4587">4587</span>
-<span id="4588">4588</span>
-<span id="4589">4589</span>
-<span id="4590">4590</span>
-<span id="4591">4591</span>
-<span id="4592">4592</span>
-<span id="4593">4593</span>
-<span id="4594">4594</span>
-<span id="4595">4595</span>
-<span id="4596">4596</span>
-<span id="4597">4597</span>
-<span id="4598">4598</span>
-<span id="4599">4599</span>
-<span id="4600">4600</span>
-<span id="4601">4601</span>
-<span id="4602">4602</span>
-<span id="4603">4603</span>
-<span id="4604">4604</span>
-<span id="4605">4605</span>
-<span id="4606">4606</span>
-<span id="4607">4607</span>
-<span id="4608">4608</span>
-<span id="4609">4609</span>
-<span id="4610">4610</span>
-<span id="4611">4611</span>
-<span id="4612">4612</span>
-<span id="4613">4613</span>
-<span id="4614">4614</span>
-<span id="4615">4615</span>
-<span id="4616">4616</span>
-<span id="4617">4617</span>
-<span id="4618">4618</span>
-<span id="4619">4619</span>
-<span id="4620">4620</span>
-<span id="4621">4621</span>
-<span id="4622">4622</span>
-<span id="4623">4623</span>
-<span id="4624">4624</span>
-<span id="4625">4625</span>
-<span id="4626">4626</span>
-<span id="4627">4627</span>
-<span id="4628">4628</span>
-<span id="4629">4629</span>
-<span id="4630">4630</span>
-<span id="4631">4631</span>
-<span id="4632">4632</span>
-<span id="4633">4633</span>
-<span id="4634">4634</span>
-<span id="4635">4635</span>
-<span id="4636">4636</span>
-<span id="4637">4637</span>
-<span id="4638">4638</span>
-<span id="4639">4639</span>
-<span id="4640">4640</span>
-<span id="4641">4641</span>
-<span id="4642">4642</span>
-<span id="4643">4643</span>
-<span id="4644">4644</span>
-<span id="4645">4645</span>
-<span id="4646">4646</span>
-<span id="4647">4647</span>
-<span id="4648">4648</span>
-<span id="4649">4649</span>
-<span id="4650">4650</span>
-<span id="4651">4651</span>
-<span id="4652">4652</span>
-<span id="4653">4653</span>
-<span id="4654">4654</span>
-<span id="4655">4655</span>
-<span id="4656">4656</span>
-<span id="4657">4657</span>
-<span id="4658">4658</span>
-<span id="4659">4659</span>
-<span id="4660">4660</span>
-<span id="4661">4661</span>
-<span id="4662">4662</span>
-<span id="4663">4663</span>
-<span id="4664">4664</span>
-<span id="4665">4665</span>
-<span id="4666">4666</span>
-<span id="4667">4667</span>
-<span id="4668">4668</span>
-<span id="4669">4669</span>
-<span id="4670">4670</span>
-<span id="4671">4671</span>
-<span id="4672">4672</span>
-<span id="4673">4673</span>
-<span id="4674">4674</span>
-<span id="4675">4675</span>
-<span id="4676">4676</span>
-<span id="4677">4677</span>
-<span id="4678">4678</span>
-<span id="4679">4679</span>
-<span id="4680">4680</span>
-<span id="4681">4681</span>
-<span id="4682">4682</span>
-<span id="4683">4683</span>
-<span id="4684">4684</span>
-<span id="4685">4685</span>
-<span id="4686">4686</span>
-<span id="4687">4687</span>
-<span id="4688">4688</span>
-<span id="4689">4689</span>
-<span id="4690">4690</span>
-<span id="4691">4691</span>
-<span id="4692">4692</span>
-<span id="4693">4693</span>
-<span id="4694">4694</span>
-<span id="4695">4695</span>
-<span id="4696">4696</span>
-<span id="4697">4697</span>
-<span id="4698">4698</span>
-<span id="4699">4699</span>
-<span id="4700">4700</span>
-<span id="4701">4701</span>
-<span id="4702">4702</span>
-<span id="4703">4703</span>
-<span id="4704">4704</span>
-<span id="4705">4705</span>
-<span id="4706">4706</span>
-<span id="4707">4707</span>
-<span id="4708">4708</span>
-<span id="4709">4709</span>
-<span id="4710">4710</span>
-<span id="4711">4711</span>
-<span id="4712">4712</span>
-<span id="4713">4713</span>
-<span id="4714">4714</span>
-<span id="4715">4715</span>
-<span id="4716">4716</span>
-<span id="4717">4717</span>
-<span id="4718">4718</span>
-<span id="4719">4719</span>
-<span id="4720">4720</span>
-<span id="4721">4721</span>
-<span id="4722">4722</span>
-<span id="4723">4723</span>
-<span id="4724">4724</span>
-<span id="4725">4725</span>
-<span id="4726">4726</span>
-<span id="4727">4727</span>
-<span id="4728">4728</span>
-<span id="4729">4729</span>
-<span id="4730">4730</span>
-<span id="4731">4731</span>
-<span id="4732">4732</span>
-<span id="4733">4733</span>
-<span id="4734">4734</span>
-<span id="4735">4735</span>
-<span id="4736">4736</span>
-<span id="4737">4737</span>
-<span id="4738">4738</span>
-<span id="4739">4739</span>
-<span id="4740">4740</span>
-<span id="4741">4741</span>
-<span id="4742">4742</span>
-<span id="4743">4743</span>
-<span id="4744">4744</span>
-<span id="4745">4745</span>
-<span id="4746">4746</span>
-<span id="4747">4747</span>
-<span id="4748">4748</span>
-<span id="4749">4749</span>
-<span id="4750">4750</span>
-<span id="4751">4751</span>
-<span id="4752">4752</span>
-<span id="4753">4753</span>
-<span id="4754">4754</span>
-<span id="4755">4755</span>
-<span id="4756">4756</span>
-<span id="4757">4757</span>
-<span id="4758">4758</span>
-<span id="4759">4759</span>
-<span id="4760">4760</span>
-<span id="4761">4761</span>
-<span id="4762">4762</span>
-<span id="4763">4763</span>
-<span id="4764">4764</span>
-<span id="4765">4765</span>
-<span id="4766">4766</span>
-<span id="4767">4767</span>
-<span id="4768">4768</span>
-<span id="4769">4769</span>
-<span id="4770">4770</span>
-<span id="4771">4771</span>
-<span id="4772">4772</span>
-<span id="4773">4773</span>
-<span id="4774">4774</span>
-<span id="4775">4775</span>
-<span id="4776">4776</span>
-<span id="4777">4777</span>
-<span id="4778">4778</span>
-<span id="4779">4779</span>
-<span id="4780">4780</span>
-<span id="4781">4781</span>
-<span id="4782">4782</span>
-<span id="4783">4783</span>
-<span id="4784">4784</span>
-<span id="4785">4785</span>
-<span id="4786">4786</span>
-<span id="4787">4787</span>
-<span id="4788">4788</span>
-<span id="4789">4789</span>
-<span id="4790">4790</span>
-<span id="4791">4791</span>
-<span id="4792">4792</span>
-<span id="4793">4793</span>
-<span id="4794">4794</span>
-<span id="4795">4795</span>
-<span id="4796">4796</span>
-<span id="4797">4797</span>
-<span id="4798">4798</span>
-<span id="4799">4799</span>
-<span id="4800">4800</span>
-<span id="4801">4801</span>
-<span id="4802">4802</span>
-<span id="4803">4803</span>
-<span id="4804">4804</span>
-<span id="4805">4805</span>
-<span id="4806">4806</span>
-<span id="4807">4807</span>
-<span id="4808">4808</span>
-<span id="4809">4809</span>
-<span id="4810">4810</span>
-<span id="4811">4811</span>
-<span id="4812">4812</span>
-<span id="4813">4813</span>
-<span id="4814">4814</span>
-<span id="4815">4815</span>
-<span id="4816">4816</span>
-<span id="4817">4817</span>
-<span id="4818">4818</span>
-<span id="4819">4819</span>
-<span id="4820">4820</span>
-<span id="4821">4821</span>
-<span id="4822">4822</span>
-<span id="4823">4823</span>
-<span id="4824">4824</span>
-<span id="4825">4825</span>
-<span id="4826">4826</span>
-<span id="4827">4827</span>
-<span id="4828">4828</span>
-<span id="4829">4829</span>
-<span id="4830">4830</span>
-<span id="4831">4831</span>
-<span id="4832">4832</span>
-<span id="4833">4833</span>
-<span id="4834">4834</span>
-<span id="4835">4835</span>
-<span id="4836">4836</span>
-<span id="4837">4837</span>
-<span id="4838">4838</span>
-<span id="4839">4839</span>
-<span id="4840">4840</span>
-<span id="4841">4841</span>
-<span id="4842">4842</span>
-<span id="4843">4843</span>
-<span id="4844">4844</span>
-<span id="4845">4845</span>
-<span id="4846">4846</span>
-<span id="4847">4847</span>
-<span id="4848">4848</span>
-<span id="4849">4849</span>
-<span id="4850">4850</span>
-<span id="4851">4851</span>
-<span id="4852">4852</span>
-<span id="4853">4853</span>
-<span id="4854">4854</span>
-<span id="4855">4855</span>
-<span id="4856">4856</span>
-<span id="4857">4857</span>
-<span id="4858">4858</span>
-<span id="4859">4859</span>
-<span id="4860">4860</span>
-<span id="4861">4861</span>
-<span id="4862">4862</span>
-<span id="4863">4863</span>
-<span id="4864">4864</span>
-<span id="4865">4865</span>
-<span id="4866">4866</span>
-<span id="4867">4867</span>
-<span id="4868">4868</span>
-<span id="4869">4869</span>
-<span id="4870">4870</span>
-<span id="4871">4871</span>
-<span id="4872">4872</span>
-<span id="4873">4873</span>
-<span id="4874">4874</span>
-<span id="4875">4875</span>
-<span id="4876">4876</span>
-<span id="4877">4877</span>
-<span id="4878">4878</span>
-<span id="4879">4879</span>
-<span id="4880">4880</span>
-<span id="4881">4881</span>
-<span id="4882">4882</span>
-<span id="4883">4883</span>
-<span id="4884">4884</span>
-<span id="4885">4885</span>
-<span id="4886">4886</span>
-<span id="4887">4887</span>
-<span id="4888">4888</span>
-<span id="4889">4889</span>
-<span id="4890">4890</span>
-<span id="4891">4891</span>
-<span id="4892">4892</span>
-<span id="4893">4893</span>
-<span id="4894">4894</span>
-<span id="4895">4895</span>
-<span id="4896">4896</span>
-<span id="4897">4897</span>
-<span id="4898">4898</span>
-<span id="4899">4899</span>
-<span id="4900">4900</span>
-<span id="4901">4901</span>
-<span id="4902">4902</span>
-<span id="4903">4903</span>
-<span id="4904">4904</span>
-<span id="4905">4905</span>
-<span id="4906">4906</span>
-<span id="4907">4907</span>
-<span id="4908">4908</span>
-<span id="4909">4909</span>
-<span id="4910">4910</span>
-<span id="4911">4911</span>
-<span id="4912">4912</span>
-<span id="4913">4913</span>
-<span id="4914">4914</span>
-<span id="4915">4915</span>
-<span id="4916">4916</span>
-<span id="4917">4917</span>
-<span id="4918">4918</span>
-<span id="4919">4919</span>
-<span id="4920">4920</span>
-<span id="4921">4921</span>
-<span id="4922">4922</span>
-<span id="4923">4923</span>
-<span id="4924">4924</span>
-<span id="4925">4925</span>
-<span id="4926">4926</span>
-<span id="4927">4927</span>
-<span id="4928">4928</span>
-<span id="4929">4929</span>
-<span id="4930">4930</span>
-<span id="4931">4931</span>
-<span id="4932">4932</span>
-<span id="4933">4933</span>
-<span id="4934">4934</span>
-<span id="4935">4935</span>
-<span id="4936">4936</span>
-<span id="4937">4937</span>
-<span id="4938">4938</span>
-<span id="4939">4939</span>
-<span id="4940">4940</span>
-<span id="4941">4941</span>
-<span id="4942">4942</span>
-<span id="4943">4943</span>
-<span id="4944">4944</span>
-<span id="4945">4945</span>
-<span id="4946">4946</span>
-<span id="4947">4947</span>
-<span id="4948">4948</span>
-<span id="4949">4949</span>
-<span id="4950">4950</span>
-<span id="4951">4951</span>
-<span id="4952">4952</span>
-<span id="4953">4953</span>
-<span id="4954">4954</span>
-<span id="4955">4955</span>
-<span id="4956">4956</span>
-<span id="4957">4957</span>
-<span id="4958">4958</span>
-<span id="4959">4959</span>
-<span id="4960">4960</span>
-<span id="4961">4961</span>
-<span id="4962">4962</span>
-<span id="4963">4963</span>
-<span id="4964">4964</span>
-<span id="4965">4965</span>
-<span id="4966">4966</span>
-<span id="4967">4967</span>
-<span id="4968">4968</span>
-<span id="4969">4969</span>
-<span id="4970">4970</span>
-<span id="4971">4971</span>
-<span id="4972">4972</span>
-<span id="4973">4973</span>
-<span id="4974">4974</span>
-<span id="4975">4975</span>
-<span id="4976">4976</span>
-<span id="4977">4977</span>
-<span id="4978">4978</span>
-<span id="4979">4979</span>
-<span id="4980">4980</span>
-<span id="4981">4981</span>
-<span id="4982">4982</span>
-<span id="4983">4983</span>
-<span id="4984">4984</span>
-<span id="4985">4985</span>
-<span id="4986">4986</span>
-<span id="4987">4987</span>
-<span id="4988">4988</span>
-<span id="4989">4989</span>
-<span id="4990">4990</span>
-<span id="4991">4991</span>
-<span id="4992">4992</span>
-<span id="4993">4993</span>
-<span id="4994">4994</span>
-<span id="4995">4995</span>
-<span id="4996">4996</span>
-<span id="4997">4997</span>
-<span id="4998">4998</span>
-<span id="4999">4999</span>
-<span id="5000">5000</span>
-<span id="5001">5001</span>
-<span id="5002">5002</span>
-<span id="5003">5003</span>
-<span id="5004">5004</span>
-<span id="5005">5005</span>
-<span id="5006">5006</span>
-<span id="5007">5007</span>
-<span id="5008">5008</span>
-<span id="5009">5009</span>
-<span id="5010">5010</span>
-<span id="5011">5011</span>
-<span id="5012">5012</span>
-<span id="5013">5013</span>
-<span id="5014">5014</span>
-<span id="5015">5015</span>
-<span id="5016">5016</span>
-<span id="5017">5017</span>
-<span id="5018">5018</span>
-<span id="5019">5019</span>
-<span id="5020">5020</span>
-<span id="5021">5021</span>
-<span id="5022">5022</span>
-<span id="5023">5023</span>
-<span id="5024">5024</span>
-<span id="5025">5025</span>
-<span id="5026">5026</span>
-<span id="5027">5027</span>
-<span id="5028">5028</span>
-<span id="5029">5029</span>
-<span id="5030">5030</span>
-<span id="5031">5031</span>
-<span id="5032">5032</span>
-<span id="5033">5033</span>
-<span id="5034">5034</span>
-<span id="5035">5035</span>
-<span id="5036">5036</span>
-<span id="5037">5037</span>
-<span id="5038">5038</span>
-<span id="5039">5039</span>
-<span id="5040">5040</span>
-<span id="5041">5041</span>
-<span id="5042">5042</span>
-<span id="5043">5043</span>
-<span id="5044">5044</span>
-<span id="5045">5045</span>
-<span id="5046">5046</span>
-<span id="5047">5047</span>
-<span id="5048">5048</span>
-<span id="5049">5049</span>
-<span id="5050">5050</span>
-<span id="5051">5051</span>
-<span id="5052">5052</span>
-<span id="5053">5053</span>
-<span id="5054">5054</span>
-<span id="5055">5055</span>
-<span id="5056">5056</span>
-<span id="5057">5057</span>
-<span id="5058">5058</span>
-<span id="5059">5059</span>
-<span id="5060">5060</span>
-<span id="5061">5061</span>
-<span id="5062">5062</span>
-<span id="5063">5063</span>
-<span id="5064">5064</span>
-<span id="5065">5065</span>
-<span id="5066">5066</span>
-<span id="5067">5067</span>
-<span id="5068">5068</span>
-<span id="5069">5069</span>
-<span id="5070">5070</span>
-<span id="5071">5071</span>
-<span id="5072">5072</span>
-<span id="5073">5073</span>
-<span id="5074">5074</span>
-<span id="5075">5075</span>
-<span id="5076">5076</span>
-<span id="5077">5077</span>
-<span id="5078">5078</span>
-<span id="5079">5079</span>
-<span id="5080">5080</span>
-<span id="5081">5081</span>
-<span id="5082">5082</span>
-<span id="5083">5083</span>
-<span id="5084">5084</span>
-<span id="5085">5085</span>
-<span id="5086">5086</span>
-<span id="5087">5087</span>
-<span id="5088">5088</span>
-<span id="5089">5089</span>
-<span id="5090">5090</span>
-<span id="5091">5091</span>
-<span id="5092">5092</span>
-<span id="5093">5093</span>
-<span id="5094">5094</span>
-<span id="5095">5095</span>
-<span id="5096">5096</span>
-<span id="5097">5097</span>
-<span id="5098">5098</span>
-<span id="5099">5099</span>
-<span id="5100">5100</span>
-<span id="5101">5101</span>
-<span id="5102">5102</span>
-<span id="5103">5103</span>
-<span id="5104">5104</span>
-<span id="5105">5105</span>
-<span id="5106">5106</span>
-<span id="5107">5107</span>
-<span id="5108">5108</span>
-<span id="5109">5109</span>
-<span id="5110">5110</span>
-<span id="5111">5111</span>
-<span id="5112">5112</span>
-<span id="5113">5113</span>
-<span id="5114">5114</span>
-<span id="5115">5115</span>
-<span id="5116">5116</span>
-<span id="5117">5117</span>
-<span id="5118">5118</span>
-<span id="5119">5119</span>
-<span id="5120">5120</span>
-<span id="5121">5121</span>
-<span id="5122">5122</span>
-<span id="5123">5123</span>
-<span id="5124">5124</span>
-<span id="5125">5125</span>
-<span id="5126">5126</span>
-<span id="5127">5127</span>
-<span id="5128">5128</span>
-<span id="5129">5129</span>
-<span id="5130">5130</span>
-<span id="5131">5131</span>
-<span id="5132">5132</span>
-<span id="5133">5133</span>
-<span id="5134">5134</span>
-<span id="5135">5135</span>
-<span id="5136">5136</span>
-<span id="5137">5137</span>
-<span id="5138">5138</span>
-<span id="5139">5139</span>
-<span id="5140">5140</span>
-<span id="5141">5141</span>
-<span id="5142">5142</span>
-<span id="5143">5143</span>
-<span id="5144">5144</span>
-<span id="5145">5145</span>
-<span id="5146">5146</span>
-<span id="5147">5147</span>
-<span id="5148">5148</span>
-<span id="5149">5149</span>
-<span id="5150">5150</span>
-<span id="5151">5151</span>
-<span id="5152">5152</span>
-<span id="5153">5153</span>
-<span id="5154">5154</span>
-<span id="5155">5155</span>
-<span id="5156">5156</span>
-<span id="5157">5157</span>
-<span id="5158">5158</span>
-<span id="5159">5159</span>
-<span id="5160">5160</span>
-<span id="5161">5161</span>
-<span id="5162">5162</span>
-<span id="5163">5163</span>
-<span id="5164">5164</span>
-<span id="5165">5165</span>
-<span id="5166">5166</span>
-<span id="5167">5167</span>
-<span id="5168">5168</span>
-<span id="5169">5169</span>
-<span id="5170">5170</span>
-<span id="5171">5171</span>
-<span id="5172">5172</span>
-<span id="5173">5173</span>
-<span id="5174">5174</span>
-<span id="5175">5175</span>
-<span id="5176">5176</span>
-<span id="5177">5177</span>
-<span id="5178">5178</span>
-<span id="5179">5179</span>
-<span id="5180">5180</span>
-<span id="5181">5181</span>
-<span id="5182">5182</span>
-<span id="5183">5183</span>
-<span id="5184">5184</span>
-<span id="5185">5185</span>
-<span id="5186">5186</span>
-<span id="5187">5187</span>
-<span id="5188">5188</span>
-<span id="5189">5189</span>
-<span id="5190">5190</span>
-<span id="5191">5191</span>
-<span id="5192">5192</span>
-<span id="5193">5193</span>
-<span id="5194">5194</span>
-<span id="5195">5195</span>
-<span id="5196">5196</span>
-<span id="5197">5197</span>
-<span id="5198">5198</span>
-<span id="5199">5199</span>
-<span id="5200">5200</span>
-<span id="5201">5201</span>
-<span id="5202">5202</span>
-<span id="5203">5203</span>
-<span id="5204">5204</span>
-<span id="5205">5205</span>
-<span id="5206">5206</span>
-<span id="5207">5207</span>
-<span id="5208">5208</span>
-<span id="5209">5209</span>
-<span id="5210">5210</span>
-<span id="5211">5211</span>
-<span id="5212">5212</span>
-<span id="5213">5213</span>
-<span id="5214">5214</span>
-<span id="5215">5215</span>
-<span id="5216">5216</span>
-<span id="5217">5217</span>
-<span id="5218">5218</span>
-<span id="5219">5219</span>
-<span id="5220">5220</span>
-<span id="5221">5221</span>
-<span id="5222">5222</span>
-<span id="5223">5223</span>
-<span id="5224">5224</span>
-<span id="5225">5225</span>
-<span id="5226">5226</span>
-<span id="5227">5227</span>
-<span id="5228">5228</span>
-<span id="5229">5229</span>
-<span id="5230">5230</span>
-<span id="5231">5231</span>
-<span id="5232">5232</span>
-<span id="5233">5233</span>
-<span id="5234">5234</span>
-<span id="5235">5235</span>
-<span id="5236">5236</span>
-<span id="5237">5237</span>
-<span id="5238">5238</span>
-<span id="5239">5239</span>
-<span id="5240">5240</span>
-<span id="5241">5241</span>
-<span id="5242">5242</span>
-<span id="5243">5243</span>
-<span id="5244">5244</span>
-<span id="5245">5245</span>
-<span id="5246">5246</span>
-<span id="5247">5247</span>
-<span id="5248">5248</span>
-<span id="5249">5249</span>
-<span id="5250">5250</span>
-<span id="5251">5251</span>
-<span id="5252">5252</span>
-<span id="5253">5253</span>
-<span id="5254">5254</span>
-<span id="5255">5255</span>
-<span id="5256">5256</span>
-<span id="5257">5257</span>
-<span id="5258">5258</span>
-<span id="5259">5259</span>
-<span id="5260">5260</span>
-<span id="5261">5261</span>
-<span id="5262">5262</span>
-<span id="5263">5263</span>
-<span id="5264">5264</span>
-<span id="5265">5265</span>
-<span id="5266">5266</span>
-<span id="5267">5267</span>
-<span id="5268">5268</span>
-<span id="5269">5269</span>
-<span id="5270">5270</span>
-<span id="5271">5271</span>
-<span id="5272">5272</span>
-<span id="5273">5273</span>
-<span id="5274">5274</span>
-<span id="5275">5275</span>
-<span id="5276">5276</span>
-<span id="5277">5277</span>
-<span id="5278">5278</span>
-<span id="5279">5279</span>
-<span id="5280">5280</span>
-<span id="5281">5281</span>
-<span id="5282">5282</span>
-<span id="5283">5283</span>
-<span id="5284">5284</span>
-<span id="5285">5285</span>
-<span id="5286">5286</span>
-<span id="5287">5287</span>
-<span id="5288">5288</span>
-<span id="5289">5289</span>
-<span id="5290">5290</span>
-<span id="5291">5291</span>
-<span id="5292">5292</span>
-<span id="5293">5293</span>
-<span id="5294">5294</span>
-<span id="5295">5295</span>
-<span id="5296">5296</span>
-<span id="5297">5297</span>
-<span id="5298">5298</span>
-<span id="5299">5299</span>
-<span id="5300">5300</span>
-<span id="5301">5301</span>
-<span id="5302">5302</span>
-<span id="5303">5303</span>
-<span id="5304">5304</span>
-<span id="5305">5305</span>
-<span id="5306">5306</span>
-<span id="5307">5307</span>
-<span id="5308">5308</span>
-<span id="5309">5309</span>
-<span id="5310">5310</span>
-<span id="5311">5311</span>
-<span id="5312">5312</span>
-<span id="5313">5313</span>
-<span id="5314">5314</span>
-<span id="5315">5315</span>
-<span id="5316">5316</span>
-<span id="5317">5317</span>
-<span id="5318">5318</span>
-<span id="5319">5319</span>
-<span id="5320">5320</span>
-<span id="5321">5321</span>
-<span id="5322">5322</span>
-<span id="5323">5323</span>
-<span id="5324">5324</span>
-<span id="5325">5325</span>
-<span id="5326">5326</span>
-<span id="5327">5327</span>
-<span id="5328">5328</span>
-<span id="5329">5329</span>
-<span id="5330">5330</span>
-<span id="5331">5331</span>
-<span id="5332">5332</span>
-<span id="5333">5333</span>
-<span id="5334">5334</span>
-<span id="5335">5335</span>
-<span id="5336">5336</span>
-<span id="5337">5337</span>
-<span id="5338">5338</span>
-<span id="5339">5339</span>
-<span id="5340">5340</span>
-<span id="5341">5341</span>
-<span id="5342">5342</span>
-<span id="5343">5343</span>
-<span id="5344">5344</span>
-<span id="5345">5345</span>
-<span id="5346">5346</span>
-<span id="5347">5347</span>
-<span id="5348">5348</span>
-<span id="5349">5349</span>
-<span id="5350">5350</span>
-<span id="5351">5351</span>
-<span id="5352">5352</span>
-<span id="5353">5353</span>
-<span id="5354">5354</span>
-<span id="5355">5355</span>
-<span id="5356">5356</span>
-<span id="5357">5357</span>
-<span id="5358">5358</span>
-<span id="5359">5359</span>
-<span id="5360">5360</span>
-<span id="5361">5361</span>
-<span id="5362">5362</span>
-<span id="5363">5363</span>
-<span id="5364">5364</span>
-<span id="5365">5365</span>
-<span id="5366">5366</span>
-<span id="5367">5367</span>
-<span id="5368">5368</span>
-<span id="5369">5369</span>
-<span id="5370">5370</span>
-<span id="5371">5371</span>
-<span id="5372">5372</span>
-<span id="5373">5373</span>
-<span id="5374">5374</span>
-<span id="5375">5375</span>
-<span id="5376">5376</span>
-<span id="5377">5377</span>
-<span id="5378">5378</span>
-<span id="5379">5379</span>
-<span id="5380">5380</span>
-<span id="5381">5381</span>
-<span id="5382">5382</span>
-<span id="5383">5383</span>
-<span id="5384">5384</span>
-<span id="5385">5385</span>
-<span id="5386">5386</span>
-<span id="5387">5387</span>
-<span id="5388">5388</span>
-<span id="5389">5389</span>
-<span id="5390">5390</span>
-<span id="5391">5391</span>
-<span id="5392">5392</span>
-<span id="5393">5393</span>
-<span id="5394">5394</span>
-<span id="5395">5395</span>
-<span id="5396">5396</span>
-<span id="5397">5397</span>
-<span id="5398">5398</span>
-<span id="5399">5399</span>
-<span id="5400">5400</span>
-<span id="5401">5401</span>
-<span id="5402">5402</span>
-<span id="5403">5403</span>
-<span id="5404">5404</span>
-<span id="5405">5405</span>
-<span id="5406">5406</span>
-<span id="5407">5407</span>
-<span id="5408">5408</span>
-<span id="5409">5409</span>
-<span id="5410">5410</span>
-<span id="5411">5411</span>
-<span id="5412">5412</span>
-<span id="5413">5413</span>
-<span id="5414">5414</span>
-<span id="5415">5415</span>
-<span id="5416">5416</span>
-<span id="5417">5417</span>
-<span id="5418">5418</span>
-<span id="5419">5419</span>
-<span id="5420">5420</span>
-<span id="5421">5421</span>
-<span id="5422">5422</span>
-<span id="5423">5423</span>
-<span id="5424">5424</span>
-<span id="5425">5425</span>
-<span id="5426">5426</span>
-<span id="5427">5427</span>
-<span id="5428">5428</span>
-<span id="5429">5429</span>
-<span id="5430">5430</span>
-<span id="5431">5431</span>
-<span id="5432">5432</span>
-<span id="5433">5433</span>
-<span id="5434">5434</span>
-<span id="5435">5435</span>
-<span id="5436">5436</span>
-<span id="5437">5437</span>
-<span id="5438">5438</span>
-<span id="5439">5439</span>
-<span id="5440">5440</span>
-<span id="5441">5441</span>
-<span id="5442">5442</span>
-<span id="5443">5443</span>
-<span id="5444">5444</span>
-<span id="5445">5445</span>
-<span id="5446">5446</span>
-<span id="5447">5447</span>
-<span id="5448">5448</span>
-<span id="5449">5449</span>
-<span id="5450">5450</span>
-<span id="5451">5451</span>
-<span id="5452">5452</span>
-<span id="5453">5453</span>
-<span id="5454">5454</span>
-<span id="5455">5455</span>
-<span id="5456">5456</span>
-<span id="5457">5457</span>
-<span id="5458">5458</span>
-<span id="5459">5459</span>
-<span id="5460">5460</span>
-<span id="5461">5461</span>
-<span id="5462">5462</span>
-<span id="5463">5463</span>
-<span id="5464">5464</span>
-<span id="5465">5465</span>
-<span id="5466">5466</span>
-<span id="5467">5467</span>
-<span id="5468">5468</span>
-<span id="5469">5469</span>
-<span id="5470">5470</span>
-<span id="5471">5471</span>
-<span id="5472">5472</span>
-<span id="5473">5473</span>
-<span id="5474">5474</span>
-<span id="5475">5475</span>
-<span id="5476">5476</span>
-<span id="5477">5477</span>
-<span id="5478">5478</span>
-<span id="5479">5479</span>
-<span id="5480">5480</span>
-<span id="5481">5481</span>
-<span id="5482">5482</span>
-<span id="5483">5483</span>
-<span id="5484">5484</span>
-<span id="5485">5485</span>
-<span id="5486">5486</span>
-<span id="5487">5487</span>
-<span id="5488">5488</span>
-<span id="5489">5489</span>
-<span id="5490">5490</span>
-<span id="5491">5491</span>
-<span id="5492">5492</span>
-<span id="5493">5493</span>
-<span id="5494">5494</span>
-<span id="5495">5495</span>
-<span id="5496">5496</span>
-<span id="5497">5497</span>
-<span id="5498">5498</span>
-<span id="5499">5499</span>
-<span id="5500">5500</span>
-<span id="5501">5501</span>
-<span id="5502">5502</span>
-<span id="5503">5503</span>
-<span id="5504">5504</span>
-<span id="5505">5505</span>
-<span id="5506">5506</span>
-<span id="5507">5507</span>
-<span id="5508">5508</span>
-<span id="5509">5509</span>
-<span id="5510">5510</span>
-<span id="5511">5511</span>
-<span id="5512">5512</span>
-<span id="5513">5513</span>
-<span id="5514">5514</span>
-<span id="5515">5515</span>
-<span id="5516">5516</span>
-<span id="5517">5517</span>
-<span id="5518">5518</span>
-<span id="5519">5519</span>
-<span id="5520">5520</span>
-<span id="5521">5521</span>
-<span id="5522">5522</span>
-<span id="5523">5523</span>
-<span id="5524">5524</span>
-<span id="5525">5525</span>
-<span id="5526">5526</span>
-<span id="5527">5527</span>
-<span id="5528">5528</span>
-<span id="5529">5529</span>
-<span id="5530">5530</span>
-<span id="5531">5531</span>
-<span id="5532">5532</span>
-<span id="5533">5533</span>
-<span id="5534">5534</span>
-<span id="5535">5535</span>
-<span id="5536">5536</span>
-<span id="5537">5537</span>
-<span id="5538">5538</span>
-<span id="5539">5539</span>
-<span id="5540">5540</span>
-<span id="5541">5541</span>
-<span id="5542">5542</span>
-<span id="5543">5543</span>
-<span id="5544">5544</span>
-<span id="5545">5545</span>
-<span id="5546">5546</span>
-<span id="5547">5547</span>
-<span id="5548">5548</span>
-<span id="5549">5549</span>
-<span id="5550">5550</span>
-<span id="5551">5551</span>
-<span id="5552">5552</span>
-<span id="5553">5553</span>
-<span id="5554">5554</span>
-<span id="5555">5555</span>
-<span id="5556">5556</span>
-<span id="5557">5557</span>
-<span id="5558">5558</span>
-<span id="5559">5559</span>
-<span id="5560">5560</span>
-<span id="5561">5561</span>
-<span id="5562">5562</span>
-<span id="5563">5563</span>
-<span id="5564">5564</span>
-<span id="5565">5565</span>
-<span id="5566">5566</span>
-<span id="5567">5567</span>
-<span id="5568">5568</span>
-<span id="5569">5569</span>
-<span id="5570">5570</span>
-<span id="5571">5571</span>
-<span id="5572">5572</span>
-<span id="5573">5573</span>
-<span id="5574">5574</span>
-<span id="5575">5575</span>
-<span id="5576">5576</span>
-<span id="5577">5577</span>
-<span id="5578">5578</span>
-<span id="5579">5579</span>
-<span id="5580">5580</span>
-<span id="5581">5581</span>
-<span id="5582">5582</span>
-<span id="5583">5583</span>
-<span id="5584">5584</span>
-<span id="5585">5585</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Wallet</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module defines the [`Wallet`] structure.</span>
-
-<span class="kw">use</span> <span class="ident">std::cell::RefCell</span>;
-<span class="kw">use</span> <span class="ident">std::collections::HashMap</span>;
-<span class="kw">use</span> <span class="ident">std::collections</span>::{<span class="ident">BTreeMap</span>, <span class="ident">HashSet</span>};
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
-<span class="kw">use</span> <span class="ident">std::ops</span>::{<span class="ident">Deref</span>, <span class="ident">DerefMut</span>};
-<span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
-<span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::secp256k1::Secp256k1</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::encode::serialize</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::psbt</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{
- <span class="ident">Address</span>, <span class="ident">EcdsaSighashType</span>, <span class="ident">LockTime</span>, <span class="ident">Network</span>, <span class="ident">OutPoint</span>, <span class="ident">SchnorrSighashType</span>, <span class="ident">Script</span>, <span class="ident">Sequence</span>,
- <span class="ident">Transaction</span>, <span class="ident">TxOut</span>, <span class="ident">Txid</span>, <span class="ident">Witness</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/mod.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+<a href="#2122" id="2122">2122</a>
+<a href="#2123" id="2123">2123</a>
+<a href="#2124" id="2124">2124</a>
+<a href="#2125" id="2125">2125</a>
+<a href="#2126" id="2126">2126</a>
+<a href="#2127" id="2127">2127</a>
+<a href="#2128" id="2128">2128</a>
+<a href="#2129" id="2129">2129</a>
+<a href="#2130" id="2130">2130</a>
+<a href="#2131" id="2131">2131</a>
+<a href="#2132" id="2132">2132</a>
+<a href="#2133" id="2133">2133</a>
+<a href="#2134" id="2134">2134</a>
+<a href="#2135" id="2135">2135</a>
+<a href="#2136" id="2136">2136</a>
+<a href="#2137" id="2137">2137</a>
+<a href="#2138" id="2138">2138</a>
+<a href="#2139" id="2139">2139</a>
+<a href="#2140" id="2140">2140</a>
+<a href="#2141" id="2141">2141</a>
+<a href="#2142" id="2142">2142</a>
+<a href="#2143" id="2143">2143</a>
+<a href="#2144" id="2144">2144</a>
+<a href="#2145" id="2145">2145</a>
+<a href="#2146" id="2146">2146</a>
+<a href="#2147" id="2147">2147</a>
+<a href="#2148" id="2148">2148</a>
+<a href="#2149" id="2149">2149</a>
+<a href="#2150" id="2150">2150</a>
+<a href="#2151" id="2151">2151</a>
+<a href="#2152" id="2152">2152</a>
+<a href="#2153" id="2153">2153</a>
+<a href="#2154" id="2154">2154</a>
+<a href="#2155" id="2155">2155</a>
+<a href="#2156" id="2156">2156</a>
+<a href="#2157" id="2157">2157</a>
+<a href="#2158" id="2158">2158</a>
+<a href="#2159" id="2159">2159</a>
+<a href="#2160" id="2160">2160</a>
+<a href="#2161" id="2161">2161</a>
+<a href="#2162" id="2162">2162</a>
+<a href="#2163" id="2163">2163</a>
+<a href="#2164" id="2164">2164</a>
+<a href="#2165" id="2165">2165</a>
+<a href="#2166" id="2166">2166</a>
+<a href="#2167" id="2167">2167</a>
+<a href="#2168" id="2168">2168</a>
+<a href="#2169" id="2169">2169</a>
+<a href="#2170" id="2170">2170</a>
+<a href="#2171" id="2171">2171</a>
+<a href="#2172" id="2172">2172</a>
+<a href="#2173" id="2173">2173</a>
+<a href="#2174" id="2174">2174</a>
+<a href="#2175" id="2175">2175</a>
+<a href="#2176" id="2176">2176</a>
+<a href="#2177" id="2177">2177</a>
+<a href="#2178" id="2178">2178</a>
+<a href="#2179" id="2179">2179</a>
+<a href="#2180" id="2180">2180</a>
+<a href="#2181" id="2181">2181</a>
+<a href="#2182" id="2182">2182</a>
+<a href="#2183" id="2183">2183</a>
+<a href="#2184" id="2184">2184</a>
+<a href="#2185" id="2185">2185</a>
+<a href="#2186" id="2186">2186</a>
+<a href="#2187" id="2187">2187</a>
+<a href="#2188" id="2188">2188</a>
+<a href="#2189" id="2189">2189</a>
+<a href="#2190" id="2190">2190</a>
+<a href="#2191" id="2191">2191</a>
+<a href="#2192" id="2192">2192</a>
+<a href="#2193" id="2193">2193</a>
+<a href="#2194" id="2194">2194</a>
+<a href="#2195" id="2195">2195</a>
+<a href="#2196" id="2196">2196</a>
+<a href="#2197" id="2197">2197</a>
+<a href="#2198" id="2198">2198</a>
+<a href="#2199" id="2199">2199</a>
+<a href="#2200" id="2200">2200</a>
+<a href="#2201" id="2201">2201</a>
+<a href="#2202" id="2202">2202</a>
+<a href="#2203" id="2203">2203</a>
+<a href="#2204" id="2204">2204</a>
+<a href="#2205" id="2205">2205</a>
+<a href="#2206" id="2206">2206</a>
+<a href="#2207" id="2207">2207</a>
+<a href="#2208" id="2208">2208</a>
+<a href="#2209" id="2209">2209</a>
+<a href="#2210" id="2210">2210</a>
+<a href="#2211" id="2211">2211</a>
+<a href="#2212" id="2212">2212</a>
+<a href="#2213" id="2213">2213</a>
+<a href="#2214" id="2214">2214</a>
+<a href="#2215" id="2215">2215</a>
+<a href="#2216" id="2216">2216</a>
+<a href="#2217" id="2217">2217</a>
+<a href="#2218" id="2218">2218</a>
+<a href="#2219" id="2219">2219</a>
+<a href="#2220" id="2220">2220</a>
+<a href="#2221" id="2221">2221</a>
+<a href="#2222" id="2222">2222</a>
+<a href="#2223" id="2223">2223</a>
+<a href="#2224" id="2224">2224</a>
+<a href="#2225" id="2225">2225</a>
+<a href="#2226" id="2226">2226</a>
+<a href="#2227" id="2227">2227</a>
+<a href="#2228" id="2228">2228</a>
+<a href="#2229" id="2229">2229</a>
+<a href="#2230" id="2230">2230</a>
+<a href="#2231" id="2231">2231</a>
+<a href="#2232" id="2232">2232</a>
+<a href="#2233" id="2233">2233</a>
+<a href="#2234" id="2234">2234</a>
+<a href="#2235" id="2235">2235</a>
+<a href="#2236" id="2236">2236</a>
+<a href="#2237" id="2237">2237</a>
+<a href="#2238" id="2238">2238</a>
+<a href="#2239" id="2239">2239</a>
+<a href="#2240" id="2240">2240</a>
+<a href="#2241" id="2241">2241</a>
+<a href="#2242" id="2242">2242</a>
+<a href="#2243" id="2243">2243</a>
+<a href="#2244" id="2244">2244</a>
+<a href="#2245" id="2245">2245</a>
+<a href="#2246" id="2246">2246</a>
+<a href="#2247" id="2247">2247</a>
+<a href="#2248" id="2248">2248</a>
+<a href="#2249" id="2249">2249</a>
+<a href="#2250" id="2250">2250</a>
+<a href="#2251" id="2251">2251</a>
+<a href="#2252" id="2252">2252</a>
+<a href="#2253" id="2253">2253</a>
+<a href="#2254" id="2254">2254</a>
+<a href="#2255" id="2255">2255</a>
+<a href="#2256" id="2256">2256</a>
+<a href="#2257" id="2257">2257</a>
+<a href="#2258" id="2258">2258</a>
+<a href="#2259" id="2259">2259</a>
+<a href="#2260" id="2260">2260</a>
+<a href="#2261" id="2261">2261</a>
+<a href="#2262" id="2262">2262</a>
+<a href="#2263" id="2263">2263</a>
+<a href="#2264" id="2264">2264</a>
+<a href="#2265" id="2265">2265</a>
+<a href="#2266" id="2266">2266</a>
+<a href="#2267" id="2267">2267</a>
+<a href="#2268" id="2268">2268</a>
+<a href="#2269" id="2269">2269</a>
+<a href="#2270" id="2270">2270</a>
+<a href="#2271" id="2271">2271</a>
+<a href="#2272" id="2272">2272</a>
+<a href="#2273" id="2273">2273</a>
+<a href="#2274" id="2274">2274</a>
+<a href="#2275" id="2275">2275</a>
+<a href="#2276" id="2276">2276</a>
+<a href="#2277" id="2277">2277</a>
+<a href="#2278" id="2278">2278</a>
+<a href="#2279" id="2279">2279</a>
+<a href="#2280" id="2280">2280</a>
+<a href="#2281" id="2281">2281</a>
+<a href="#2282" id="2282">2282</a>
+<a href="#2283" id="2283">2283</a>
+<a href="#2284" id="2284">2284</a>
+<a href="#2285" id="2285">2285</a>
+<a href="#2286" id="2286">2286</a>
+<a href="#2287" id="2287">2287</a>
+<a href="#2288" id="2288">2288</a>
+<a href="#2289" id="2289">2289</a>
+<a href="#2290" id="2290">2290</a>
+<a href="#2291" id="2291">2291</a>
+<a href="#2292" id="2292">2292</a>
+<a href="#2293" id="2293">2293</a>
+<a href="#2294" id="2294">2294</a>
+<a href="#2295" id="2295">2295</a>
+<a href="#2296" id="2296">2296</a>
+<a href="#2297" id="2297">2297</a>
+<a href="#2298" id="2298">2298</a>
+<a href="#2299" id="2299">2299</a>
+<a href="#2300" id="2300">2300</a>
+<a href="#2301" id="2301">2301</a>
+<a href="#2302" id="2302">2302</a>
+<a href="#2303" id="2303">2303</a>
+<a href="#2304" id="2304">2304</a>
+<a href="#2305" id="2305">2305</a>
+<a href="#2306" id="2306">2306</a>
+<a href="#2307" id="2307">2307</a>
+<a href="#2308" id="2308">2308</a>
+<a href="#2309" id="2309">2309</a>
+<a href="#2310" id="2310">2310</a>
+<a href="#2311" id="2311">2311</a>
+<a href="#2312" id="2312">2312</a>
+<a href="#2313" id="2313">2313</a>
+<a href="#2314" id="2314">2314</a>
+<a href="#2315" id="2315">2315</a>
+<a href="#2316" id="2316">2316</a>
+<a href="#2317" id="2317">2317</a>
+<a href="#2318" id="2318">2318</a>
+<a href="#2319" id="2319">2319</a>
+<a href="#2320" id="2320">2320</a>
+<a href="#2321" id="2321">2321</a>
+<a href="#2322" id="2322">2322</a>
+<a href="#2323" id="2323">2323</a>
+<a href="#2324" id="2324">2324</a>
+<a href="#2325" id="2325">2325</a>
+<a href="#2326" id="2326">2326</a>
+<a href="#2327" id="2327">2327</a>
+<a href="#2328" id="2328">2328</a>
+<a href="#2329" id="2329">2329</a>
+<a href="#2330" id="2330">2330</a>
+<a href="#2331" id="2331">2331</a>
+<a href="#2332" id="2332">2332</a>
+<a href="#2333" id="2333">2333</a>
+<a href="#2334" id="2334">2334</a>
+<a href="#2335" id="2335">2335</a>
+<a href="#2336" id="2336">2336</a>
+<a href="#2337" id="2337">2337</a>
+<a href="#2338" id="2338">2338</a>
+<a href="#2339" id="2339">2339</a>
+<a href="#2340" id="2340">2340</a>
+<a href="#2341" id="2341">2341</a>
+<a href="#2342" id="2342">2342</a>
+<a href="#2343" id="2343">2343</a>
+<a href="#2344" id="2344">2344</a>
+<a href="#2345" id="2345">2345</a>
+<a href="#2346" id="2346">2346</a>
+<a href="#2347" id="2347">2347</a>
+<a href="#2348" id="2348">2348</a>
+<a href="#2349" id="2349">2349</a>
+<a href="#2350" id="2350">2350</a>
+<a href="#2351" id="2351">2351</a>
+<a href="#2352" id="2352">2352</a>
+<a href="#2353" id="2353">2353</a>
+<a href="#2354" id="2354">2354</a>
+<a href="#2355" id="2355">2355</a>
+<a href="#2356" id="2356">2356</a>
+<a href="#2357" id="2357">2357</a>
+<a href="#2358" id="2358">2358</a>
+<a href="#2359" id="2359">2359</a>
+<a href="#2360" id="2360">2360</a>
+<a href="#2361" id="2361">2361</a>
+<a href="#2362" id="2362">2362</a>
+<a href="#2363" id="2363">2363</a>
+<a href="#2364" id="2364">2364</a>
+<a href="#2365" id="2365">2365</a>
+<a href="#2366" id="2366">2366</a>
+<a href="#2367" id="2367">2367</a>
+<a href="#2368" id="2368">2368</a>
+<a href="#2369" id="2369">2369</a>
+<a href="#2370" id="2370">2370</a>
+<a href="#2371" id="2371">2371</a>
+<a href="#2372" id="2372">2372</a>
+<a href="#2373" id="2373">2373</a>
+<a href="#2374" id="2374">2374</a>
+<a href="#2375" id="2375">2375</a>
+<a href="#2376" id="2376">2376</a>
+<a href="#2377" id="2377">2377</a>
+<a href="#2378" id="2378">2378</a>
+<a href="#2379" id="2379">2379</a>
+<a href="#2380" id="2380">2380</a>
+<a href="#2381" id="2381">2381</a>
+<a href="#2382" id="2382">2382</a>
+<a href="#2383" id="2383">2383</a>
+<a href="#2384" id="2384">2384</a>
+<a href="#2385" id="2385">2385</a>
+<a href="#2386" id="2386">2386</a>
+<a href="#2387" id="2387">2387</a>
+<a href="#2388" id="2388">2388</a>
+<a href="#2389" id="2389">2389</a>
+<a href="#2390" id="2390">2390</a>
+<a href="#2391" id="2391">2391</a>
+<a href="#2392" id="2392">2392</a>
+<a href="#2393" id="2393">2393</a>
+<a href="#2394" id="2394">2394</a>
+<a href="#2395" id="2395">2395</a>
+<a href="#2396" id="2396">2396</a>
+<a href="#2397" id="2397">2397</a>
+<a href="#2398" id="2398">2398</a>
+<a href="#2399" id="2399">2399</a>
+<a href="#2400" id="2400">2400</a>
+<a href="#2401" id="2401">2401</a>
+<a href="#2402" id="2402">2402</a>
+<a href="#2403" id="2403">2403</a>
+<a href="#2404" id="2404">2404</a>
+<a href="#2405" id="2405">2405</a>
+<a href="#2406" id="2406">2406</a>
+<a href="#2407" id="2407">2407</a>
+<a href="#2408" id="2408">2408</a>
+<a href="#2409" id="2409">2409</a>
+<a href="#2410" id="2410">2410</a>
+<a href="#2411" id="2411">2411</a>
+<a href="#2412" id="2412">2412</a>
+<a href="#2413" id="2413">2413</a>
+<a href="#2414" id="2414">2414</a>
+<a href="#2415" id="2415">2415</a>
+<a href="#2416" id="2416">2416</a>
+<a href="#2417" id="2417">2417</a>
+<a href="#2418" id="2418">2418</a>
+<a href="#2419" id="2419">2419</a>
+<a href="#2420" id="2420">2420</a>
+<a href="#2421" id="2421">2421</a>
+<a href="#2422" id="2422">2422</a>
+<a href="#2423" id="2423">2423</a>
+<a href="#2424" id="2424">2424</a>
+<a href="#2425" id="2425">2425</a>
+<a href="#2426" id="2426">2426</a>
+<a href="#2427" id="2427">2427</a>
+<a href="#2428" id="2428">2428</a>
+<a href="#2429" id="2429">2429</a>
+<a href="#2430" id="2430">2430</a>
+<a href="#2431" id="2431">2431</a>
+<a href="#2432" id="2432">2432</a>
+<a href="#2433" id="2433">2433</a>
+<a href="#2434" id="2434">2434</a>
+<a href="#2435" id="2435">2435</a>
+<a href="#2436" id="2436">2436</a>
+<a href="#2437" id="2437">2437</a>
+<a href="#2438" id="2438">2438</a>
+<a href="#2439" id="2439">2439</a>
+<a href="#2440" id="2440">2440</a>
+<a href="#2441" id="2441">2441</a>
+<a href="#2442" id="2442">2442</a>
+<a href="#2443" id="2443">2443</a>
+<a href="#2444" id="2444">2444</a>
+<a href="#2445" id="2445">2445</a>
+<a href="#2446" id="2446">2446</a>
+<a href="#2447" id="2447">2447</a>
+<a href="#2448" id="2448">2448</a>
+<a href="#2449" id="2449">2449</a>
+<a href="#2450" id="2450">2450</a>
+<a href="#2451" id="2451">2451</a>
+<a href="#2452" id="2452">2452</a>
+<a href="#2453" id="2453">2453</a>
+<a href="#2454" id="2454">2454</a>
+<a href="#2455" id="2455">2455</a>
+<a href="#2456" id="2456">2456</a>
+<a href="#2457" id="2457">2457</a>
+<a href="#2458" id="2458">2458</a>
+<a href="#2459" id="2459">2459</a>
+<a href="#2460" id="2460">2460</a>
+<a href="#2461" id="2461">2461</a>
+<a href="#2462" id="2462">2462</a>
+<a href="#2463" id="2463">2463</a>
+<a href="#2464" id="2464">2464</a>
+<a href="#2465" id="2465">2465</a>
+<a href="#2466" id="2466">2466</a>
+<a href="#2467" id="2467">2467</a>
+<a href="#2468" id="2468">2468</a>
+<a href="#2469" id="2469">2469</a>
+<a href="#2470" id="2470">2470</a>
+<a href="#2471" id="2471">2471</a>
+<a href="#2472" id="2472">2472</a>
+<a href="#2473" id="2473">2473</a>
+<a href="#2474" id="2474">2474</a>
+<a href="#2475" id="2475">2475</a>
+<a href="#2476" id="2476">2476</a>
+<a href="#2477" id="2477">2477</a>
+<a href="#2478" id="2478">2478</a>
+<a href="#2479" id="2479">2479</a>
+<a href="#2480" id="2480">2480</a>
+<a href="#2481" id="2481">2481</a>
+<a href="#2482" id="2482">2482</a>
+<a href="#2483" id="2483">2483</a>
+<a href="#2484" id="2484">2484</a>
+<a href="#2485" id="2485">2485</a>
+<a href="#2486" id="2486">2486</a>
+<a href="#2487" id="2487">2487</a>
+<a href="#2488" id="2488">2488</a>
+<a href="#2489" id="2489">2489</a>
+<a href="#2490" id="2490">2490</a>
+<a href="#2491" id="2491">2491</a>
+<a href="#2492" id="2492">2492</a>
+<a href="#2493" id="2493">2493</a>
+<a href="#2494" id="2494">2494</a>
+<a href="#2495" id="2495">2495</a>
+<a href="#2496" id="2496">2496</a>
+<a href="#2497" id="2497">2497</a>
+<a href="#2498" id="2498">2498</a>
+<a href="#2499" id="2499">2499</a>
+<a href="#2500" id="2500">2500</a>
+<a href="#2501" id="2501">2501</a>
+<a href="#2502" id="2502">2502</a>
+<a href="#2503" id="2503">2503</a>
+<a href="#2504" id="2504">2504</a>
+<a href="#2505" id="2505">2505</a>
+<a href="#2506" id="2506">2506</a>
+<a href="#2507" id="2507">2507</a>
+<a href="#2508" id="2508">2508</a>
+<a href="#2509" id="2509">2509</a>
+<a href="#2510" id="2510">2510</a>
+<a href="#2511" id="2511">2511</a>
+<a href="#2512" id="2512">2512</a>
+<a href="#2513" id="2513">2513</a>
+<a href="#2514" id="2514">2514</a>
+<a href="#2515" id="2515">2515</a>
+<a href="#2516" id="2516">2516</a>
+<a href="#2517" id="2517">2517</a>
+<a href="#2518" id="2518">2518</a>
+<a href="#2519" id="2519">2519</a>
+<a href="#2520" id="2520">2520</a>
+<a href="#2521" id="2521">2521</a>
+<a href="#2522" id="2522">2522</a>
+<a href="#2523" id="2523">2523</a>
+<a href="#2524" id="2524">2524</a>
+<a href="#2525" id="2525">2525</a>
+<a href="#2526" id="2526">2526</a>
+<a href="#2527" id="2527">2527</a>
+<a href="#2528" id="2528">2528</a>
+<a href="#2529" id="2529">2529</a>
+<a href="#2530" id="2530">2530</a>
+<a href="#2531" id="2531">2531</a>
+<a href="#2532" id="2532">2532</a>
+<a href="#2533" id="2533">2533</a>
+<a href="#2534" id="2534">2534</a>
+<a href="#2535" id="2535">2535</a>
+<a href="#2536" id="2536">2536</a>
+<a href="#2537" id="2537">2537</a>
+<a href="#2538" id="2538">2538</a>
+<a href="#2539" id="2539">2539</a>
+<a href="#2540" id="2540">2540</a>
+<a href="#2541" id="2541">2541</a>
+<a href="#2542" id="2542">2542</a>
+<a href="#2543" id="2543">2543</a>
+<a href="#2544" id="2544">2544</a>
+<a href="#2545" id="2545">2545</a>
+<a href="#2546" id="2546">2546</a>
+<a href="#2547" id="2547">2547</a>
+<a href="#2548" id="2548">2548</a>
+<a href="#2549" id="2549">2549</a>
+<a href="#2550" id="2550">2550</a>
+<a href="#2551" id="2551">2551</a>
+<a href="#2552" id="2552">2552</a>
+<a href="#2553" id="2553">2553</a>
+<a href="#2554" id="2554">2554</a>
+<a href="#2555" id="2555">2555</a>
+<a href="#2556" id="2556">2556</a>
+<a href="#2557" id="2557">2557</a>
+<a href="#2558" id="2558">2558</a>
+<a href="#2559" id="2559">2559</a>
+<a href="#2560" id="2560">2560</a>
+<a href="#2561" id="2561">2561</a>
+<a href="#2562" id="2562">2562</a>
+<a href="#2563" id="2563">2563</a>
+<a href="#2564" id="2564">2564</a>
+<a href="#2565" id="2565">2565</a>
+<a href="#2566" id="2566">2566</a>
+<a href="#2567" id="2567">2567</a>
+<a href="#2568" id="2568">2568</a>
+<a href="#2569" id="2569">2569</a>
+<a href="#2570" id="2570">2570</a>
+<a href="#2571" id="2571">2571</a>
+<a href="#2572" id="2572">2572</a>
+<a href="#2573" id="2573">2573</a>
+<a href="#2574" id="2574">2574</a>
+<a href="#2575" id="2575">2575</a>
+<a href="#2576" id="2576">2576</a>
+<a href="#2577" id="2577">2577</a>
+<a href="#2578" id="2578">2578</a>
+<a href="#2579" id="2579">2579</a>
+<a href="#2580" id="2580">2580</a>
+<a href="#2581" id="2581">2581</a>
+<a href="#2582" id="2582">2582</a>
+<a href="#2583" id="2583">2583</a>
+<a href="#2584" id="2584">2584</a>
+<a href="#2585" id="2585">2585</a>
+<a href="#2586" id="2586">2586</a>
+<a href="#2587" id="2587">2587</a>
+<a href="#2588" id="2588">2588</a>
+<a href="#2589" id="2589">2589</a>
+<a href="#2590" id="2590">2590</a>
+<a href="#2591" id="2591">2591</a>
+<a href="#2592" id="2592">2592</a>
+<a href="#2593" id="2593">2593</a>
+<a href="#2594" id="2594">2594</a>
+<a href="#2595" id="2595">2595</a>
+<a href="#2596" id="2596">2596</a>
+<a href="#2597" id="2597">2597</a>
+<a href="#2598" id="2598">2598</a>
+<a href="#2599" id="2599">2599</a>
+<a href="#2600" id="2600">2600</a>
+<a href="#2601" id="2601">2601</a>
+<a href="#2602" id="2602">2602</a>
+<a href="#2603" id="2603">2603</a>
+<a href="#2604" id="2604">2604</a>
+<a href="#2605" id="2605">2605</a>
+<a href="#2606" id="2606">2606</a>
+<a href="#2607" id="2607">2607</a>
+<a href="#2608" id="2608">2608</a>
+<a href="#2609" id="2609">2609</a>
+<a href="#2610" id="2610">2610</a>
+<a href="#2611" id="2611">2611</a>
+<a href="#2612" id="2612">2612</a>
+<a href="#2613" id="2613">2613</a>
+<a href="#2614" id="2614">2614</a>
+<a href="#2615" id="2615">2615</a>
+<a href="#2616" id="2616">2616</a>
+<a href="#2617" id="2617">2617</a>
+<a href="#2618" id="2618">2618</a>
+<a href="#2619" id="2619">2619</a>
+<a href="#2620" id="2620">2620</a>
+<a href="#2621" id="2621">2621</a>
+<a href="#2622" id="2622">2622</a>
+<a href="#2623" id="2623">2623</a>
+<a href="#2624" id="2624">2624</a>
+<a href="#2625" id="2625">2625</a>
+<a href="#2626" id="2626">2626</a>
+<a href="#2627" id="2627">2627</a>
+<a href="#2628" id="2628">2628</a>
+<a href="#2629" id="2629">2629</a>
+<a href="#2630" id="2630">2630</a>
+<a href="#2631" id="2631">2631</a>
+<a href="#2632" id="2632">2632</a>
+<a href="#2633" id="2633">2633</a>
+<a href="#2634" id="2634">2634</a>
+<a href="#2635" id="2635">2635</a>
+<a href="#2636" id="2636">2636</a>
+<a href="#2637" id="2637">2637</a>
+<a href="#2638" id="2638">2638</a>
+<a href="#2639" id="2639">2639</a>
+<a href="#2640" id="2640">2640</a>
+<a href="#2641" id="2641">2641</a>
+<a href="#2642" id="2642">2642</a>
+<a href="#2643" id="2643">2643</a>
+<a href="#2644" id="2644">2644</a>
+<a href="#2645" id="2645">2645</a>
+<a href="#2646" id="2646">2646</a>
+<a href="#2647" id="2647">2647</a>
+<a href="#2648" id="2648">2648</a>
+<a href="#2649" id="2649">2649</a>
+<a href="#2650" id="2650">2650</a>
+<a href="#2651" id="2651">2651</a>
+<a href="#2652" id="2652">2652</a>
+<a href="#2653" id="2653">2653</a>
+<a href="#2654" id="2654">2654</a>
+<a href="#2655" id="2655">2655</a>
+<a href="#2656" id="2656">2656</a>
+<a href="#2657" id="2657">2657</a>
+<a href="#2658" id="2658">2658</a>
+<a href="#2659" id="2659">2659</a>
+<a href="#2660" id="2660">2660</a>
+<a href="#2661" id="2661">2661</a>
+<a href="#2662" id="2662">2662</a>
+<a href="#2663" id="2663">2663</a>
+<a href="#2664" id="2664">2664</a>
+<a href="#2665" id="2665">2665</a>
+<a href="#2666" id="2666">2666</a>
+<a href="#2667" id="2667">2667</a>
+<a href="#2668" id="2668">2668</a>
+<a href="#2669" id="2669">2669</a>
+<a href="#2670" id="2670">2670</a>
+<a href="#2671" id="2671">2671</a>
+<a href="#2672" id="2672">2672</a>
+<a href="#2673" id="2673">2673</a>
+<a href="#2674" id="2674">2674</a>
+<a href="#2675" id="2675">2675</a>
+<a href="#2676" id="2676">2676</a>
+<a href="#2677" id="2677">2677</a>
+<a href="#2678" id="2678">2678</a>
+<a href="#2679" id="2679">2679</a>
+<a href="#2680" id="2680">2680</a>
+<a href="#2681" id="2681">2681</a>
+<a href="#2682" id="2682">2682</a>
+<a href="#2683" id="2683">2683</a>
+<a href="#2684" id="2684">2684</a>
+<a href="#2685" id="2685">2685</a>
+<a href="#2686" id="2686">2686</a>
+<a href="#2687" id="2687">2687</a>
+<a href="#2688" id="2688">2688</a>
+<a href="#2689" id="2689">2689</a>
+<a href="#2690" id="2690">2690</a>
+<a href="#2691" id="2691">2691</a>
+<a href="#2692" id="2692">2692</a>
+<a href="#2693" id="2693">2693</a>
+<a href="#2694" id="2694">2694</a>
+<a href="#2695" id="2695">2695</a>
+<a href="#2696" id="2696">2696</a>
+<a href="#2697" id="2697">2697</a>
+<a href="#2698" id="2698">2698</a>
+<a href="#2699" id="2699">2699</a>
+<a href="#2700" id="2700">2700</a>
+<a href="#2701" id="2701">2701</a>
+<a href="#2702" id="2702">2702</a>
+<a href="#2703" id="2703">2703</a>
+<a href="#2704" id="2704">2704</a>
+<a href="#2705" id="2705">2705</a>
+<a href="#2706" id="2706">2706</a>
+<a href="#2707" id="2707">2707</a>
+<a href="#2708" id="2708">2708</a>
+<a href="#2709" id="2709">2709</a>
+<a href="#2710" id="2710">2710</a>
+<a href="#2711" id="2711">2711</a>
+<a href="#2712" id="2712">2712</a>
+<a href="#2713" id="2713">2713</a>
+<a href="#2714" id="2714">2714</a>
+<a href="#2715" id="2715">2715</a>
+<a href="#2716" id="2716">2716</a>
+<a href="#2717" id="2717">2717</a>
+<a href="#2718" id="2718">2718</a>
+<a href="#2719" id="2719">2719</a>
+<a href="#2720" id="2720">2720</a>
+<a href="#2721" id="2721">2721</a>
+<a href="#2722" id="2722">2722</a>
+<a href="#2723" id="2723">2723</a>
+<a href="#2724" id="2724">2724</a>
+<a href="#2725" id="2725">2725</a>
+<a href="#2726" id="2726">2726</a>
+<a href="#2727" id="2727">2727</a>
+<a href="#2728" id="2728">2728</a>
+<a href="#2729" id="2729">2729</a>
+<a href="#2730" id="2730">2730</a>
+<a href="#2731" id="2731">2731</a>
+<a href="#2732" id="2732">2732</a>
+<a href="#2733" id="2733">2733</a>
+<a href="#2734" id="2734">2734</a>
+<a href="#2735" id="2735">2735</a>
+<a href="#2736" id="2736">2736</a>
+<a href="#2737" id="2737">2737</a>
+<a href="#2738" id="2738">2738</a>
+<a href="#2739" id="2739">2739</a>
+<a href="#2740" id="2740">2740</a>
+<a href="#2741" id="2741">2741</a>
+<a href="#2742" id="2742">2742</a>
+<a href="#2743" id="2743">2743</a>
+<a href="#2744" id="2744">2744</a>
+<a href="#2745" id="2745">2745</a>
+<a href="#2746" id="2746">2746</a>
+<a href="#2747" id="2747">2747</a>
+<a href="#2748" id="2748">2748</a>
+<a href="#2749" id="2749">2749</a>
+<a href="#2750" id="2750">2750</a>
+<a href="#2751" id="2751">2751</a>
+<a href="#2752" id="2752">2752</a>
+<a href="#2753" id="2753">2753</a>
+<a href="#2754" id="2754">2754</a>
+<a href="#2755" id="2755">2755</a>
+<a href="#2756" id="2756">2756</a>
+<a href="#2757" id="2757">2757</a>
+<a href="#2758" id="2758">2758</a>
+<a href="#2759" id="2759">2759</a>
+<a href="#2760" id="2760">2760</a>
+<a href="#2761" id="2761">2761</a>
+<a href="#2762" id="2762">2762</a>
+<a href="#2763" id="2763">2763</a>
+<a href="#2764" id="2764">2764</a>
+<a href="#2765" id="2765">2765</a>
+<a href="#2766" id="2766">2766</a>
+<a href="#2767" id="2767">2767</a>
+<a href="#2768" id="2768">2768</a>
+<a href="#2769" id="2769">2769</a>
+<a href="#2770" id="2770">2770</a>
+<a href="#2771" id="2771">2771</a>
+<a href="#2772" id="2772">2772</a>
+<a href="#2773" id="2773">2773</a>
+<a href="#2774" id="2774">2774</a>
+<a href="#2775" id="2775">2775</a>
+<a href="#2776" id="2776">2776</a>
+<a href="#2777" id="2777">2777</a>
+<a href="#2778" id="2778">2778</a>
+<a href="#2779" id="2779">2779</a>
+<a href="#2780" id="2780">2780</a>
+<a href="#2781" id="2781">2781</a>
+<a href="#2782" id="2782">2782</a>
+<a href="#2783" id="2783">2783</a>
+<a href="#2784" id="2784">2784</a>
+<a href="#2785" id="2785">2785</a>
+<a href="#2786" id="2786">2786</a>
+<a href="#2787" id="2787">2787</a>
+<a href="#2788" id="2788">2788</a>
+<a href="#2789" id="2789">2789</a>
+<a href="#2790" id="2790">2790</a>
+<a href="#2791" id="2791">2791</a>
+<a href="#2792" id="2792">2792</a>
+<a href="#2793" id="2793">2793</a>
+<a href="#2794" id="2794">2794</a>
+<a href="#2795" id="2795">2795</a>
+<a href="#2796" id="2796">2796</a>
+<a href="#2797" id="2797">2797</a>
+<a href="#2798" id="2798">2798</a>
+<a href="#2799" id="2799">2799</a>
+<a href="#2800" id="2800">2800</a>
+<a href="#2801" id="2801">2801</a>
+<a href="#2802" id="2802">2802</a>
+<a href="#2803" id="2803">2803</a>
+<a href="#2804" id="2804">2804</a>
+<a href="#2805" id="2805">2805</a>
+<a href="#2806" id="2806">2806</a>
+<a href="#2807" id="2807">2807</a>
+<a href="#2808" id="2808">2808</a>
+<a href="#2809" id="2809">2809</a>
+<a href="#2810" id="2810">2810</a>
+<a href="#2811" id="2811">2811</a>
+<a href="#2812" id="2812">2812</a>
+<a href="#2813" id="2813">2813</a>
+<a href="#2814" id="2814">2814</a>
+<a href="#2815" id="2815">2815</a>
+<a href="#2816" id="2816">2816</a>
+<a href="#2817" id="2817">2817</a>
+<a href="#2818" id="2818">2818</a>
+<a href="#2819" id="2819">2819</a>
+<a href="#2820" id="2820">2820</a>
+<a href="#2821" id="2821">2821</a>
+<a href="#2822" id="2822">2822</a>
+<a href="#2823" id="2823">2823</a>
+<a href="#2824" id="2824">2824</a>
+<a href="#2825" id="2825">2825</a>
+<a href="#2826" id="2826">2826</a>
+<a href="#2827" id="2827">2827</a>
+<a href="#2828" id="2828">2828</a>
+<a href="#2829" id="2829">2829</a>
+<a href="#2830" id="2830">2830</a>
+<a href="#2831" id="2831">2831</a>
+<a href="#2832" id="2832">2832</a>
+<a href="#2833" id="2833">2833</a>
+<a href="#2834" id="2834">2834</a>
+<a href="#2835" id="2835">2835</a>
+<a href="#2836" id="2836">2836</a>
+<a href="#2837" id="2837">2837</a>
+<a href="#2838" id="2838">2838</a>
+<a href="#2839" id="2839">2839</a>
+<a href="#2840" id="2840">2840</a>
+<a href="#2841" id="2841">2841</a>
+<a href="#2842" id="2842">2842</a>
+<a href="#2843" id="2843">2843</a>
+<a href="#2844" id="2844">2844</a>
+<a href="#2845" id="2845">2845</a>
+<a href="#2846" id="2846">2846</a>
+<a href="#2847" id="2847">2847</a>
+<a href="#2848" id="2848">2848</a>
+<a href="#2849" id="2849">2849</a>
+<a href="#2850" id="2850">2850</a>
+<a href="#2851" id="2851">2851</a>
+<a href="#2852" id="2852">2852</a>
+<a href="#2853" id="2853">2853</a>
+<a href="#2854" id="2854">2854</a>
+<a href="#2855" id="2855">2855</a>
+<a href="#2856" id="2856">2856</a>
+<a href="#2857" id="2857">2857</a>
+<a href="#2858" id="2858">2858</a>
+<a href="#2859" id="2859">2859</a>
+<a href="#2860" id="2860">2860</a>
+<a href="#2861" id="2861">2861</a>
+<a href="#2862" id="2862">2862</a>
+<a href="#2863" id="2863">2863</a>
+<a href="#2864" id="2864">2864</a>
+<a href="#2865" id="2865">2865</a>
+<a href="#2866" id="2866">2866</a>
+<a href="#2867" id="2867">2867</a>
+<a href="#2868" id="2868">2868</a>
+<a href="#2869" id="2869">2869</a>
+<a href="#2870" id="2870">2870</a>
+<a href="#2871" id="2871">2871</a>
+<a href="#2872" id="2872">2872</a>
+<a href="#2873" id="2873">2873</a>
+<a href="#2874" id="2874">2874</a>
+<a href="#2875" id="2875">2875</a>
+<a href="#2876" id="2876">2876</a>
+<a href="#2877" id="2877">2877</a>
+<a href="#2878" id="2878">2878</a>
+<a href="#2879" id="2879">2879</a>
+<a href="#2880" id="2880">2880</a>
+<a href="#2881" id="2881">2881</a>
+<a href="#2882" id="2882">2882</a>
+<a href="#2883" id="2883">2883</a>
+<a href="#2884" id="2884">2884</a>
+<a href="#2885" id="2885">2885</a>
+<a href="#2886" id="2886">2886</a>
+<a href="#2887" id="2887">2887</a>
+<a href="#2888" id="2888">2888</a>
+<a href="#2889" id="2889">2889</a>
+<a href="#2890" id="2890">2890</a>
+<a href="#2891" id="2891">2891</a>
+<a href="#2892" id="2892">2892</a>
+<a href="#2893" id="2893">2893</a>
+<a href="#2894" id="2894">2894</a>
+<a href="#2895" id="2895">2895</a>
+<a href="#2896" id="2896">2896</a>
+<a href="#2897" id="2897">2897</a>
+<a href="#2898" id="2898">2898</a>
+<a href="#2899" id="2899">2899</a>
+<a href="#2900" id="2900">2900</a>
+<a href="#2901" id="2901">2901</a>
+<a href="#2902" id="2902">2902</a>
+<a href="#2903" id="2903">2903</a>
+<a href="#2904" id="2904">2904</a>
+<a href="#2905" id="2905">2905</a>
+<a href="#2906" id="2906">2906</a>
+<a href="#2907" id="2907">2907</a>
+<a href="#2908" id="2908">2908</a>
+<a href="#2909" id="2909">2909</a>
+<a href="#2910" id="2910">2910</a>
+<a href="#2911" id="2911">2911</a>
+<a href="#2912" id="2912">2912</a>
+<a href="#2913" id="2913">2913</a>
+<a href="#2914" id="2914">2914</a>
+<a href="#2915" id="2915">2915</a>
+<a href="#2916" id="2916">2916</a>
+<a href="#2917" id="2917">2917</a>
+<a href="#2918" id="2918">2918</a>
+<a href="#2919" id="2919">2919</a>
+<a href="#2920" id="2920">2920</a>
+<a href="#2921" id="2921">2921</a>
+<a href="#2922" id="2922">2922</a>
+<a href="#2923" id="2923">2923</a>
+<a href="#2924" id="2924">2924</a>
+<a href="#2925" id="2925">2925</a>
+<a href="#2926" id="2926">2926</a>
+<a href="#2927" id="2927">2927</a>
+<a href="#2928" id="2928">2928</a>
+<a href="#2929" id="2929">2929</a>
+<a href="#2930" id="2930">2930</a>
+<a href="#2931" id="2931">2931</a>
+<a href="#2932" id="2932">2932</a>
+<a href="#2933" id="2933">2933</a>
+<a href="#2934" id="2934">2934</a>
+<a href="#2935" id="2935">2935</a>
+<a href="#2936" id="2936">2936</a>
+<a href="#2937" id="2937">2937</a>
+<a href="#2938" id="2938">2938</a>
+<a href="#2939" id="2939">2939</a>
+<a href="#2940" id="2940">2940</a>
+<a href="#2941" id="2941">2941</a>
+<a href="#2942" id="2942">2942</a>
+<a href="#2943" id="2943">2943</a>
+<a href="#2944" id="2944">2944</a>
+<a href="#2945" id="2945">2945</a>
+<a href="#2946" id="2946">2946</a>
+<a href="#2947" id="2947">2947</a>
+<a href="#2948" id="2948">2948</a>
+<a href="#2949" id="2949">2949</a>
+<a href="#2950" id="2950">2950</a>
+<a href="#2951" id="2951">2951</a>
+<a href="#2952" id="2952">2952</a>
+<a href="#2953" id="2953">2953</a>
+<a href="#2954" id="2954">2954</a>
+<a href="#2955" id="2955">2955</a>
+<a href="#2956" id="2956">2956</a>
+<a href="#2957" id="2957">2957</a>
+<a href="#2958" id="2958">2958</a>
+<a href="#2959" id="2959">2959</a>
+<a href="#2960" id="2960">2960</a>
+<a href="#2961" id="2961">2961</a>
+<a href="#2962" id="2962">2962</a>
+<a href="#2963" id="2963">2963</a>
+<a href="#2964" id="2964">2964</a>
+<a href="#2965" id="2965">2965</a>
+<a href="#2966" id="2966">2966</a>
+<a href="#2967" id="2967">2967</a>
+<a href="#2968" id="2968">2968</a>
+<a href="#2969" id="2969">2969</a>
+<a href="#2970" id="2970">2970</a>
+<a href="#2971" id="2971">2971</a>
+<a href="#2972" id="2972">2972</a>
+<a href="#2973" id="2973">2973</a>
+<a href="#2974" id="2974">2974</a>
+<a href="#2975" id="2975">2975</a>
+<a href="#2976" id="2976">2976</a>
+<a href="#2977" id="2977">2977</a>
+<a href="#2978" id="2978">2978</a>
+<a href="#2979" id="2979">2979</a>
+<a href="#2980" id="2980">2980</a>
+<a href="#2981" id="2981">2981</a>
+<a href="#2982" id="2982">2982</a>
+<a href="#2983" id="2983">2983</a>
+<a href="#2984" id="2984">2984</a>
+<a href="#2985" id="2985">2985</a>
+<a href="#2986" id="2986">2986</a>
+<a href="#2987" id="2987">2987</a>
+<a href="#2988" id="2988">2988</a>
+<a href="#2989" id="2989">2989</a>
+<a href="#2990" id="2990">2990</a>
+<a href="#2991" id="2991">2991</a>
+<a href="#2992" id="2992">2992</a>
+<a href="#2993" id="2993">2993</a>
+<a href="#2994" id="2994">2994</a>
+<a href="#2995" id="2995">2995</a>
+<a href="#2996" id="2996">2996</a>
+<a href="#2997" id="2997">2997</a>
+<a href="#2998" id="2998">2998</a>
+<a href="#2999" id="2999">2999</a>
+<a href="#3000" id="3000">3000</a>
+<a href="#3001" id="3001">3001</a>
+<a href="#3002" id="3002">3002</a>
+<a href="#3003" id="3003">3003</a>
+<a href="#3004" id="3004">3004</a>
+<a href="#3005" id="3005">3005</a>
+<a href="#3006" id="3006">3006</a>
+<a href="#3007" id="3007">3007</a>
+<a href="#3008" id="3008">3008</a>
+<a href="#3009" id="3009">3009</a>
+<a href="#3010" id="3010">3010</a>
+<a href="#3011" id="3011">3011</a>
+<a href="#3012" id="3012">3012</a>
+<a href="#3013" id="3013">3013</a>
+<a href="#3014" id="3014">3014</a>
+<a href="#3015" id="3015">3015</a>
+<a href="#3016" id="3016">3016</a>
+<a href="#3017" id="3017">3017</a>
+<a href="#3018" id="3018">3018</a>
+<a href="#3019" id="3019">3019</a>
+<a href="#3020" id="3020">3020</a>
+<a href="#3021" id="3021">3021</a>
+<a href="#3022" id="3022">3022</a>
+<a href="#3023" id="3023">3023</a>
+<a href="#3024" id="3024">3024</a>
+<a href="#3025" id="3025">3025</a>
+<a href="#3026" id="3026">3026</a>
+<a href="#3027" id="3027">3027</a>
+<a href="#3028" id="3028">3028</a>
+<a href="#3029" id="3029">3029</a>
+<a href="#3030" id="3030">3030</a>
+<a href="#3031" id="3031">3031</a>
+<a href="#3032" id="3032">3032</a>
+<a href="#3033" id="3033">3033</a>
+<a href="#3034" id="3034">3034</a>
+<a href="#3035" id="3035">3035</a>
+<a href="#3036" id="3036">3036</a>
+<a href="#3037" id="3037">3037</a>
+<a href="#3038" id="3038">3038</a>
+<a href="#3039" id="3039">3039</a>
+<a href="#3040" id="3040">3040</a>
+<a href="#3041" id="3041">3041</a>
+<a href="#3042" id="3042">3042</a>
+<a href="#3043" id="3043">3043</a>
+<a href="#3044" id="3044">3044</a>
+<a href="#3045" id="3045">3045</a>
+<a href="#3046" id="3046">3046</a>
+<a href="#3047" id="3047">3047</a>
+<a href="#3048" id="3048">3048</a>
+<a href="#3049" id="3049">3049</a>
+<a href="#3050" id="3050">3050</a>
+<a href="#3051" id="3051">3051</a>
+<a href="#3052" id="3052">3052</a>
+<a href="#3053" id="3053">3053</a>
+<a href="#3054" id="3054">3054</a>
+<a href="#3055" id="3055">3055</a>
+<a href="#3056" id="3056">3056</a>
+<a href="#3057" id="3057">3057</a>
+<a href="#3058" id="3058">3058</a>
+<a href="#3059" id="3059">3059</a>
+<a href="#3060" id="3060">3060</a>
+<a href="#3061" id="3061">3061</a>
+<a href="#3062" id="3062">3062</a>
+<a href="#3063" id="3063">3063</a>
+<a href="#3064" id="3064">3064</a>
+<a href="#3065" id="3065">3065</a>
+<a href="#3066" id="3066">3066</a>
+<a href="#3067" id="3067">3067</a>
+<a href="#3068" id="3068">3068</a>
+<a href="#3069" id="3069">3069</a>
+<a href="#3070" id="3070">3070</a>
+<a href="#3071" id="3071">3071</a>
+<a href="#3072" id="3072">3072</a>
+<a href="#3073" id="3073">3073</a>
+<a href="#3074" id="3074">3074</a>
+<a href="#3075" id="3075">3075</a>
+<a href="#3076" id="3076">3076</a>
+<a href="#3077" id="3077">3077</a>
+<a href="#3078" id="3078">3078</a>
+<a href="#3079" id="3079">3079</a>
+<a href="#3080" id="3080">3080</a>
+<a href="#3081" id="3081">3081</a>
+<a href="#3082" id="3082">3082</a>
+<a href="#3083" id="3083">3083</a>
+<a href="#3084" id="3084">3084</a>
+<a href="#3085" id="3085">3085</a>
+<a href="#3086" id="3086">3086</a>
+<a href="#3087" id="3087">3087</a>
+<a href="#3088" id="3088">3088</a>
+<a href="#3089" id="3089">3089</a>
+<a href="#3090" id="3090">3090</a>
+<a href="#3091" id="3091">3091</a>
+<a href="#3092" id="3092">3092</a>
+<a href="#3093" id="3093">3093</a>
+<a href="#3094" id="3094">3094</a>
+<a href="#3095" id="3095">3095</a>
+<a href="#3096" id="3096">3096</a>
+<a href="#3097" id="3097">3097</a>
+<a href="#3098" id="3098">3098</a>
+<a href="#3099" id="3099">3099</a>
+<a href="#3100" id="3100">3100</a>
+<a href="#3101" id="3101">3101</a>
+<a href="#3102" id="3102">3102</a>
+<a href="#3103" id="3103">3103</a>
+<a href="#3104" id="3104">3104</a>
+<a href="#3105" id="3105">3105</a>
+<a href="#3106" id="3106">3106</a>
+<a href="#3107" id="3107">3107</a>
+<a href="#3108" id="3108">3108</a>
+<a href="#3109" id="3109">3109</a>
+<a href="#3110" id="3110">3110</a>
+<a href="#3111" id="3111">3111</a>
+<a href="#3112" id="3112">3112</a>
+<a href="#3113" id="3113">3113</a>
+<a href="#3114" id="3114">3114</a>
+<a href="#3115" id="3115">3115</a>
+<a href="#3116" id="3116">3116</a>
+<a href="#3117" id="3117">3117</a>
+<a href="#3118" id="3118">3118</a>
+<a href="#3119" id="3119">3119</a>
+<a href="#3120" id="3120">3120</a>
+<a href="#3121" id="3121">3121</a>
+<a href="#3122" id="3122">3122</a>
+<a href="#3123" id="3123">3123</a>
+<a href="#3124" id="3124">3124</a>
+<a href="#3125" id="3125">3125</a>
+<a href="#3126" id="3126">3126</a>
+<a href="#3127" id="3127">3127</a>
+<a href="#3128" id="3128">3128</a>
+<a href="#3129" id="3129">3129</a>
+<a href="#3130" id="3130">3130</a>
+<a href="#3131" id="3131">3131</a>
+<a href="#3132" id="3132">3132</a>
+<a href="#3133" id="3133">3133</a>
+<a href="#3134" id="3134">3134</a>
+<a href="#3135" id="3135">3135</a>
+<a href="#3136" id="3136">3136</a>
+<a href="#3137" id="3137">3137</a>
+<a href="#3138" id="3138">3138</a>
+<a href="#3139" id="3139">3139</a>
+<a href="#3140" id="3140">3140</a>
+<a href="#3141" id="3141">3141</a>
+<a href="#3142" id="3142">3142</a>
+<a href="#3143" id="3143">3143</a>
+<a href="#3144" id="3144">3144</a>
+<a href="#3145" id="3145">3145</a>
+<a href="#3146" id="3146">3146</a>
+<a href="#3147" id="3147">3147</a>
+<a href="#3148" id="3148">3148</a>
+<a href="#3149" id="3149">3149</a>
+<a href="#3150" id="3150">3150</a>
+<a href="#3151" id="3151">3151</a>
+<a href="#3152" id="3152">3152</a>
+<a href="#3153" id="3153">3153</a>
+<a href="#3154" id="3154">3154</a>
+<a href="#3155" id="3155">3155</a>
+<a href="#3156" id="3156">3156</a>
+<a href="#3157" id="3157">3157</a>
+<a href="#3158" id="3158">3158</a>
+<a href="#3159" id="3159">3159</a>
+<a href="#3160" id="3160">3160</a>
+<a href="#3161" id="3161">3161</a>
+<a href="#3162" id="3162">3162</a>
+<a href="#3163" id="3163">3163</a>
+<a href="#3164" id="3164">3164</a>
+<a href="#3165" id="3165">3165</a>
+<a href="#3166" id="3166">3166</a>
+<a href="#3167" id="3167">3167</a>
+<a href="#3168" id="3168">3168</a>
+<a href="#3169" id="3169">3169</a>
+<a href="#3170" id="3170">3170</a>
+<a href="#3171" id="3171">3171</a>
+<a href="#3172" id="3172">3172</a>
+<a href="#3173" id="3173">3173</a>
+<a href="#3174" id="3174">3174</a>
+<a href="#3175" id="3175">3175</a>
+<a href="#3176" id="3176">3176</a>
+<a href="#3177" id="3177">3177</a>
+<a href="#3178" id="3178">3178</a>
+<a href="#3179" id="3179">3179</a>
+<a href="#3180" id="3180">3180</a>
+<a href="#3181" id="3181">3181</a>
+<a href="#3182" id="3182">3182</a>
+<a href="#3183" id="3183">3183</a>
+<a href="#3184" id="3184">3184</a>
+<a href="#3185" id="3185">3185</a>
+<a href="#3186" id="3186">3186</a>
+<a href="#3187" id="3187">3187</a>
+<a href="#3188" id="3188">3188</a>
+<a href="#3189" id="3189">3189</a>
+<a href="#3190" id="3190">3190</a>
+<a href="#3191" id="3191">3191</a>
+<a href="#3192" id="3192">3192</a>
+<a href="#3193" id="3193">3193</a>
+<a href="#3194" id="3194">3194</a>
+<a href="#3195" id="3195">3195</a>
+<a href="#3196" id="3196">3196</a>
+<a href="#3197" id="3197">3197</a>
+<a href="#3198" id="3198">3198</a>
+<a href="#3199" id="3199">3199</a>
+<a href="#3200" id="3200">3200</a>
+<a href="#3201" id="3201">3201</a>
+<a href="#3202" id="3202">3202</a>
+<a href="#3203" id="3203">3203</a>
+<a href="#3204" id="3204">3204</a>
+<a href="#3205" id="3205">3205</a>
+<a href="#3206" id="3206">3206</a>
+<a href="#3207" id="3207">3207</a>
+<a href="#3208" id="3208">3208</a>
+<a href="#3209" id="3209">3209</a>
+<a href="#3210" id="3210">3210</a>
+<a href="#3211" id="3211">3211</a>
+<a href="#3212" id="3212">3212</a>
+<a href="#3213" id="3213">3213</a>
+<a href="#3214" id="3214">3214</a>
+<a href="#3215" id="3215">3215</a>
+<a href="#3216" id="3216">3216</a>
+<a href="#3217" id="3217">3217</a>
+<a href="#3218" id="3218">3218</a>
+<a href="#3219" id="3219">3219</a>
+<a href="#3220" id="3220">3220</a>
+<a href="#3221" id="3221">3221</a>
+<a href="#3222" id="3222">3222</a>
+<a href="#3223" id="3223">3223</a>
+<a href="#3224" id="3224">3224</a>
+<a href="#3225" id="3225">3225</a>
+<a href="#3226" id="3226">3226</a>
+<a href="#3227" id="3227">3227</a>
+<a href="#3228" id="3228">3228</a>
+<a href="#3229" id="3229">3229</a>
+<a href="#3230" id="3230">3230</a>
+<a href="#3231" id="3231">3231</a>
+<a href="#3232" id="3232">3232</a>
+<a href="#3233" id="3233">3233</a>
+<a href="#3234" id="3234">3234</a>
+<a href="#3235" id="3235">3235</a>
+<a href="#3236" id="3236">3236</a>
+<a href="#3237" id="3237">3237</a>
+<a href="#3238" id="3238">3238</a>
+<a href="#3239" id="3239">3239</a>
+<a href="#3240" id="3240">3240</a>
+<a href="#3241" id="3241">3241</a>
+<a href="#3242" id="3242">3242</a>
+<a href="#3243" id="3243">3243</a>
+<a href="#3244" id="3244">3244</a>
+<a href="#3245" id="3245">3245</a>
+<a href="#3246" id="3246">3246</a>
+<a href="#3247" id="3247">3247</a>
+<a href="#3248" id="3248">3248</a>
+<a href="#3249" id="3249">3249</a>
+<a href="#3250" id="3250">3250</a>
+<a href="#3251" id="3251">3251</a>
+<a href="#3252" id="3252">3252</a>
+<a href="#3253" id="3253">3253</a>
+<a href="#3254" id="3254">3254</a>
+<a href="#3255" id="3255">3255</a>
+<a href="#3256" id="3256">3256</a>
+<a href="#3257" id="3257">3257</a>
+<a href="#3258" id="3258">3258</a>
+<a href="#3259" id="3259">3259</a>
+<a href="#3260" id="3260">3260</a>
+<a href="#3261" id="3261">3261</a>
+<a href="#3262" id="3262">3262</a>
+<a href="#3263" id="3263">3263</a>
+<a href="#3264" id="3264">3264</a>
+<a href="#3265" id="3265">3265</a>
+<a href="#3266" id="3266">3266</a>
+<a href="#3267" id="3267">3267</a>
+<a href="#3268" id="3268">3268</a>
+<a href="#3269" id="3269">3269</a>
+<a href="#3270" id="3270">3270</a>
+<a href="#3271" id="3271">3271</a>
+<a href="#3272" id="3272">3272</a>
+<a href="#3273" id="3273">3273</a>
+<a href="#3274" id="3274">3274</a>
+<a href="#3275" id="3275">3275</a>
+<a href="#3276" id="3276">3276</a>
+<a href="#3277" id="3277">3277</a>
+<a href="#3278" id="3278">3278</a>
+<a href="#3279" id="3279">3279</a>
+<a href="#3280" id="3280">3280</a>
+<a href="#3281" id="3281">3281</a>
+<a href="#3282" id="3282">3282</a>
+<a href="#3283" id="3283">3283</a>
+<a href="#3284" id="3284">3284</a>
+<a href="#3285" id="3285">3285</a>
+<a href="#3286" id="3286">3286</a>
+<a href="#3287" id="3287">3287</a>
+<a href="#3288" id="3288">3288</a>
+<a href="#3289" id="3289">3289</a>
+<a href="#3290" id="3290">3290</a>
+<a href="#3291" id="3291">3291</a>
+<a href="#3292" id="3292">3292</a>
+<a href="#3293" id="3293">3293</a>
+<a href="#3294" id="3294">3294</a>
+<a href="#3295" id="3295">3295</a>
+<a href="#3296" id="3296">3296</a>
+<a href="#3297" id="3297">3297</a>
+<a href="#3298" id="3298">3298</a>
+<a href="#3299" id="3299">3299</a>
+<a href="#3300" id="3300">3300</a>
+<a href="#3301" id="3301">3301</a>
+<a href="#3302" id="3302">3302</a>
+<a href="#3303" id="3303">3303</a>
+<a href="#3304" id="3304">3304</a>
+<a href="#3305" id="3305">3305</a>
+<a href="#3306" id="3306">3306</a>
+<a href="#3307" id="3307">3307</a>
+<a href="#3308" id="3308">3308</a>
+<a href="#3309" id="3309">3309</a>
+<a href="#3310" id="3310">3310</a>
+<a href="#3311" id="3311">3311</a>
+<a href="#3312" id="3312">3312</a>
+<a href="#3313" id="3313">3313</a>
+<a href="#3314" id="3314">3314</a>
+<a href="#3315" id="3315">3315</a>
+<a href="#3316" id="3316">3316</a>
+<a href="#3317" id="3317">3317</a>
+<a href="#3318" id="3318">3318</a>
+<a href="#3319" id="3319">3319</a>
+<a href="#3320" id="3320">3320</a>
+<a href="#3321" id="3321">3321</a>
+<a href="#3322" id="3322">3322</a>
+<a href="#3323" id="3323">3323</a>
+<a href="#3324" id="3324">3324</a>
+<a href="#3325" id="3325">3325</a>
+<a href="#3326" id="3326">3326</a>
+<a href="#3327" id="3327">3327</a>
+<a href="#3328" id="3328">3328</a>
+<a href="#3329" id="3329">3329</a>
+<a href="#3330" id="3330">3330</a>
+<a href="#3331" id="3331">3331</a>
+<a href="#3332" id="3332">3332</a>
+<a href="#3333" id="3333">3333</a>
+<a href="#3334" id="3334">3334</a>
+<a href="#3335" id="3335">3335</a>
+<a href="#3336" id="3336">3336</a>
+<a href="#3337" id="3337">3337</a>
+<a href="#3338" id="3338">3338</a>
+<a href="#3339" id="3339">3339</a>
+<a href="#3340" id="3340">3340</a>
+<a href="#3341" id="3341">3341</a>
+<a href="#3342" id="3342">3342</a>
+<a href="#3343" id="3343">3343</a>
+<a href="#3344" id="3344">3344</a>
+<a href="#3345" id="3345">3345</a>
+<a href="#3346" id="3346">3346</a>
+<a href="#3347" id="3347">3347</a>
+<a href="#3348" id="3348">3348</a>
+<a href="#3349" id="3349">3349</a>
+<a href="#3350" id="3350">3350</a>
+<a href="#3351" id="3351">3351</a>
+<a href="#3352" id="3352">3352</a>
+<a href="#3353" id="3353">3353</a>
+<a href="#3354" id="3354">3354</a>
+<a href="#3355" id="3355">3355</a>
+<a href="#3356" id="3356">3356</a>
+<a href="#3357" id="3357">3357</a>
+<a href="#3358" id="3358">3358</a>
+<a href="#3359" id="3359">3359</a>
+<a href="#3360" id="3360">3360</a>
+<a href="#3361" id="3361">3361</a>
+<a href="#3362" id="3362">3362</a>
+<a href="#3363" id="3363">3363</a>
+<a href="#3364" id="3364">3364</a>
+<a href="#3365" id="3365">3365</a>
+<a href="#3366" id="3366">3366</a>
+<a href="#3367" id="3367">3367</a>
+<a href="#3368" id="3368">3368</a>
+<a href="#3369" id="3369">3369</a>
+<a href="#3370" id="3370">3370</a>
+<a href="#3371" id="3371">3371</a>
+<a href="#3372" id="3372">3372</a>
+<a href="#3373" id="3373">3373</a>
+<a href="#3374" id="3374">3374</a>
+<a href="#3375" id="3375">3375</a>
+<a href="#3376" id="3376">3376</a>
+<a href="#3377" id="3377">3377</a>
+<a href="#3378" id="3378">3378</a>
+<a href="#3379" id="3379">3379</a>
+<a href="#3380" id="3380">3380</a>
+<a href="#3381" id="3381">3381</a>
+<a href="#3382" id="3382">3382</a>
+<a href="#3383" id="3383">3383</a>
+<a href="#3384" id="3384">3384</a>
+<a href="#3385" id="3385">3385</a>
+<a href="#3386" id="3386">3386</a>
+<a href="#3387" id="3387">3387</a>
+<a href="#3388" id="3388">3388</a>
+<a href="#3389" id="3389">3389</a>
+<a href="#3390" id="3390">3390</a>
+<a href="#3391" id="3391">3391</a>
+<a href="#3392" id="3392">3392</a>
+<a href="#3393" id="3393">3393</a>
+<a href="#3394" id="3394">3394</a>
+<a href="#3395" id="3395">3395</a>
+<a href="#3396" id="3396">3396</a>
+<a href="#3397" id="3397">3397</a>
+<a href="#3398" id="3398">3398</a>
+<a href="#3399" id="3399">3399</a>
+<a href="#3400" id="3400">3400</a>
+<a href="#3401" id="3401">3401</a>
+<a href="#3402" id="3402">3402</a>
+<a href="#3403" id="3403">3403</a>
+<a href="#3404" id="3404">3404</a>
+<a href="#3405" id="3405">3405</a>
+<a href="#3406" id="3406">3406</a>
+<a href="#3407" id="3407">3407</a>
+<a href="#3408" id="3408">3408</a>
+<a href="#3409" id="3409">3409</a>
+<a href="#3410" id="3410">3410</a>
+<a href="#3411" id="3411">3411</a>
+<a href="#3412" id="3412">3412</a>
+<a href="#3413" id="3413">3413</a>
+<a href="#3414" id="3414">3414</a>
+<a href="#3415" id="3415">3415</a>
+<a href="#3416" id="3416">3416</a>
+<a href="#3417" id="3417">3417</a>
+<a href="#3418" id="3418">3418</a>
+<a href="#3419" id="3419">3419</a>
+<a href="#3420" id="3420">3420</a>
+<a href="#3421" id="3421">3421</a>
+<a href="#3422" id="3422">3422</a>
+<a href="#3423" id="3423">3423</a>
+<a href="#3424" id="3424">3424</a>
+<a href="#3425" id="3425">3425</a>
+<a href="#3426" id="3426">3426</a>
+<a href="#3427" id="3427">3427</a>
+<a href="#3428" id="3428">3428</a>
+<a href="#3429" id="3429">3429</a>
+<a href="#3430" id="3430">3430</a>
+<a href="#3431" id="3431">3431</a>
+<a href="#3432" id="3432">3432</a>
+<a href="#3433" id="3433">3433</a>
+<a href="#3434" id="3434">3434</a>
+<a href="#3435" id="3435">3435</a>
+<a href="#3436" id="3436">3436</a>
+<a href="#3437" id="3437">3437</a>
+<a href="#3438" id="3438">3438</a>
+<a href="#3439" id="3439">3439</a>
+<a href="#3440" id="3440">3440</a>
+<a href="#3441" id="3441">3441</a>
+<a href="#3442" id="3442">3442</a>
+<a href="#3443" id="3443">3443</a>
+<a href="#3444" id="3444">3444</a>
+<a href="#3445" id="3445">3445</a>
+<a href="#3446" id="3446">3446</a>
+<a href="#3447" id="3447">3447</a>
+<a href="#3448" id="3448">3448</a>
+<a href="#3449" id="3449">3449</a>
+<a href="#3450" id="3450">3450</a>
+<a href="#3451" id="3451">3451</a>
+<a href="#3452" id="3452">3452</a>
+<a href="#3453" id="3453">3453</a>
+<a href="#3454" id="3454">3454</a>
+<a href="#3455" id="3455">3455</a>
+<a href="#3456" id="3456">3456</a>
+<a href="#3457" id="3457">3457</a>
+<a href="#3458" id="3458">3458</a>
+<a href="#3459" id="3459">3459</a>
+<a href="#3460" id="3460">3460</a>
+<a href="#3461" id="3461">3461</a>
+<a href="#3462" id="3462">3462</a>
+<a href="#3463" id="3463">3463</a>
+<a href="#3464" id="3464">3464</a>
+<a href="#3465" id="3465">3465</a>
+<a href="#3466" id="3466">3466</a>
+<a href="#3467" id="3467">3467</a>
+<a href="#3468" id="3468">3468</a>
+<a href="#3469" id="3469">3469</a>
+<a href="#3470" id="3470">3470</a>
+<a href="#3471" id="3471">3471</a>
+<a href="#3472" id="3472">3472</a>
+<a href="#3473" id="3473">3473</a>
+<a href="#3474" id="3474">3474</a>
+<a href="#3475" id="3475">3475</a>
+<a href="#3476" id="3476">3476</a>
+<a href="#3477" id="3477">3477</a>
+<a href="#3478" id="3478">3478</a>
+<a href="#3479" id="3479">3479</a>
+<a href="#3480" id="3480">3480</a>
+<a href="#3481" id="3481">3481</a>
+<a href="#3482" id="3482">3482</a>
+<a href="#3483" id="3483">3483</a>
+<a href="#3484" id="3484">3484</a>
+<a href="#3485" id="3485">3485</a>
+<a href="#3486" id="3486">3486</a>
+<a href="#3487" id="3487">3487</a>
+<a href="#3488" id="3488">3488</a>
+<a href="#3489" id="3489">3489</a>
+<a href="#3490" id="3490">3490</a>
+<a href="#3491" id="3491">3491</a>
+<a href="#3492" id="3492">3492</a>
+<a href="#3493" id="3493">3493</a>
+<a href="#3494" id="3494">3494</a>
+<a href="#3495" id="3495">3495</a>
+<a href="#3496" id="3496">3496</a>
+<a href="#3497" id="3497">3497</a>
+<a href="#3498" id="3498">3498</a>
+<a href="#3499" id="3499">3499</a>
+<a href="#3500" id="3500">3500</a>
+<a href="#3501" id="3501">3501</a>
+<a href="#3502" id="3502">3502</a>
+<a href="#3503" id="3503">3503</a>
+<a href="#3504" id="3504">3504</a>
+<a href="#3505" id="3505">3505</a>
+<a href="#3506" id="3506">3506</a>
+<a href="#3507" id="3507">3507</a>
+<a href="#3508" id="3508">3508</a>
+<a href="#3509" id="3509">3509</a>
+<a href="#3510" id="3510">3510</a>
+<a href="#3511" id="3511">3511</a>
+<a href="#3512" id="3512">3512</a>
+<a href="#3513" id="3513">3513</a>
+<a href="#3514" id="3514">3514</a>
+<a href="#3515" id="3515">3515</a>
+<a href="#3516" id="3516">3516</a>
+<a href="#3517" id="3517">3517</a>
+<a href="#3518" id="3518">3518</a>
+<a href="#3519" id="3519">3519</a>
+<a href="#3520" id="3520">3520</a>
+<a href="#3521" id="3521">3521</a>
+<a href="#3522" id="3522">3522</a>
+<a href="#3523" id="3523">3523</a>
+<a href="#3524" id="3524">3524</a>
+<a href="#3525" id="3525">3525</a>
+<a href="#3526" id="3526">3526</a>
+<a href="#3527" id="3527">3527</a>
+<a href="#3528" id="3528">3528</a>
+<a href="#3529" id="3529">3529</a>
+<a href="#3530" id="3530">3530</a>
+<a href="#3531" id="3531">3531</a>
+<a href="#3532" id="3532">3532</a>
+<a href="#3533" id="3533">3533</a>
+<a href="#3534" id="3534">3534</a>
+<a href="#3535" id="3535">3535</a>
+<a href="#3536" id="3536">3536</a>
+<a href="#3537" id="3537">3537</a>
+<a href="#3538" id="3538">3538</a>
+<a href="#3539" id="3539">3539</a>
+<a href="#3540" id="3540">3540</a>
+<a href="#3541" id="3541">3541</a>
+<a href="#3542" id="3542">3542</a>
+<a href="#3543" id="3543">3543</a>
+<a href="#3544" id="3544">3544</a>
+<a href="#3545" id="3545">3545</a>
+<a href="#3546" id="3546">3546</a>
+<a href="#3547" id="3547">3547</a>
+<a href="#3548" id="3548">3548</a>
+<a href="#3549" id="3549">3549</a>
+<a href="#3550" id="3550">3550</a>
+<a href="#3551" id="3551">3551</a>
+<a href="#3552" id="3552">3552</a>
+<a href="#3553" id="3553">3553</a>
+<a href="#3554" id="3554">3554</a>
+<a href="#3555" id="3555">3555</a>
+<a href="#3556" id="3556">3556</a>
+<a href="#3557" id="3557">3557</a>
+<a href="#3558" id="3558">3558</a>
+<a href="#3559" id="3559">3559</a>
+<a href="#3560" id="3560">3560</a>
+<a href="#3561" id="3561">3561</a>
+<a href="#3562" id="3562">3562</a>
+<a href="#3563" id="3563">3563</a>
+<a href="#3564" id="3564">3564</a>
+<a href="#3565" id="3565">3565</a>
+<a href="#3566" id="3566">3566</a>
+<a href="#3567" id="3567">3567</a>
+<a href="#3568" id="3568">3568</a>
+<a href="#3569" id="3569">3569</a>
+<a href="#3570" id="3570">3570</a>
+<a href="#3571" id="3571">3571</a>
+<a href="#3572" id="3572">3572</a>
+<a href="#3573" id="3573">3573</a>
+<a href="#3574" id="3574">3574</a>
+<a href="#3575" id="3575">3575</a>
+<a href="#3576" id="3576">3576</a>
+<a href="#3577" id="3577">3577</a>
+<a href="#3578" id="3578">3578</a>
+<a href="#3579" id="3579">3579</a>
+<a href="#3580" id="3580">3580</a>
+<a href="#3581" id="3581">3581</a>
+<a href="#3582" id="3582">3582</a>
+<a href="#3583" id="3583">3583</a>
+<a href="#3584" id="3584">3584</a>
+<a href="#3585" id="3585">3585</a>
+<a href="#3586" id="3586">3586</a>
+<a href="#3587" id="3587">3587</a>
+<a href="#3588" id="3588">3588</a>
+<a href="#3589" id="3589">3589</a>
+<a href="#3590" id="3590">3590</a>
+<a href="#3591" id="3591">3591</a>
+<a href="#3592" id="3592">3592</a>
+<a href="#3593" id="3593">3593</a>
+<a href="#3594" id="3594">3594</a>
+<a href="#3595" id="3595">3595</a>
+<a href="#3596" id="3596">3596</a>
+<a href="#3597" id="3597">3597</a>
+<a href="#3598" id="3598">3598</a>
+<a href="#3599" id="3599">3599</a>
+<a href="#3600" id="3600">3600</a>
+<a href="#3601" id="3601">3601</a>
+<a href="#3602" id="3602">3602</a>
+<a href="#3603" id="3603">3603</a>
+<a href="#3604" id="3604">3604</a>
+<a href="#3605" id="3605">3605</a>
+<a href="#3606" id="3606">3606</a>
+<a href="#3607" id="3607">3607</a>
+<a href="#3608" id="3608">3608</a>
+<a href="#3609" id="3609">3609</a>
+<a href="#3610" id="3610">3610</a>
+<a href="#3611" id="3611">3611</a>
+<a href="#3612" id="3612">3612</a>
+<a href="#3613" id="3613">3613</a>
+<a href="#3614" id="3614">3614</a>
+<a href="#3615" id="3615">3615</a>
+<a href="#3616" id="3616">3616</a>
+<a href="#3617" id="3617">3617</a>
+<a href="#3618" id="3618">3618</a>
+<a href="#3619" id="3619">3619</a>
+<a href="#3620" id="3620">3620</a>
+<a href="#3621" id="3621">3621</a>
+<a href="#3622" id="3622">3622</a>
+<a href="#3623" id="3623">3623</a>
+<a href="#3624" id="3624">3624</a>
+<a href="#3625" id="3625">3625</a>
+<a href="#3626" id="3626">3626</a>
+<a href="#3627" id="3627">3627</a>
+<a href="#3628" id="3628">3628</a>
+<a href="#3629" id="3629">3629</a>
+<a href="#3630" id="3630">3630</a>
+<a href="#3631" id="3631">3631</a>
+<a href="#3632" id="3632">3632</a>
+<a href="#3633" id="3633">3633</a>
+<a href="#3634" id="3634">3634</a>
+<a href="#3635" id="3635">3635</a>
+<a href="#3636" id="3636">3636</a>
+<a href="#3637" id="3637">3637</a>
+<a href="#3638" id="3638">3638</a>
+<a href="#3639" id="3639">3639</a>
+<a href="#3640" id="3640">3640</a>
+<a href="#3641" id="3641">3641</a>
+<a href="#3642" id="3642">3642</a>
+<a href="#3643" id="3643">3643</a>
+<a href="#3644" id="3644">3644</a>
+<a href="#3645" id="3645">3645</a>
+<a href="#3646" id="3646">3646</a>
+<a href="#3647" id="3647">3647</a>
+<a href="#3648" id="3648">3648</a>
+<a href="#3649" id="3649">3649</a>
+<a href="#3650" id="3650">3650</a>
+<a href="#3651" id="3651">3651</a>
+<a href="#3652" id="3652">3652</a>
+<a href="#3653" id="3653">3653</a>
+<a href="#3654" id="3654">3654</a>
+<a href="#3655" id="3655">3655</a>
+<a href="#3656" id="3656">3656</a>
+<a href="#3657" id="3657">3657</a>
+<a href="#3658" id="3658">3658</a>
+<a href="#3659" id="3659">3659</a>
+<a href="#3660" id="3660">3660</a>
+<a href="#3661" id="3661">3661</a>
+<a href="#3662" id="3662">3662</a>
+<a href="#3663" id="3663">3663</a>
+<a href="#3664" id="3664">3664</a>
+<a href="#3665" id="3665">3665</a>
+<a href="#3666" id="3666">3666</a>
+<a href="#3667" id="3667">3667</a>
+<a href="#3668" id="3668">3668</a>
+<a href="#3669" id="3669">3669</a>
+<a href="#3670" id="3670">3670</a>
+<a href="#3671" id="3671">3671</a>
+<a href="#3672" id="3672">3672</a>
+<a href="#3673" id="3673">3673</a>
+<a href="#3674" id="3674">3674</a>
+<a href="#3675" id="3675">3675</a>
+<a href="#3676" id="3676">3676</a>
+<a href="#3677" id="3677">3677</a>
+<a href="#3678" id="3678">3678</a>
+<a href="#3679" id="3679">3679</a>
+<a href="#3680" id="3680">3680</a>
+<a href="#3681" id="3681">3681</a>
+<a href="#3682" id="3682">3682</a>
+<a href="#3683" id="3683">3683</a>
+<a href="#3684" id="3684">3684</a>
+<a href="#3685" id="3685">3685</a>
+<a href="#3686" id="3686">3686</a>
+<a href="#3687" id="3687">3687</a>
+<a href="#3688" id="3688">3688</a>
+<a href="#3689" id="3689">3689</a>
+<a href="#3690" id="3690">3690</a>
+<a href="#3691" id="3691">3691</a>
+<a href="#3692" id="3692">3692</a>
+<a href="#3693" id="3693">3693</a>
+<a href="#3694" id="3694">3694</a>
+<a href="#3695" id="3695">3695</a>
+<a href="#3696" id="3696">3696</a>
+<a href="#3697" id="3697">3697</a>
+<a href="#3698" id="3698">3698</a>
+<a href="#3699" id="3699">3699</a>
+<a href="#3700" id="3700">3700</a>
+<a href="#3701" id="3701">3701</a>
+<a href="#3702" id="3702">3702</a>
+<a href="#3703" id="3703">3703</a>
+<a href="#3704" id="3704">3704</a>
+<a href="#3705" id="3705">3705</a>
+<a href="#3706" id="3706">3706</a>
+<a href="#3707" id="3707">3707</a>
+<a href="#3708" id="3708">3708</a>
+<a href="#3709" id="3709">3709</a>
+<a href="#3710" id="3710">3710</a>
+<a href="#3711" id="3711">3711</a>
+<a href="#3712" id="3712">3712</a>
+<a href="#3713" id="3713">3713</a>
+<a href="#3714" id="3714">3714</a>
+<a href="#3715" id="3715">3715</a>
+<a href="#3716" id="3716">3716</a>
+<a href="#3717" id="3717">3717</a>
+<a href="#3718" id="3718">3718</a>
+<a href="#3719" id="3719">3719</a>
+<a href="#3720" id="3720">3720</a>
+<a href="#3721" id="3721">3721</a>
+<a href="#3722" id="3722">3722</a>
+<a href="#3723" id="3723">3723</a>
+<a href="#3724" id="3724">3724</a>
+<a href="#3725" id="3725">3725</a>
+<a href="#3726" id="3726">3726</a>
+<a href="#3727" id="3727">3727</a>
+<a href="#3728" id="3728">3728</a>
+<a href="#3729" id="3729">3729</a>
+<a href="#3730" id="3730">3730</a>
+<a href="#3731" id="3731">3731</a>
+<a href="#3732" id="3732">3732</a>
+<a href="#3733" id="3733">3733</a>
+<a href="#3734" id="3734">3734</a>
+<a href="#3735" id="3735">3735</a>
+<a href="#3736" id="3736">3736</a>
+<a href="#3737" id="3737">3737</a>
+<a href="#3738" id="3738">3738</a>
+<a href="#3739" id="3739">3739</a>
+<a href="#3740" id="3740">3740</a>
+<a href="#3741" id="3741">3741</a>
+<a href="#3742" id="3742">3742</a>
+<a href="#3743" id="3743">3743</a>
+<a href="#3744" id="3744">3744</a>
+<a href="#3745" id="3745">3745</a>
+<a href="#3746" id="3746">3746</a>
+<a href="#3747" id="3747">3747</a>
+<a href="#3748" id="3748">3748</a>
+<a href="#3749" id="3749">3749</a>
+<a href="#3750" id="3750">3750</a>
+<a href="#3751" id="3751">3751</a>
+<a href="#3752" id="3752">3752</a>
+<a href="#3753" id="3753">3753</a>
+<a href="#3754" id="3754">3754</a>
+<a href="#3755" id="3755">3755</a>
+<a href="#3756" id="3756">3756</a>
+<a href="#3757" id="3757">3757</a>
+<a href="#3758" id="3758">3758</a>
+<a href="#3759" id="3759">3759</a>
+<a href="#3760" id="3760">3760</a>
+<a href="#3761" id="3761">3761</a>
+<a href="#3762" id="3762">3762</a>
+<a href="#3763" id="3763">3763</a>
+<a href="#3764" id="3764">3764</a>
+<a href="#3765" id="3765">3765</a>
+<a href="#3766" id="3766">3766</a>
+<a href="#3767" id="3767">3767</a>
+<a href="#3768" id="3768">3768</a>
+<a href="#3769" id="3769">3769</a>
+<a href="#3770" id="3770">3770</a>
+<a href="#3771" id="3771">3771</a>
+<a href="#3772" id="3772">3772</a>
+<a href="#3773" id="3773">3773</a>
+<a href="#3774" id="3774">3774</a>
+<a href="#3775" id="3775">3775</a>
+<a href="#3776" id="3776">3776</a>
+<a href="#3777" id="3777">3777</a>
+<a href="#3778" id="3778">3778</a>
+<a href="#3779" id="3779">3779</a>
+<a href="#3780" id="3780">3780</a>
+<a href="#3781" id="3781">3781</a>
+<a href="#3782" id="3782">3782</a>
+<a href="#3783" id="3783">3783</a>
+<a href="#3784" id="3784">3784</a>
+<a href="#3785" id="3785">3785</a>
+<a href="#3786" id="3786">3786</a>
+<a href="#3787" id="3787">3787</a>
+<a href="#3788" id="3788">3788</a>
+<a href="#3789" id="3789">3789</a>
+<a href="#3790" id="3790">3790</a>
+<a href="#3791" id="3791">3791</a>
+<a href="#3792" id="3792">3792</a>
+<a href="#3793" id="3793">3793</a>
+<a href="#3794" id="3794">3794</a>
+<a href="#3795" id="3795">3795</a>
+<a href="#3796" id="3796">3796</a>
+<a href="#3797" id="3797">3797</a>
+<a href="#3798" id="3798">3798</a>
+<a href="#3799" id="3799">3799</a>
+<a href="#3800" id="3800">3800</a>
+<a href="#3801" id="3801">3801</a>
+<a href="#3802" id="3802">3802</a>
+<a href="#3803" id="3803">3803</a>
+<a href="#3804" id="3804">3804</a>
+<a href="#3805" id="3805">3805</a>
+<a href="#3806" id="3806">3806</a>
+<a href="#3807" id="3807">3807</a>
+<a href="#3808" id="3808">3808</a>
+<a href="#3809" id="3809">3809</a>
+<a href="#3810" id="3810">3810</a>
+<a href="#3811" id="3811">3811</a>
+<a href="#3812" id="3812">3812</a>
+<a href="#3813" id="3813">3813</a>
+<a href="#3814" id="3814">3814</a>
+<a href="#3815" id="3815">3815</a>
+<a href="#3816" id="3816">3816</a>
+<a href="#3817" id="3817">3817</a>
+<a href="#3818" id="3818">3818</a>
+<a href="#3819" id="3819">3819</a>
+<a href="#3820" id="3820">3820</a>
+<a href="#3821" id="3821">3821</a>
+<a href="#3822" id="3822">3822</a>
+<a href="#3823" id="3823">3823</a>
+<a href="#3824" id="3824">3824</a>
+<a href="#3825" id="3825">3825</a>
+<a href="#3826" id="3826">3826</a>
+<a href="#3827" id="3827">3827</a>
+<a href="#3828" id="3828">3828</a>
+<a href="#3829" id="3829">3829</a>
+<a href="#3830" id="3830">3830</a>
+<a href="#3831" id="3831">3831</a>
+<a href="#3832" id="3832">3832</a>
+<a href="#3833" id="3833">3833</a>
+<a href="#3834" id="3834">3834</a>
+<a href="#3835" id="3835">3835</a>
+<a href="#3836" id="3836">3836</a>
+<a href="#3837" id="3837">3837</a>
+<a href="#3838" id="3838">3838</a>
+<a href="#3839" id="3839">3839</a>
+<a href="#3840" id="3840">3840</a>
+<a href="#3841" id="3841">3841</a>
+<a href="#3842" id="3842">3842</a>
+<a href="#3843" id="3843">3843</a>
+<a href="#3844" id="3844">3844</a>
+<a href="#3845" id="3845">3845</a>
+<a href="#3846" id="3846">3846</a>
+<a href="#3847" id="3847">3847</a>
+<a href="#3848" id="3848">3848</a>
+<a href="#3849" id="3849">3849</a>
+<a href="#3850" id="3850">3850</a>
+<a href="#3851" id="3851">3851</a>
+<a href="#3852" id="3852">3852</a>
+<a href="#3853" id="3853">3853</a>
+<a href="#3854" id="3854">3854</a>
+<a href="#3855" id="3855">3855</a>
+<a href="#3856" id="3856">3856</a>
+<a href="#3857" id="3857">3857</a>
+<a href="#3858" id="3858">3858</a>
+<a href="#3859" id="3859">3859</a>
+<a href="#3860" id="3860">3860</a>
+<a href="#3861" id="3861">3861</a>
+<a href="#3862" id="3862">3862</a>
+<a href="#3863" id="3863">3863</a>
+<a href="#3864" id="3864">3864</a>
+<a href="#3865" id="3865">3865</a>
+<a href="#3866" id="3866">3866</a>
+<a href="#3867" id="3867">3867</a>
+<a href="#3868" id="3868">3868</a>
+<a href="#3869" id="3869">3869</a>
+<a href="#3870" id="3870">3870</a>
+<a href="#3871" id="3871">3871</a>
+<a href="#3872" id="3872">3872</a>
+<a href="#3873" id="3873">3873</a>
+<a href="#3874" id="3874">3874</a>
+<a href="#3875" id="3875">3875</a>
+<a href="#3876" id="3876">3876</a>
+<a href="#3877" id="3877">3877</a>
+<a href="#3878" id="3878">3878</a>
+<a href="#3879" id="3879">3879</a>
+<a href="#3880" id="3880">3880</a>
+<a href="#3881" id="3881">3881</a>
+<a href="#3882" id="3882">3882</a>
+<a href="#3883" id="3883">3883</a>
+<a href="#3884" id="3884">3884</a>
+<a href="#3885" id="3885">3885</a>
+<a href="#3886" id="3886">3886</a>
+<a href="#3887" id="3887">3887</a>
+<a href="#3888" id="3888">3888</a>
+<a href="#3889" id="3889">3889</a>
+<a href="#3890" id="3890">3890</a>
+<a href="#3891" id="3891">3891</a>
+<a href="#3892" id="3892">3892</a>
+<a href="#3893" id="3893">3893</a>
+<a href="#3894" id="3894">3894</a>
+<a href="#3895" id="3895">3895</a>
+<a href="#3896" id="3896">3896</a>
+<a href="#3897" id="3897">3897</a>
+<a href="#3898" id="3898">3898</a>
+<a href="#3899" id="3899">3899</a>
+<a href="#3900" id="3900">3900</a>
+<a href="#3901" id="3901">3901</a>
+<a href="#3902" id="3902">3902</a>
+<a href="#3903" id="3903">3903</a>
+<a href="#3904" id="3904">3904</a>
+<a href="#3905" id="3905">3905</a>
+<a href="#3906" id="3906">3906</a>
+<a href="#3907" id="3907">3907</a>
+<a href="#3908" id="3908">3908</a>
+<a href="#3909" id="3909">3909</a>
+<a href="#3910" id="3910">3910</a>
+<a href="#3911" id="3911">3911</a>
+<a href="#3912" id="3912">3912</a>
+<a href="#3913" id="3913">3913</a>
+<a href="#3914" id="3914">3914</a>
+<a href="#3915" id="3915">3915</a>
+<a href="#3916" id="3916">3916</a>
+<a href="#3917" id="3917">3917</a>
+<a href="#3918" id="3918">3918</a>
+<a href="#3919" id="3919">3919</a>
+<a href="#3920" id="3920">3920</a>
+<a href="#3921" id="3921">3921</a>
+<a href="#3922" id="3922">3922</a>
+<a href="#3923" id="3923">3923</a>
+<a href="#3924" id="3924">3924</a>
+<a href="#3925" id="3925">3925</a>
+<a href="#3926" id="3926">3926</a>
+<a href="#3927" id="3927">3927</a>
+<a href="#3928" id="3928">3928</a>
+<a href="#3929" id="3929">3929</a>
+<a href="#3930" id="3930">3930</a>
+<a href="#3931" id="3931">3931</a>
+<a href="#3932" id="3932">3932</a>
+<a href="#3933" id="3933">3933</a>
+<a href="#3934" id="3934">3934</a>
+<a href="#3935" id="3935">3935</a>
+<a href="#3936" id="3936">3936</a>
+<a href="#3937" id="3937">3937</a>
+<a href="#3938" id="3938">3938</a>
+<a href="#3939" id="3939">3939</a>
+<a href="#3940" id="3940">3940</a>
+<a href="#3941" id="3941">3941</a>
+<a href="#3942" id="3942">3942</a>
+<a href="#3943" id="3943">3943</a>
+<a href="#3944" id="3944">3944</a>
+<a href="#3945" id="3945">3945</a>
+<a href="#3946" id="3946">3946</a>
+<a href="#3947" id="3947">3947</a>
+<a href="#3948" id="3948">3948</a>
+<a href="#3949" id="3949">3949</a>
+<a href="#3950" id="3950">3950</a>
+<a href="#3951" id="3951">3951</a>
+<a href="#3952" id="3952">3952</a>
+<a href="#3953" id="3953">3953</a>
+<a href="#3954" id="3954">3954</a>
+<a href="#3955" id="3955">3955</a>
+<a href="#3956" id="3956">3956</a>
+<a href="#3957" id="3957">3957</a>
+<a href="#3958" id="3958">3958</a>
+<a href="#3959" id="3959">3959</a>
+<a href="#3960" id="3960">3960</a>
+<a href="#3961" id="3961">3961</a>
+<a href="#3962" id="3962">3962</a>
+<a href="#3963" id="3963">3963</a>
+<a href="#3964" id="3964">3964</a>
+<a href="#3965" id="3965">3965</a>
+<a href="#3966" id="3966">3966</a>
+<a href="#3967" id="3967">3967</a>
+<a href="#3968" id="3968">3968</a>
+<a href="#3969" id="3969">3969</a>
+<a href="#3970" id="3970">3970</a>
+<a href="#3971" id="3971">3971</a>
+<a href="#3972" id="3972">3972</a>
+<a href="#3973" id="3973">3973</a>
+<a href="#3974" id="3974">3974</a>
+<a href="#3975" id="3975">3975</a>
+<a href="#3976" id="3976">3976</a>
+<a href="#3977" id="3977">3977</a>
+<a href="#3978" id="3978">3978</a>
+<a href="#3979" id="3979">3979</a>
+<a href="#3980" id="3980">3980</a>
+<a href="#3981" id="3981">3981</a>
+<a href="#3982" id="3982">3982</a>
+<a href="#3983" id="3983">3983</a>
+<a href="#3984" id="3984">3984</a>
+<a href="#3985" id="3985">3985</a>
+<a href="#3986" id="3986">3986</a>
+<a href="#3987" id="3987">3987</a>
+<a href="#3988" id="3988">3988</a>
+<a href="#3989" id="3989">3989</a>
+<a href="#3990" id="3990">3990</a>
+<a href="#3991" id="3991">3991</a>
+<a href="#3992" id="3992">3992</a>
+<a href="#3993" id="3993">3993</a>
+<a href="#3994" id="3994">3994</a>
+<a href="#3995" id="3995">3995</a>
+<a href="#3996" id="3996">3996</a>
+<a href="#3997" id="3997">3997</a>
+<a href="#3998" id="3998">3998</a>
+<a href="#3999" id="3999">3999</a>
+<a href="#4000" id="4000">4000</a>
+<a href="#4001" id="4001">4001</a>
+<a href="#4002" id="4002">4002</a>
+<a href="#4003" id="4003">4003</a>
+<a href="#4004" id="4004">4004</a>
+<a href="#4005" id="4005">4005</a>
+<a href="#4006" id="4006">4006</a>
+<a href="#4007" id="4007">4007</a>
+<a href="#4008" id="4008">4008</a>
+<a href="#4009" id="4009">4009</a>
+<a href="#4010" id="4010">4010</a>
+<a href="#4011" id="4011">4011</a>
+<a href="#4012" id="4012">4012</a>
+<a href="#4013" id="4013">4013</a>
+<a href="#4014" id="4014">4014</a>
+<a href="#4015" id="4015">4015</a>
+<a href="#4016" id="4016">4016</a>
+<a href="#4017" id="4017">4017</a>
+<a href="#4018" id="4018">4018</a>
+<a href="#4019" id="4019">4019</a>
+<a href="#4020" id="4020">4020</a>
+<a href="#4021" id="4021">4021</a>
+<a href="#4022" id="4022">4022</a>
+<a href="#4023" id="4023">4023</a>
+<a href="#4024" id="4024">4024</a>
+<a href="#4025" id="4025">4025</a>
+<a href="#4026" id="4026">4026</a>
+<a href="#4027" id="4027">4027</a>
+<a href="#4028" id="4028">4028</a>
+<a href="#4029" id="4029">4029</a>
+<a href="#4030" id="4030">4030</a>
+<a href="#4031" id="4031">4031</a>
+<a href="#4032" id="4032">4032</a>
+<a href="#4033" id="4033">4033</a>
+<a href="#4034" id="4034">4034</a>
+<a href="#4035" id="4035">4035</a>
+<a href="#4036" id="4036">4036</a>
+<a href="#4037" id="4037">4037</a>
+<a href="#4038" id="4038">4038</a>
+<a href="#4039" id="4039">4039</a>
+<a href="#4040" id="4040">4040</a>
+<a href="#4041" id="4041">4041</a>
+<a href="#4042" id="4042">4042</a>
+<a href="#4043" id="4043">4043</a>
+<a href="#4044" id="4044">4044</a>
+<a href="#4045" id="4045">4045</a>
+<a href="#4046" id="4046">4046</a>
+<a href="#4047" id="4047">4047</a>
+<a href="#4048" id="4048">4048</a>
+<a href="#4049" id="4049">4049</a>
+<a href="#4050" id="4050">4050</a>
+<a href="#4051" id="4051">4051</a>
+<a href="#4052" id="4052">4052</a>
+<a href="#4053" id="4053">4053</a>
+<a href="#4054" id="4054">4054</a>
+<a href="#4055" id="4055">4055</a>
+<a href="#4056" id="4056">4056</a>
+<a href="#4057" id="4057">4057</a>
+<a href="#4058" id="4058">4058</a>
+<a href="#4059" id="4059">4059</a>
+<a href="#4060" id="4060">4060</a>
+<a href="#4061" id="4061">4061</a>
+<a href="#4062" id="4062">4062</a>
+<a href="#4063" id="4063">4063</a>
+<a href="#4064" id="4064">4064</a>
+<a href="#4065" id="4065">4065</a>
+<a href="#4066" id="4066">4066</a>
+<a href="#4067" id="4067">4067</a>
+<a href="#4068" id="4068">4068</a>
+<a href="#4069" id="4069">4069</a>
+<a href="#4070" id="4070">4070</a>
+<a href="#4071" id="4071">4071</a>
+<a href="#4072" id="4072">4072</a>
+<a href="#4073" id="4073">4073</a>
+<a href="#4074" id="4074">4074</a>
+<a href="#4075" id="4075">4075</a>
+<a href="#4076" id="4076">4076</a>
+<a href="#4077" id="4077">4077</a>
+<a href="#4078" id="4078">4078</a>
+<a href="#4079" id="4079">4079</a>
+<a href="#4080" id="4080">4080</a>
+<a href="#4081" id="4081">4081</a>
+<a href="#4082" id="4082">4082</a>
+<a href="#4083" id="4083">4083</a>
+<a href="#4084" id="4084">4084</a>
+<a href="#4085" id="4085">4085</a>
+<a href="#4086" id="4086">4086</a>
+<a href="#4087" id="4087">4087</a>
+<a href="#4088" id="4088">4088</a>
+<a href="#4089" id="4089">4089</a>
+<a href="#4090" id="4090">4090</a>
+<a href="#4091" id="4091">4091</a>
+<a href="#4092" id="4092">4092</a>
+<a href="#4093" id="4093">4093</a>
+<a href="#4094" id="4094">4094</a>
+<a href="#4095" id="4095">4095</a>
+<a href="#4096" id="4096">4096</a>
+<a href="#4097" id="4097">4097</a>
+<a href="#4098" id="4098">4098</a>
+<a href="#4099" id="4099">4099</a>
+<a href="#4100" id="4100">4100</a>
+<a href="#4101" id="4101">4101</a>
+<a href="#4102" id="4102">4102</a>
+<a href="#4103" id="4103">4103</a>
+<a href="#4104" id="4104">4104</a>
+<a href="#4105" id="4105">4105</a>
+<a href="#4106" id="4106">4106</a>
+<a href="#4107" id="4107">4107</a>
+<a href="#4108" id="4108">4108</a>
+<a href="#4109" id="4109">4109</a>
+<a href="#4110" id="4110">4110</a>
+<a href="#4111" id="4111">4111</a>
+<a href="#4112" id="4112">4112</a>
+<a href="#4113" id="4113">4113</a>
+<a href="#4114" id="4114">4114</a>
+<a href="#4115" id="4115">4115</a>
+<a href="#4116" id="4116">4116</a>
+<a href="#4117" id="4117">4117</a>
+<a href="#4118" id="4118">4118</a>
+<a href="#4119" id="4119">4119</a>
+<a href="#4120" id="4120">4120</a>
+<a href="#4121" id="4121">4121</a>
+<a href="#4122" id="4122">4122</a>
+<a href="#4123" id="4123">4123</a>
+<a href="#4124" id="4124">4124</a>
+<a href="#4125" id="4125">4125</a>
+<a href="#4126" id="4126">4126</a>
+<a href="#4127" id="4127">4127</a>
+<a href="#4128" id="4128">4128</a>
+<a href="#4129" id="4129">4129</a>
+<a href="#4130" id="4130">4130</a>
+<a href="#4131" id="4131">4131</a>
+<a href="#4132" id="4132">4132</a>
+<a href="#4133" id="4133">4133</a>
+<a href="#4134" id="4134">4134</a>
+<a href="#4135" id="4135">4135</a>
+<a href="#4136" id="4136">4136</a>
+<a href="#4137" id="4137">4137</a>
+<a href="#4138" id="4138">4138</a>
+<a href="#4139" id="4139">4139</a>
+<a href="#4140" id="4140">4140</a>
+<a href="#4141" id="4141">4141</a>
+<a href="#4142" id="4142">4142</a>
+<a href="#4143" id="4143">4143</a>
+<a href="#4144" id="4144">4144</a>
+<a href="#4145" id="4145">4145</a>
+<a href="#4146" id="4146">4146</a>
+<a href="#4147" id="4147">4147</a>
+<a href="#4148" id="4148">4148</a>
+<a href="#4149" id="4149">4149</a>
+<a href="#4150" id="4150">4150</a>
+<a href="#4151" id="4151">4151</a>
+<a href="#4152" id="4152">4152</a>
+<a href="#4153" id="4153">4153</a>
+<a href="#4154" id="4154">4154</a>
+<a href="#4155" id="4155">4155</a>
+<a href="#4156" id="4156">4156</a>
+<a href="#4157" id="4157">4157</a>
+<a href="#4158" id="4158">4158</a>
+<a href="#4159" id="4159">4159</a>
+<a href="#4160" id="4160">4160</a>
+<a href="#4161" id="4161">4161</a>
+<a href="#4162" id="4162">4162</a>
+<a href="#4163" id="4163">4163</a>
+<a href="#4164" id="4164">4164</a>
+<a href="#4165" id="4165">4165</a>
+<a href="#4166" id="4166">4166</a>
+<a href="#4167" id="4167">4167</a>
+<a href="#4168" id="4168">4168</a>
+<a href="#4169" id="4169">4169</a>
+<a href="#4170" id="4170">4170</a>
+<a href="#4171" id="4171">4171</a>
+<a href="#4172" id="4172">4172</a>
+<a href="#4173" id="4173">4173</a>
+<a href="#4174" id="4174">4174</a>
+<a href="#4175" id="4175">4175</a>
+<a href="#4176" id="4176">4176</a>
+<a href="#4177" id="4177">4177</a>
+<a href="#4178" id="4178">4178</a>
+<a href="#4179" id="4179">4179</a>
+<a href="#4180" id="4180">4180</a>
+<a href="#4181" id="4181">4181</a>
+<a href="#4182" id="4182">4182</a>
+<a href="#4183" id="4183">4183</a>
+<a href="#4184" id="4184">4184</a>
+<a href="#4185" id="4185">4185</a>
+<a href="#4186" id="4186">4186</a>
+<a href="#4187" id="4187">4187</a>
+<a href="#4188" id="4188">4188</a>
+<a href="#4189" id="4189">4189</a>
+<a href="#4190" id="4190">4190</a>
+<a href="#4191" id="4191">4191</a>
+<a href="#4192" id="4192">4192</a>
+<a href="#4193" id="4193">4193</a>
+<a href="#4194" id="4194">4194</a>
+<a href="#4195" id="4195">4195</a>
+<a href="#4196" id="4196">4196</a>
+<a href="#4197" id="4197">4197</a>
+<a href="#4198" id="4198">4198</a>
+<a href="#4199" id="4199">4199</a>
+<a href="#4200" id="4200">4200</a>
+<a href="#4201" id="4201">4201</a>
+<a href="#4202" id="4202">4202</a>
+<a href="#4203" id="4203">4203</a>
+<a href="#4204" id="4204">4204</a>
+<a href="#4205" id="4205">4205</a>
+<a href="#4206" id="4206">4206</a>
+<a href="#4207" id="4207">4207</a>
+<a href="#4208" id="4208">4208</a>
+<a href="#4209" id="4209">4209</a>
+<a href="#4210" id="4210">4210</a>
+<a href="#4211" id="4211">4211</a>
+<a href="#4212" id="4212">4212</a>
+<a href="#4213" id="4213">4213</a>
+<a href="#4214" id="4214">4214</a>
+<a href="#4215" id="4215">4215</a>
+<a href="#4216" id="4216">4216</a>
+<a href="#4217" id="4217">4217</a>
+<a href="#4218" id="4218">4218</a>
+<a href="#4219" id="4219">4219</a>
+<a href="#4220" id="4220">4220</a>
+<a href="#4221" id="4221">4221</a>
+<a href="#4222" id="4222">4222</a>
+<a href="#4223" id="4223">4223</a>
+<a href="#4224" id="4224">4224</a>
+<a href="#4225" id="4225">4225</a>
+<a href="#4226" id="4226">4226</a>
+<a href="#4227" id="4227">4227</a>
+<a href="#4228" id="4228">4228</a>
+<a href="#4229" id="4229">4229</a>
+<a href="#4230" id="4230">4230</a>
+<a href="#4231" id="4231">4231</a>
+<a href="#4232" id="4232">4232</a>
+<a href="#4233" id="4233">4233</a>
+<a href="#4234" id="4234">4234</a>
+<a href="#4235" id="4235">4235</a>
+<a href="#4236" id="4236">4236</a>
+<a href="#4237" id="4237">4237</a>
+<a href="#4238" id="4238">4238</a>
+<a href="#4239" id="4239">4239</a>
+<a href="#4240" id="4240">4240</a>
+<a href="#4241" id="4241">4241</a>
+<a href="#4242" id="4242">4242</a>
+<a href="#4243" id="4243">4243</a>
+<a href="#4244" id="4244">4244</a>
+<a href="#4245" id="4245">4245</a>
+<a href="#4246" id="4246">4246</a>
+<a href="#4247" id="4247">4247</a>
+<a href="#4248" id="4248">4248</a>
+<a href="#4249" id="4249">4249</a>
+<a href="#4250" id="4250">4250</a>
+<a href="#4251" id="4251">4251</a>
+<a href="#4252" id="4252">4252</a>
+<a href="#4253" id="4253">4253</a>
+<a href="#4254" id="4254">4254</a>
+<a href="#4255" id="4255">4255</a>
+<a href="#4256" id="4256">4256</a>
+<a href="#4257" id="4257">4257</a>
+<a href="#4258" id="4258">4258</a>
+<a href="#4259" id="4259">4259</a>
+<a href="#4260" id="4260">4260</a>
+<a href="#4261" id="4261">4261</a>
+<a href="#4262" id="4262">4262</a>
+<a href="#4263" id="4263">4263</a>
+<a href="#4264" id="4264">4264</a>
+<a href="#4265" id="4265">4265</a>
+<a href="#4266" id="4266">4266</a>
+<a href="#4267" id="4267">4267</a>
+<a href="#4268" id="4268">4268</a>
+<a href="#4269" id="4269">4269</a>
+<a href="#4270" id="4270">4270</a>
+<a href="#4271" id="4271">4271</a>
+<a href="#4272" id="4272">4272</a>
+<a href="#4273" id="4273">4273</a>
+<a href="#4274" id="4274">4274</a>
+<a href="#4275" id="4275">4275</a>
+<a href="#4276" id="4276">4276</a>
+<a href="#4277" id="4277">4277</a>
+<a href="#4278" id="4278">4278</a>
+<a href="#4279" id="4279">4279</a>
+<a href="#4280" id="4280">4280</a>
+<a href="#4281" id="4281">4281</a>
+<a href="#4282" id="4282">4282</a>
+<a href="#4283" id="4283">4283</a>
+<a href="#4284" id="4284">4284</a>
+<a href="#4285" id="4285">4285</a>
+<a href="#4286" id="4286">4286</a>
+<a href="#4287" id="4287">4287</a>
+<a href="#4288" id="4288">4288</a>
+<a href="#4289" id="4289">4289</a>
+<a href="#4290" id="4290">4290</a>
+<a href="#4291" id="4291">4291</a>
+<a href="#4292" id="4292">4292</a>
+<a href="#4293" id="4293">4293</a>
+<a href="#4294" id="4294">4294</a>
+<a href="#4295" id="4295">4295</a>
+<a href="#4296" id="4296">4296</a>
+<a href="#4297" id="4297">4297</a>
+<a href="#4298" id="4298">4298</a>
+<a href="#4299" id="4299">4299</a>
+<a href="#4300" id="4300">4300</a>
+<a href="#4301" id="4301">4301</a>
+<a href="#4302" id="4302">4302</a>
+<a href="#4303" id="4303">4303</a>
+<a href="#4304" id="4304">4304</a>
+<a href="#4305" id="4305">4305</a>
+<a href="#4306" id="4306">4306</a>
+<a href="#4307" id="4307">4307</a>
+<a href="#4308" id="4308">4308</a>
+<a href="#4309" id="4309">4309</a>
+<a href="#4310" id="4310">4310</a>
+<a href="#4311" id="4311">4311</a>
+<a href="#4312" id="4312">4312</a>
+<a href="#4313" id="4313">4313</a>
+<a href="#4314" id="4314">4314</a>
+<a href="#4315" id="4315">4315</a>
+<a href="#4316" id="4316">4316</a>
+<a href="#4317" id="4317">4317</a>
+<a href="#4318" id="4318">4318</a>
+<a href="#4319" id="4319">4319</a>
+<a href="#4320" id="4320">4320</a>
+<a href="#4321" id="4321">4321</a>
+<a href="#4322" id="4322">4322</a>
+<a href="#4323" id="4323">4323</a>
+<a href="#4324" id="4324">4324</a>
+<a href="#4325" id="4325">4325</a>
+<a href="#4326" id="4326">4326</a>
+<a href="#4327" id="4327">4327</a>
+<a href="#4328" id="4328">4328</a>
+<a href="#4329" id="4329">4329</a>
+<a href="#4330" id="4330">4330</a>
+<a href="#4331" id="4331">4331</a>
+<a href="#4332" id="4332">4332</a>
+<a href="#4333" id="4333">4333</a>
+<a href="#4334" id="4334">4334</a>
+<a href="#4335" id="4335">4335</a>
+<a href="#4336" id="4336">4336</a>
+<a href="#4337" id="4337">4337</a>
+<a href="#4338" id="4338">4338</a>
+<a href="#4339" id="4339">4339</a>
+<a href="#4340" id="4340">4340</a>
+<a href="#4341" id="4341">4341</a>
+<a href="#4342" id="4342">4342</a>
+<a href="#4343" id="4343">4343</a>
+<a href="#4344" id="4344">4344</a>
+<a href="#4345" id="4345">4345</a>
+<a href="#4346" id="4346">4346</a>
+<a href="#4347" id="4347">4347</a>
+<a href="#4348" id="4348">4348</a>
+<a href="#4349" id="4349">4349</a>
+<a href="#4350" id="4350">4350</a>
+<a href="#4351" id="4351">4351</a>
+<a href="#4352" id="4352">4352</a>
+<a href="#4353" id="4353">4353</a>
+<a href="#4354" id="4354">4354</a>
+<a href="#4355" id="4355">4355</a>
+<a href="#4356" id="4356">4356</a>
+<a href="#4357" id="4357">4357</a>
+<a href="#4358" id="4358">4358</a>
+<a href="#4359" id="4359">4359</a>
+<a href="#4360" id="4360">4360</a>
+<a href="#4361" id="4361">4361</a>
+<a href="#4362" id="4362">4362</a>
+<a href="#4363" id="4363">4363</a>
+<a href="#4364" id="4364">4364</a>
+<a href="#4365" id="4365">4365</a>
+<a href="#4366" id="4366">4366</a>
+<a href="#4367" id="4367">4367</a>
+<a href="#4368" id="4368">4368</a>
+<a href="#4369" id="4369">4369</a>
+<a href="#4370" id="4370">4370</a>
+<a href="#4371" id="4371">4371</a>
+<a href="#4372" id="4372">4372</a>
+<a href="#4373" id="4373">4373</a>
+<a href="#4374" id="4374">4374</a>
+<a href="#4375" id="4375">4375</a>
+<a href="#4376" id="4376">4376</a>
+<a href="#4377" id="4377">4377</a>
+<a href="#4378" id="4378">4378</a>
+<a href="#4379" id="4379">4379</a>
+<a href="#4380" id="4380">4380</a>
+<a href="#4381" id="4381">4381</a>
+<a href="#4382" id="4382">4382</a>
+<a href="#4383" id="4383">4383</a>
+<a href="#4384" id="4384">4384</a>
+<a href="#4385" id="4385">4385</a>
+<a href="#4386" id="4386">4386</a>
+<a href="#4387" id="4387">4387</a>
+<a href="#4388" id="4388">4388</a>
+<a href="#4389" id="4389">4389</a>
+<a href="#4390" id="4390">4390</a>
+<a href="#4391" id="4391">4391</a>
+<a href="#4392" id="4392">4392</a>
+<a href="#4393" id="4393">4393</a>
+<a href="#4394" id="4394">4394</a>
+<a href="#4395" id="4395">4395</a>
+<a href="#4396" id="4396">4396</a>
+<a href="#4397" id="4397">4397</a>
+<a href="#4398" id="4398">4398</a>
+<a href="#4399" id="4399">4399</a>
+<a href="#4400" id="4400">4400</a>
+<a href="#4401" id="4401">4401</a>
+<a href="#4402" id="4402">4402</a>
+<a href="#4403" id="4403">4403</a>
+<a href="#4404" id="4404">4404</a>
+<a href="#4405" id="4405">4405</a>
+<a href="#4406" id="4406">4406</a>
+<a href="#4407" id="4407">4407</a>
+<a href="#4408" id="4408">4408</a>
+<a href="#4409" id="4409">4409</a>
+<a href="#4410" id="4410">4410</a>
+<a href="#4411" id="4411">4411</a>
+<a href="#4412" id="4412">4412</a>
+<a href="#4413" id="4413">4413</a>
+<a href="#4414" id="4414">4414</a>
+<a href="#4415" id="4415">4415</a>
+<a href="#4416" id="4416">4416</a>
+<a href="#4417" id="4417">4417</a>
+<a href="#4418" id="4418">4418</a>
+<a href="#4419" id="4419">4419</a>
+<a href="#4420" id="4420">4420</a>
+<a href="#4421" id="4421">4421</a>
+<a href="#4422" id="4422">4422</a>
+<a href="#4423" id="4423">4423</a>
+<a href="#4424" id="4424">4424</a>
+<a href="#4425" id="4425">4425</a>
+<a href="#4426" id="4426">4426</a>
+<a href="#4427" id="4427">4427</a>
+<a href="#4428" id="4428">4428</a>
+<a href="#4429" id="4429">4429</a>
+<a href="#4430" id="4430">4430</a>
+<a href="#4431" id="4431">4431</a>
+<a href="#4432" id="4432">4432</a>
+<a href="#4433" id="4433">4433</a>
+<a href="#4434" id="4434">4434</a>
+<a href="#4435" id="4435">4435</a>
+<a href="#4436" id="4436">4436</a>
+<a href="#4437" id="4437">4437</a>
+<a href="#4438" id="4438">4438</a>
+<a href="#4439" id="4439">4439</a>
+<a href="#4440" id="4440">4440</a>
+<a href="#4441" id="4441">4441</a>
+<a href="#4442" id="4442">4442</a>
+<a href="#4443" id="4443">4443</a>
+<a href="#4444" id="4444">4444</a>
+<a href="#4445" id="4445">4445</a>
+<a href="#4446" id="4446">4446</a>
+<a href="#4447" id="4447">4447</a>
+<a href="#4448" id="4448">4448</a>
+<a href="#4449" id="4449">4449</a>
+<a href="#4450" id="4450">4450</a>
+<a href="#4451" id="4451">4451</a>
+<a href="#4452" id="4452">4452</a>
+<a href="#4453" id="4453">4453</a>
+<a href="#4454" id="4454">4454</a>
+<a href="#4455" id="4455">4455</a>
+<a href="#4456" id="4456">4456</a>
+<a href="#4457" id="4457">4457</a>
+<a href="#4458" id="4458">4458</a>
+<a href="#4459" id="4459">4459</a>
+<a href="#4460" id="4460">4460</a>
+<a href="#4461" id="4461">4461</a>
+<a href="#4462" id="4462">4462</a>
+<a href="#4463" id="4463">4463</a>
+<a href="#4464" id="4464">4464</a>
+<a href="#4465" id="4465">4465</a>
+<a href="#4466" id="4466">4466</a>
+<a href="#4467" id="4467">4467</a>
+<a href="#4468" id="4468">4468</a>
+<a href="#4469" id="4469">4469</a>
+<a href="#4470" id="4470">4470</a>
+<a href="#4471" id="4471">4471</a>
+<a href="#4472" id="4472">4472</a>
+<a href="#4473" id="4473">4473</a>
+<a href="#4474" id="4474">4474</a>
+<a href="#4475" id="4475">4475</a>
+<a href="#4476" id="4476">4476</a>
+<a href="#4477" id="4477">4477</a>
+<a href="#4478" id="4478">4478</a>
+<a href="#4479" id="4479">4479</a>
+<a href="#4480" id="4480">4480</a>
+<a href="#4481" id="4481">4481</a>
+<a href="#4482" id="4482">4482</a>
+<a href="#4483" id="4483">4483</a>
+<a href="#4484" id="4484">4484</a>
+<a href="#4485" id="4485">4485</a>
+<a href="#4486" id="4486">4486</a>
+<a href="#4487" id="4487">4487</a>
+<a href="#4488" id="4488">4488</a>
+<a href="#4489" id="4489">4489</a>
+<a href="#4490" id="4490">4490</a>
+<a href="#4491" id="4491">4491</a>
+<a href="#4492" id="4492">4492</a>
+<a href="#4493" id="4493">4493</a>
+<a href="#4494" id="4494">4494</a>
+<a href="#4495" id="4495">4495</a>
+<a href="#4496" id="4496">4496</a>
+<a href="#4497" id="4497">4497</a>
+<a href="#4498" id="4498">4498</a>
+<a href="#4499" id="4499">4499</a>
+<a href="#4500" id="4500">4500</a>
+<a href="#4501" id="4501">4501</a>
+<a href="#4502" id="4502">4502</a>
+<a href="#4503" id="4503">4503</a>
+<a href="#4504" id="4504">4504</a>
+<a href="#4505" id="4505">4505</a>
+<a href="#4506" id="4506">4506</a>
+<a href="#4507" id="4507">4507</a>
+<a href="#4508" id="4508">4508</a>
+<a href="#4509" id="4509">4509</a>
+<a href="#4510" id="4510">4510</a>
+<a href="#4511" id="4511">4511</a>
+<a href="#4512" id="4512">4512</a>
+<a href="#4513" id="4513">4513</a>
+<a href="#4514" id="4514">4514</a>
+<a href="#4515" id="4515">4515</a>
+<a href="#4516" id="4516">4516</a>
+<a href="#4517" id="4517">4517</a>
+<a href="#4518" id="4518">4518</a>
+<a href="#4519" id="4519">4519</a>
+<a href="#4520" id="4520">4520</a>
+<a href="#4521" id="4521">4521</a>
+<a href="#4522" id="4522">4522</a>
+<a href="#4523" id="4523">4523</a>
+<a href="#4524" id="4524">4524</a>
+<a href="#4525" id="4525">4525</a>
+<a href="#4526" id="4526">4526</a>
+<a href="#4527" id="4527">4527</a>
+<a href="#4528" id="4528">4528</a>
+<a href="#4529" id="4529">4529</a>
+<a href="#4530" id="4530">4530</a>
+<a href="#4531" id="4531">4531</a>
+<a href="#4532" id="4532">4532</a>
+<a href="#4533" id="4533">4533</a>
+<a href="#4534" id="4534">4534</a>
+<a href="#4535" id="4535">4535</a>
+<a href="#4536" id="4536">4536</a>
+<a href="#4537" id="4537">4537</a>
+<a href="#4538" id="4538">4538</a>
+<a href="#4539" id="4539">4539</a>
+<a href="#4540" id="4540">4540</a>
+<a href="#4541" id="4541">4541</a>
+<a href="#4542" id="4542">4542</a>
+<a href="#4543" id="4543">4543</a>
+<a href="#4544" id="4544">4544</a>
+<a href="#4545" id="4545">4545</a>
+<a href="#4546" id="4546">4546</a>
+<a href="#4547" id="4547">4547</a>
+<a href="#4548" id="4548">4548</a>
+<a href="#4549" id="4549">4549</a>
+<a href="#4550" id="4550">4550</a>
+<a href="#4551" id="4551">4551</a>
+<a href="#4552" id="4552">4552</a>
+<a href="#4553" id="4553">4553</a>
+<a href="#4554" id="4554">4554</a>
+<a href="#4555" id="4555">4555</a>
+<a href="#4556" id="4556">4556</a>
+<a href="#4557" id="4557">4557</a>
+<a href="#4558" id="4558">4558</a>
+<a href="#4559" id="4559">4559</a>
+<a href="#4560" id="4560">4560</a>
+<a href="#4561" id="4561">4561</a>
+<a href="#4562" id="4562">4562</a>
+<a href="#4563" id="4563">4563</a>
+<a href="#4564" id="4564">4564</a>
+<a href="#4565" id="4565">4565</a>
+<a href="#4566" id="4566">4566</a>
+<a href="#4567" id="4567">4567</a>
+<a href="#4568" id="4568">4568</a>
+<a href="#4569" id="4569">4569</a>
+<a href="#4570" id="4570">4570</a>
+<a href="#4571" id="4571">4571</a>
+<a href="#4572" id="4572">4572</a>
+<a href="#4573" id="4573">4573</a>
+<a href="#4574" id="4574">4574</a>
+<a href="#4575" id="4575">4575</a>
+<a href="#4576" id="4576">4576</a>
+<a href="#4577" id="4577">4577</a>
+<a href="#4578" id="4578">4578</a>
+<a href="#4579" id="4579">4579</a>
+<a href="#4580" id="4580">4580</a>
+<a href="#4581" id="4581">4581</a>
+<a href="#4582" id="4582">4582</a>
+<a href="#4583" id="4583">4583</a>
+<a href="#4584" id="4584">4584</a>
+<a href="#4585" id="4585">4585</a>
+<a href="#4586" id="4586">4586</a>
+<a href="#4587" id="4587">4587</a>
+<a href="#4588" id="4588">4588</a>
+<a href="#4589" id="4589">4589</a>
+<a href="#4590" id="4590">4590</a>
+<a href="#4591" id="4591">4591</a>
+<a href="#4592" id="4592">4592</a>
+<a href="#4593" id="4593">4593</a>
+<a href="#4594" id="4594">4594</a>
+<a href="#4595" id="4595">4595</a>
+<a href="#4596" id="4596">4596</a>
+<a href="#4597" id="4597">4597</a>
+<a href="#4598" id="4598">4598</a>
+<a href="#4599" id="4599">4599</a>
+<a href="#4600" id="4600">4600</a>
+<a href="#4601" id="4601">4601</a>
+<a href="#4602" id="4602">4602</a>
+<a href="#4603" id="4603">4603</a>
+<a href="#4604" id="4604">4604</a>
+<a href="#4605" id="4605">4605</a>
+<a href="#4606" id="4606">4606</a>
+<a href="#4607" id="4607">4607</a>
+<a href="#4608" id="4608">4608</a>
+<a href="#4609" id="4609">4609</a>
+<a href="#4610" id="4610">4610</a>
+<a href="#4611" id="4611">4611</a>
+<a href="#4612" id="4612">4612</a>
+<a href="#4613" id="4613">4613</a>
+<a href="#4614" id="4614">4614</a>
+<a href="#4615" id="4615">4615</a>
+<a href="#4616" id="4616">4616</a>
+<a href="#4617" id="4617">4617</a>
+<a href="#4618" id="4618">4618</a>
+<a href="#4619" id="4619">4619</a>
+<a href="#4620" id="4620">4620</a>
+<a href="#4621" id="4621">4621</a>
+<a href="#4622" id="4622">4622</a>
+<a href="#4623" id="4623">4623</a>
+<a href="#4624" id="4624">4624</a>
+<a href="#4625" id="4625">4625</a>
+<a href="#4626" id="4626">4626</a>
+<a href="#4627" id="4627">4627</a>
+<a href="#4628" id="4628">4628</a>
+<a href="#4629" id="4629">4629</a>
+<a href="#4630" id="4630">4630</a>
+<a href="#4631" id="4631">4631</a>
+<a href="#4632" id="4632">4632</a>
+<a href="#4633" id="4633">4633</a>
+<a href="#4634" id="4634">4634</a>
+<a href="#4635" id="4635">4635</a>
+<a href="#4636" id="4636">4636</a>
+<a href="#4637" id="4637">4637</a>
+<a href="#4638" id="4638">4638</a>
+<a href="#4639" id="4639">4639</a>
+<a href="#4640" id="4640">4640</a>
+<a href="#4641" id="4641">4641</a>
+<a href="#4642" id="4642">4642</a>
+<a href="#4643" id="4643">4643</a>
+<a href="#4644" id="4644">4644</a>
+<a href="#4645" id="4645">4645</a>
+<a href="#4646" id="4646">4646</a>
+<a href="#4647" id="4647">4647</a>
+<a href="#4648" id="4648">4648</a>
+<a href="#4649" id="4649">4649</a>
+<a href="#4650" id="4650">4650</a>
+<a href="#4651" id="4651">4651</a>
+<a href="#4652" id="4652">4652</a>
+<a href="#4653" id="4653">4653</a>
+<a href="#4654" id="4654">4654</a>
+<a href="#4655" id="4655">4655</a>
+<a href="#4656" id="4656">4656</a>
+<a href="#4657" id="4657">4657</a>
+<a href="#4658" id="4658">4658</a>
+<a href="#4659" id="4659">4659</a>
+<a href="#4660" id="4660">4660</a>
+<a href="#4661" id="4661">4661</a>
+<a href="#4662" id="4662">4662</a>
+<a href="#4663" id="4663">4663</a>
+<a href="#4664" id="4664">4664</a>
+<a href="#4665" id="4665">4665</a>
+<a href="#4666" id="4666">4666</a>
+<a href="#4667" id="4667">4667</a>
+<a href="#4668" id="4668">4668</a>
+<a href="#4669" id="4669">4669</a>
+<a href="#4670" id="4670">4670</a>
+<a href="#4671" id="4671">4671</a>
+<a href="#4672" id="4672">4672</a>
+<a href="#4673" id="4673">4673</a>
+<a href="#4674" id="4674">4674</a>
+<a href="#4675" id="4675">4675</a>
+<a href="#4676" id="4676">4676</a>
+<a href="#4677" id="4677">4677</a>
+<a href="#4678" id="4678">4678</a>
+<a href="#4679" id="4679">4679</a>
+<a href="#4680" id="4680">4680</a>
+<a href="#4681" id="4681">4681</a>
+<a href="#4682" id="4682">4682</a>
+<a href="#4683" id="4683">4683</a>
+<a href="#4684" id="4684">4684</a>
+<a href="#4685" id="4685">4685</a>
+<a href="#4686" id="4686">4686</a>
+<a href="#4687" id="4687">4687</a>
+<a href="#4688" id="4688">4688</a>
+<a href="#4689" id="4689">4689</a>
+<a href="#4690" id="4690">4690</a>
+<a href="#4691" id="4691">4691</a>
+<a href="#4692" id="4692">4692</a>
+<a href="#4693" id="4693">4693</a>
+<a href="#4694" id="4694">4694</a>
+<a href="#4695" id="4695">4695</a>
+<a href="#4696" id="4696">4696</a>
+<a href="#4697" id="4697">4697</a>
+<a href="#4698" id="4698">4698</a>
+<a href="#4699" id="4699">4699</a>
+<a href="#4700" id="4700">4700</a>
+<a href="#4701" id="4701">4701</a>
+<a href="#4702" id="4702">4702</a>
+<a href="#4703" id="4703">4703</a>
+<a href="#4704" id="4704">4704</a>
+<a href="#4705" id="4705">4705</a>
+<a href="#4706" id="4706">4706</a>
+<a href="#4707" id="4707">4707</a>
+<a href="#4708" id="4708">4708</a>
+<a href="#4709" id="4709">4709</a>
+<a href="#4710" id="4710">4710</a>
+<a href="#4711" id="4711">4711</a>
+<a href="#4712" id="4712">4712</a>
+<a href="#4713" id="4713">4713</a>
+<a href="#4714" id="4714">4714</a>
+<a href="#4715" id="4715">4715</a>
+<a href="#4716" id="4716">4716</a>
+<a href="#4717" id="4717">4717</a>
+<a href="#4718" id="4718">4718</a>
+<a href="#4719" id="4719">4719</a>
+<a href="#4720" id="4720">4720</a>
+<a href="#4721" id="4721">4721</a>
+<a href="#4722" id="4722">4722</a>
+<a href="#4723" id="4723">4723</a>
+<a href="#4724" id="4724">4724</a>
+<a href="#4725" id="4725">4725</a>
+<a href="#4726" id="4726">4726</a>
+<a href="#4727" id="4727">4727</a>
+<a href="#4728" id="4728">4728</a>
+<a href="#4729" id="4729">4729</a>
+<a href="#4730" id="4730">4730</a>
+<a href="#4731" id="4731">4731</a>
+<a href="#4732" id="4732">4732</a>
+<a href="#4733" id="4733">4733</a>
+<a href="#4734" id="4734">4734</a>
+<a href="#4735" id="4735">4735</a>
+<a href="#4736" id="4736">4736</a>
+<a href="#4737" id="4737">4737</a>
+<a href="#4738" id="4738">4738</a>
+<a href="#4739" id="4739">4739</a>
+<a href="#4740" id="4740">4740</a>
+<a href="#4741" id="4741">4741</a>
+<a href="#4742" id="4742">4742</a>
+<a href="#4743" id="4743">4743</a>
+<a href="#4744" id="4744">4744</a>
+<a href="#4745" id="4745">4745</a>
+<a href="#4746" id="4746">4746</a>
+<a href="#4747" id="4747">4747</a>
+<a href="#4748" id="4748">4748</a>
+<a href="#4749" id="4749">4749</a>
+<a href="#4750" id="4750">4750</a>
+<a href="#4751" id="4751">4751</a>
+<a href="#4752" id="4752">4752</a>
+<a href="#4753" id="4753">4753</a>
+<a href="#4754" id="4754">4754</a>
+<a href="#4755" id="4755">4755</a>
+<a href="#4756" id="4756">4756</a>
+<a href="#4757" id="4757">4757</a>
+<a href="#4758" id="4758">4758</a>
+<a href="#4759" id="4759">4759</a>
+<a href="#4760" id="4760">4760</a>
+<a href="#4761" id="4761">4761</a>
+<a href="#4762" id="4762">4762</a>
+<a href="#4763" id="4763">4763</a>
+<a href="#4764" id="4764">4764</a>
+<a href="#4765" id="4765">4765</a>
+<a href="#4766" id="4766">4766</a>
+<a href="#4767" id="4767">4767</a>
+<a href="#4768" id="4768">4768</a>
+<a href="#4769" id="4769">4769</a>
+<a href="#4770" id="4770">4770</a>
+<a href="#4771" id="4771">4771</a>
+<a href="#4772" id="4772">4772</a>
+<a href="#4773" id="4773">4773</a>
+<a href="#4774" id="4774">4774</a>
+<a href="#4775" id="4775">4775</a>
+<a href="#4776" id="4776">4776</a>
+<a href="#4777" id="4777">4777</a>
+<a href="#4778" id="4778">4778</a>
+<a href="#4779" id="4779">4779</a>
+<a href="#4780" id="4780">4780</a>
+<a href="#4781" id="4781">4781</a>
+<a href="#4782" id="4782">4782</a>
+<a href="#4783" id="4783">4783</a>
+<a href="#4784" id="4784">4784</a>
+<a href="#4785" id="4785">4785</a>
+<a href="#4786" id="4786">4786</a>
+<a href="#4787" id="4787">4787</a>
+<a href="#4788" id="4788">4788</a>
+<a href="#4789" id="4789">4789</a>
+<a href="#4790" id="4790">4790</a>
+<a href="#4791" id="4791">4791</a>
+<a href="#4792" id="4792">4792</a>
+<a href="#4793" id="4793">4793</a>
+<a href="#4794" id="4794">4794</a>
+<a href="#4795" id="4795">4795</a>
+<a href="#4796" id="4796">4796</a>
+<a href="#4797" id="4797">4797</a>
+<a href="#4798" id="4798">4798</a>
+<a href="#4799" id="4799">4799</a>
+<a href="#4800" id="4800">4800</a>
+<a href="#4801" id="4801">4801</a>
+<a href="#4802" id="4802">4802</a>
+<a href="#4803" id="4803">4803</a>
+<a href="#4804" id="4804">4804</a>
+<a href="#4805" id="4805">4805</a>
+<a href="#4806" id="4806">4806</a>
+<a href="#4807" id="4807">4807</a>
+<a href="#4808" id="4808">4808</a>
+<a href="#4809" id="4809">4809</a>
+<a href="#4810" id="4810">4810</a>
+<a href="#4811" id="4811">4811</a>
+<a href="#4812" id="4812">4812</a>
+<a href="#4813" id="4813">4813</a>
+<a href="#4814" id="4814">4814</a>
+<a href="#4815" id="4815">4815</a>
+<a href="#4816" id="4816">4816</a>
+<a href="#4817" id="4817">4817</a>
+<a href="#4818" id="4818">4818</a>
+<a href="#4819" id="4819">4819</a>
+<a href="#4820" id="4820">4820</a>
+<a href="#4821" id="4821">4821</a>
+<a href="#4822" id="4822">4822</a>
+<a href="#4823" id="4823">4823</a>
+<a href="#4824" id="4824">4824</a>
+<a href="#4825" id="4825">4825</a>
+<a href="#4826" id="4826">4826</a>
+<a href="#4827" id="4827">4827</a>
+<a href="#4828" id="4828">4828</a>
+<a href="#4829" id="4829">4829</a>
+<a href="#4830" id="4830">4830</a>
+<a href="#4831" id="4831">4831</a>
+<a href="#4832" id="4832">4832</a>
+<a href="#4833" id="4833">4833</a>
+<a href="#4834" id="4834">4834</a>
+<a href="#4835" id="4835">4835</a>
+<a href="#4836" id="4836">4836</a>
+<a href="#4837" id="4837">4837</a>
+<a href="#4838" id="4838">4838</a>
+<a href="#4839" id="4839">4839</a>
+<a href="#4840" id="4840">4840</a>
+<a href="#4841" id="4841">4841</a>
+<a href="#4842" id="4842">4842</a>
+<a href="#4843" id="4843">4843</a>
+<a href="#4844" id="4844">4844</a>
+<a href="#4845" id="4845">4845</a>
+<a href="#4846" id="4846">4846</a>
+<a href="#4847" id="4847">4847</a>
+<a href="#4848" id="4848">4848</a>
+<a href="#4849" id="4849">4849</a>
+<a href="#4850" id="4850">4850</a>
+<a href="#4851" id="4851">4851</a>
+<a href="#4852" id="4852">4852</a>
+<a href="#4853" id="4853">4853</a>
+<a href="#4854" id="4854">4854</a>
+<a href="#4855" id="4855">4855</a>
+<a href="#4856" id="4856">4856</a>
+<a href="#4857" id="4857">4857</a>
+<a href="#4858" id="4858">4858</a>
+<a href="#4859" id="4859">4859</a>
+<a href="#4860" id="4860">4860</a>
+<a href="#4861" id="4861">4861</a>
+<a href="#4862" id="4862">4862</a>
+<a href="#4863" id="4863">4863</a>
+<a href="#4864" id="4864">4864</a>
+<a href="#4865" id="4865">4865</a>
+<a href="#4866" id="4866">4866</a>
+<a href="#4867" id="4867">4867</a>
+<a href="#4868" id="4868">4868</a>
+<a href="#4869" id="4869">4869</a>
+<a href="#4870" id="4870">4870</a>
+<a href="#4871" id="4871">4871</a>
+<a href="#4872" id="4872">4872</a>
+<a href="#4873" id="4873">4873</a>
+<a href="#4874" id="4874">4874</a>
+<a href="#4875" id="4875">4875</a>
+<a href="#4876" id="4876">4876</a>
+<a href="#4877" id="4877">4877</a>
+<a href="#4878" id="4878">4878</a>
+<a href="#4879" id="4879">4879</a>
+<a href="#4880" id="4880">4880</a>
+<a href="#4881" id="4881">4881</a>
+<a href="#4882" id="4882">4882</a>
+<a href="#4883" id="4883">4883</a>
+<a href="#4884" id="4884">4884</a>
+<a href="#4885" id="4885">4885</a>
+<a href="#4886" id="4886">4886</a>
+<a href="#4887" id="4887">4887</a>
+<a href="#4888" id="4888">4888</a>
+<a href="#4889" id="4889">4889</a>
+<a href="#4890" id="4890">4890</a>
+<a href="#4891" id="4891">4891</a>
+<a href="#4892" id="4892">4892</a>
+<a href="#4893" id="4893">4893</a>
+<a href="#4894" id="4894">4894</a>
+<a href="#4895" id="4895">4895</a>
+<a href="#4896" id="4896">4896</a>
+<a href="#4897" id="4897">4897</a>
+<a href="#4898" id="4898">4898</a>
+<a href="#4899" id="4899">4899</a>
+<a href="#4900" id="4900">4900</a>
+<a href="#4901" id="4901">4901</a>
+<a href="#4902" id="4902">4902</a>
+<a href="#4903" id="4903">4903</a>
+<a href="#4904" id="4904">4904</a>
+<a href="#4905" id="4905">4905</a>
+<a href="#4906" id="4906">4906</a>
+<a href="#4907" id="4907">4907</a>
+<a href="#4908" id="4908">4908</a>
+<a href="#4909" id="4909">4909</a>
+<a href="#4910" id="4910">4910</a>
+<a href="#4911" id="4911">4911</a>
+<a href="#4912" id="4912">4912</a>
+<a href="#4913" id="4913">4913</a>
+<a href="#4914" id="4914">4914</a>
+<a href="#4915" id="4915">4915</a>
+<a href="#4916" id="4916">4916</a>
+<a href="#4917" id="4917">4917</a>
+<a href="#4918" id="4918">4918</a>
+<a href="#4919" id="4919">4919</a>
+<a href="#4920" id="4920">4920</a>
+<a href="#4921" id="4921">4921</a>
+<a href="#4922" id="4922">4922</a>
+<a href="#4923" id="4923">4923</a>
+<a href="#4924" id="4924">4924</a>
+<a href="#4925" id="4925">4925</a>
+<a href="#4926" id="4926">4926</a>
+<a href="#4927" id="4927">4927</a>
+<a href="#4928" id="4928">4928</a>
+<a href="#4929" id="4929">4929</a>
+<a href="#4930" id="4930">4930</a>
+<a href="#4931" id="4931">4931</a>
+<a href="#4932" id="4932">4932</a>
+<a href="#4933" id="4933">4933</a>
+<a href="#4934" id="4934">4934</a>
+<a href="#4935" id="4935">4935</a>
+<a href="#4936" id="4936">4936</a>
+<a href="#4937" id="4937">4937</a>
+<a href="#4938" id="4938">4938</a>
+<a href="#4939" id="4939">4939</a>
+<a href="#4940" id="4940">4940</a>
+<a href="#4941" id="4941">4941</a>
+<a href="#4942" id="4942">4942</a>
+<a href="#4943" id="4943">4943</a>
+<a href="#4944" id="4944">4944</a>
+<a href="#4945" id="4945">4945</a>
+<a href="#4946" id="4946">4946</a>
+<a href="#4947" id="4947">4947</a>
+<a href="#4948" id="4948">4948</a>
+<a href="#4949" id="4949">4949</a>
+<a href="#4950" id="4950">4950</a>
+<a href="#4951" id="4951">4951</a>
+<a href="#4952" id="4952">4952</a>
+<a href="#4953" id="4953">4953</a>
+<a href="#4954" id="4954">4954</a>
+<a href="#4955" id="4955">4955</a>
+<a href="#4956" id="4956">4956</a>
+<a href="#4957" id="4957">4957</a>
+<a href="#4958" id="4958">4958</a>
+<a href="#4959" id="4959">4959</a>
+<a href="#4960" id="4960">4960</a>
+<a href="#4961" id="4961">4961</a>
+<a href="#4962" id="4962">4962</a>
+<a href="#4963" id="4963">4963</a>
+<a href="#4964" id="4964">4964</a>
+<a href="#4965" id="4965">4965</a>
+<a href="#4966" id="4966">4966</a>
+<a href="#4967" id="4967">4967</a>
+<a href="#4968" id="4968">4968</a>
+<a href="#4969" id="4969">4969</a>
+<a href="#4970" id="4970">4970</a>
+<a href="#4971" id="4971">4971</a>
+<a href="#4972" id="4972">4972</a>
+<a href="#4973" id="4973">4973</a>
+<a href="#4974" id="4974">4974</a>
+<a href="#4975" id="4975">4975</a>
+<a href="#4976" id="4976">4976</a>
+<a href="#4977" id="4977">4977</a>
+<a href="#4978" id="4978">4978</a>
+<a href="#4979" id="4979">4979</a>
+<a href="#4980" id="4980">4980</a>
+<a href="#4981" id="4981">4981</a>
+<a href="#4982" id="4982">4982</a>
+<a href="#4983" id="4983">4983</a>
+<a href="#4984" id="4984">4984</a>
+<a href="#4985" id="4985">4985</a>
+<a href="#4986" id="4986">4986</a>
+<a href="#4987" id="4987">4987</a>
+<a href="#4988" id="4988">4988</a>
+<a href="#4989" id="4989">4989</a>
+<a href="#4990" id="4990">4990</a>
+<a href="#4991" id="4991">4991</a>
+<a href="#4992" id="4992">4992</a>
+<a href="#4993" id="4993">4993</a>
+<a href="#4994" id="4994">4994</a>
+<a href="#4995" id="4995">4995</a>
+<a href="#4996" id="4996">4996</a>
+<a href="#4997" id="4997">4997</a>
+<a href="#4998" id="4998">4998</a>
+<a href="#4999" id="4999">4999</a>
+<a href="#5000" id="5000">5000</a>
+<a href="#5001" id="5001">5001</a>
+<a href="#5002" id="5002">5002</a>
+<a href="#5003" id="5003">5003</a>
+<a href="#5004" id="5004">5004</a>
+<a href="#5005" id="5005">5005</a>
+<a href="#5006" id="5006">5006</a>
+<a href="#5007" id="5007">5007</a>
+<a href="#5008" id="5008">5008</a>
+<a href="#5009" id="5009">5009</a>
+<a href="#5010" id="5010">5010</a>
+<a href="#5011" id="5011">5011</a>
+<a href="#5012" id="5012">5012</a>
+<a href="#5013" id="5013">5013</a>
+<a href="#5014" id="5014">5014</a>
+<a href="#5015" id="5015">5015</a>
+<a href="#5016" id="5016">5016</a>
+<a href="#5017" id="5017">5017</a>
+<a href="#5018" id="5018">5018</a>
+<a href="#5019" id="5019">5019</a>
+<a href="#5020" id="5020">5020</a>
+<a href="#5021" id="5021">5021</a>
+<a href="#5022" id="5022">5022</a>
+<a href="#5023" id="5023">5023</a>
+<a href="#5024" id="5024">5024</a>
+<a href="#5025" id="5025">5025</a>
+<a href="#5026" id="5026">5026</a>
+<a href="#5027" id="5027">5027</a>
+<a href="#5028" id="5028">5028</a>
+<a href="#5029" id="5029">5029</a>
+<a href="#5030" id="5030">5030</a>
+<a href="#5031" id="5031">5031</a>
+<a href="#5032" id="5032">5032</a>
+<a href="#5033" id="5033">5033</a>
+<a href="#5034" id="5034">5034</a>
+<a href="#5035" id="5035">5035</a>
+<a href="#5036" id="5036">5036</a>
+<a href="#5037" id="5037">5037</a>
+<a href="#5038" id="5038">5038</a>
+<a href="#5039" id="5039">5039</a>
+<a href="#5040" id="5040">5040</a>
+<a href="#5041" id="5041">5041</a>
+<a href="#5042" id="5042">5042</a>
+<a href="#5043" id="5043">5043</a>
+<a href="#5044" id="5044">5044</a>
+<a href="#5045" id="5045">5045</a>
+<a href="#5046" id="5046">5046</a>
+<a href="#5047" id="5047">5047</a>
+<a href="#5048" id="5048">5048</a>
+<a href="#5049" id="5049">5049</a>
+<a href="#5050" id="5050">5050</a>
+<a href="#5051" id="5051">5051</a>
+<a href="#5052" id="5052">5052</a>
+<a href="#5053" id="5053">5053</a>
+<a href="#5054" id="5054">5054</a>
+<a href="#5055" id="5055">5055</a>
+<a href="#5056" id="5056">5056</a>
+<a href="#5057" id="5057">5057</a>
+<a href="#5058" id="5058">5058</a>
+<a href="#5059" id="5059">5059</a>
+<a href="#5060" id="5060">5060</a>
+<a href="#5061" id="5061">5061</a>
+<a href="#5062" id="5062">5062</a>
+<a href="#5063" id="5063">5063</a>
+<a href="#5064" id="5064">5064</a>
+<a href="#5065" id="5065">5065</a>
+<a href="#5066" id="5066">5066</a>
+<a href="#5067" id="5067">5067</a>
+<a href="#5068" id="5068">5068</a>
+<a href="#5069" id="5069">5069</a>
+<a href="#5070" id="5070">5070</a>
+<a href="#5071" id="5071">5071</a>
+<a href="#5072" id="5072">5072</a>
+<a href="#5073" id="5073">5073</a>
+<a href="#5074" id="5074">5074</a>
+<a href="#5075" id="5075">5075</a>
+<a href="#5076" id="5076">5076</a>
+<a href="#5077" id="5077">5077</a>
+<a href="#5078" id="5078">5078</a>
+<a href="#5079" id="5079">5079</a>
+<a href="#5080" id="5080">5080</a>
+<a href="#5081" id="5081">5081</a>
+<a href="#5082" id="5082">5082</a>
+<a href="#5083" id="5083">5083</a>
+<a href="#5084" id="5084">5084</a>
+<a href="#5085" id="5085">5085</a>
+<a href="#5086" id="5086">5086</a>
+<a href="#5087" id="5087">5087</a>
+<a href="#5088" id="5088">5088</a>
+<a href="#5089" id="5089">5089</a>
+<a href="#5090" id="5090">5090</a>
+<a href="#5091" id="5091">5091</a>
+<a href="#5092" id="5092">5092</a>
+<a href="#5093" id="5093">5093</a>
+<a href="#5094" id="5094">5094</a>
+<a href="#5095" id="5095">5095</a>
+<a href="#5096" id="5096">5096</a>
+<a href="#5097" id="5097">5097</a>
+<a href="#5098" id="5098">5098</a>
+<a href="#5099" id="5099">5099</a>
+<a href="#5100" id="5100">5100</a>
+<a href="#5101" id="5101">5101</a>
+<a href="#5102" id="5102">5102</a>
+<a href="#5103" id="5103">5103</a>
+<a href="#5104" id="5104">5104</a>
+<a href="#5105" id="5105">5105</a>
+<a href="#5106" id="5106">5106</a>
+<a href="#5107" id="5107">5107</a>
+<a href="#5108" id="5108">5108</a>
+<a href="#5109" id="5109">5109</a>
+<a href="#5110" id="5110">5110</a>
+<a href="#5111" id="5111">5111</a>
+<a href="#5112" id="5112">5112</a>
+<a href="#5113" id="5113">5113</a>
+<a href="#5114" id="5114">5114</a>
+<a href="#5115" id="5115">5115</a>
+<a href="#5116" id="5116">5116</a>
+<a href="#5117" id="5117">5117</a>
+<a href="#5118" id="5118">5118</a>
+<a href="#5119" id="5119">5119</a>
+<a href="#5120" id="5120">5120</a>
+<a href="#5121" id="5121">5121</a>
+<a href="#5122" id="5122">5122</a>
+<a href="#5123" id="5123">5123</a>
+<a href="#5124" id="5124">5124</a>
+<a href="#5125" id="5125">5125</a>
+<a href="#5126" id="5126">5126</a>
+<a href="#5127" id="5127">5127</a>
+<a href="#5128" id="5128">5128</a>
+<a href="#5129" id="5129">5129</a>
+<a href="#5130" id="5130">5130</a>
+<a href="#5131" id="5131">5131</a>
+<a href="#5132" id="5132">5132</a>
+<a href="#5133" id="5133">5133</a>
+<a href="#5134" id="5134">5134</a>
+<a href="#5135" id="5135">5135</a>
+<a href="#5136" id="5136">5136</a>
+<a href="#5137" id="5137">5137</a>
+<a href="#5138" id="5138">5138</a>
+<a href="#5139" id="5139">5139</a>
+<a href="#5140" id="5140">5140</a>
+<a href="#5141" id="5141">5141</a>
+<a href="#5142" id="5142">5142</a>
+<a href="#5143" id="5143">5143</a>
+<a href="#5144" id="5144">5144</a>
+<a href="#5145" id="5145">5145</a>
+<a href="#5146" id="5146">5146</a>
+<a href="#5147" id="5147">5147</a>
+<a href="#5148" id="5148">5148</a>
+<a href="#5149" id="5149">5149</a>
+<a href="#5150" id="5150">5150</a>
+<a href="#5151" id="5151">5151</a>
+<a href="#5152" id="5152">5152</a>
+<a href="#5153" id="5153">5153</a>
+<a href="#5154" id="5154">5154</a>
+<a href="#5155" id="5155">5155</a>
+<a href="#5156" id="5156">5156</a>
+<a href="#5157" id="5157">5157</a>
+<a href="#5158" id="5158">5158</a>
+<a href="#5159" id="5159">5159</a>
+<a href="#5160" id="5160">5160</a>
+<a href="#5161" id="5161">5161</a>
+<a href="#5162" id="5162">5162</a>
+<a href="#5163" id="5163">5163</a>
+<a href="#5164" id="5164">5164</a>
+<a href="#5165" id="5165">5165</a>
+<a href="#5166" id="5166">5166</a>
+<a href="#5167" id="5167">5167</a>
+<a href="#5168" id="5168">5168</a>
+<a href="#5169" id="5169">5169</a>
+<a href="#5170" id="5170">5170</a>
+<a href="#5171" id="5171">5171</a>
+<a href="#5172" id="5172">5172</a>
+<a href="#5173" id="5173">5173</a>
+<a href="#5174" id="5174">5174</a>
+<a href="#5175" id="5175">5175</a>
+<a href="#5176" id="5176">5176</a>
+<a href="#5177" id="5177">5177</a>
+<a href="#5178" id="5178">5178</a>
+<a href="#5179" id="5179">5179</a>
+<a href="#5180" id="5180">5180</a>
+<a href="#5181" id="5181">5181</a>
+<a href="#5182" id="5182">5182</a>
+<a href="#5183" id="5183">5183</a>
+<a href="#5184" id="5184">5184</a>
+<a href="#5185" id="5185">5185</a>
+<a href="#5186" id="5186">5186</a>
+<a href="#5187" id="5187">5187</a>
+<a href="#5188" id="5188">5188</a>
+<a href="#5189" id="5189">5189</a>
+<a href="#5190" id="5190">5190</a>
+<a href="#5191" id="5191">5191</a>
+<a href="#5192" id="5192">5192</a>
+<a href="#5193" id="5193">5193</a>
+<a href="#5194" id="5194">5194</a>
+<a href="#5195" id="5195">5195</a>
+<a href="#5196" id="5196">5196</a>
+<a href="#5197" id="5197">5197</a>
+<a href="#5198" id="5198">5198</a>
+<a href="#5199" id="5199">5199</a>
+<a href="#5200" id="5200">5200</a>
+<a href="#5201" id="5201">5201</a>
+<a href="#5202" id="5202">5202</a>
+<a href="#5203" id="5203">5203</a>
+<a href="#5204" id="5204">5204</a>
+<a href="#5205" id="5205">5205</a>
+<a href="#5206" id="5206">5206</a>
+<a href="#5207" id="5207">5207</a>
+<a href="#5208" id="5208">5208</a>
+<a href="#5209" id="5209">5209</a>
+<a href="#5210" id="5210">5210</a>
+<a href="#5211" id="5211">5211</a>
+<a href="#5212" id="5212">5212</a>
+<a href="#5213" id="5213">5213</a>
+<a href="#5214" id="5214">5214</a>
+<a href="#5215" id="5215">5215</a>
+<a href="#5216" id="5216">5216</a>
+<a href="#5217" id="5217">5217</a>
+<a href="#5218" id="5218">5218</a>
+<a href="#5219" id="5219">5219</a>
+<a href="#5220" id="5220">5220</a>
+<a href="#5221" id="5221">5221</a>
+<a href="#5222" id="5222">5222</a>
+<a href="#5223" id="5223">5223</a>
+<a href="#5224" id="5224">5224</a>
+<a href="#5225" id="5225">5225</a>
+<a href="#5226" id="5226">5226</a>
+<a href="#5227" id="5227">5227</a>
+<a href="#5228" id="5228">5228</a>
+<a href="#5229" id="5229">5229</a>
+<a href="#5230" id="5230">5230</a>
+<a href="#5231" id="5231">5231</a>
+<a href="#5232" id="5232">5232</a>
+<a href="#5233" id="5233">5233</a>
+<a href="#5234" id="5234">5234</a>
+<a href="#5235" id="5235">5235</a>
+<a href="#5236" id="5236">5236</a>
+<a href="#5237" id="5237">5237</a>
+<a href="#5238" id="5238">5238</a>
+<a href="#5239" id="5239">5239</a>
+<a href="#5240" id="5240">5240</a>
+<a href="#5241" id="5241">5241</a>
+<a href="#5242" id="5242">5242</a>
+<a href="#5243" id="5243">5243</a>
+<a href="#5244" id="5244">5244</a>
+<a href="#5245" id="5245">5245</a>
+<a href="#5246" id="5246">5246</a>
+<a href="#5247" id="5247">5247</a>
+<a href="#5248" id="5248">5248</a>
+<a href="#5249" id="5249">5249</a>
+<a href="#5250" id="5250">5250</a>
+<a href="#5251" id="5251">5251</a>
+<a href="#5252" id="5252">5252</a>
+<a href="#5253" id="5253">5253</a>
+<a href="#5254" id="5254">5254</a>
+<a href="#5255" id="5255">5255</a>
+<a href="#5256" id="5256">5256</a>
+<a href="#5257" id="5257">5257</a>
+<a href="#5258" id="5258">5258</a>
+<a href="#5259" id="5259">5259</a>
+<a href="#5260" id="5260">5260</a>
+<a href="#5261" id="5261">5261</a>
+<a href="#5262" id="5262">5262</a>
+<a href="#5263" id="5263">5263</a>
+<a href="#5264" id="5264">5264</a>
+<a href="#5265" id="5265">5265</a>
+<a href="#5266" id="5266">5266</a>
+<a href="#5267" id="5267">5267</a>
+<a href="#5268" id="5268">5268</a>
+<a href="#5269" id="5269">5269</a>
+<a href="#5270" id="5270">5270</a>
+<a href="#5271" id="5271">5271</a>
+<a href="#5272" id="5272">5272</a>
+<a href="#5273" id="5273">5273</a>
+<a href="#5274" id="5274">5274</a>
+<a href="#5275" id="5275">5275</a>
+<a href="#5276" id="5276">5276</a>
+<a href="#5277" id="5277">5277</a>
+<a href="#5278" id="5278">5278</a>
+<a href="#5279" id="5279">5279</a>
+<a href="#5280" id="5280">5280</a>
+<a href="#5281" id="5281">5281</a>
+<a href="#5282" id="5282">5282</a>
+<a href="#5283" id="5283">5283</a>
+<a href="#5284" id="5284">5284</a>
+<a href="#5285" id="5285">5285</a>
+<a href="#5286" id="5286">5286</a>
+<a href="#5287" id="5287">5287</a>
+<a href="#5288" id="5288">5288</a>
+<a href="#5289" id="5289">5289</a>
+<a href="#5290" id="5290">5290</a>
+<a href="#5291" id="5291">5291</a>
+<a href="#5292" id="5292">5292</a>
+<a href="#5293" id="5293">5293</a>
+<a href="#5294" id="5294">5294</a>
+<a href="#5295" id="5295">5295</a>
+<a href="#5296" id="5296">5296</a>
+<a href="#5297" id="5297">5297</a>
+<a href="#5298" id="5298">5298</a>
+<a href="#5299" id="5299">5299</a>
+<a href="#5300" id="5300">5300</a>
+<a href="#5301" id="5301">5301</a>
+<a href="#5302" id="5302">5302</a>
+<a href="#5303" id="5303">5303</a>
+<a href="#5304" id="5304">5304</a>
+<a href="#5305" id="5305">5305</a>
+<a href="#5306" id="5306">5306</a>
+<a href="#5307" id="5307">5307</a>
+<a href="#5308" id="5308">5308</a>
+<a href="#5309" id="5309">5309</a>
+<a href="#5310" id="5310">5310</a>
+<a href="#5311" id="5311">5311</a>
+<a href="#5312" id="5312">5312</a>
+<a href="#5313" id="5313">5313</a>
+<a href="#5314" id="5314">5314</a>
+<a href="#5315" id="5315">5315</a>
+<a href="#5316" id="5316">5316</a>
+<a href="#5317" id="5317">5317</a>
+<a href="#5318" id="5318">5318</a>
+<a href="#5319" id="5319">5319</a>
+<a href="#5320" id="5320">5320</a>
+<a href="#5321" id="5321">5321</a>
+<a href="#5322" id="5322">5322</a>
+<a href="#5323" id="5323">5323</a>
+<a href="#5324" id="5324">5324</a>
+<a href="#5325" id="5325">5325</a>
+<a href="#5326" id="5326">5326</a>
+<a href="#5327" id="5327">5327</a>
+<a href="#5328" id="5328">5328</a>
+<a href="#5329" id="5329">5329</a>
+<a href="#5330" id="5330">5330</a>
+<a href="#5331" id="5331">5331</a>
+<a href="#5332" id="5332">5332</a>
+<a href="#5333" id="5333">5333</a>
+<a href="#5334" id="5334">5334</a>
+<a href="#5335" id="5335">5335</a>
+<a href="#5336" id="5336">5336</a>
+<a href="#5337" id="5337">5337</a>
+<a href="#5338" id="5338">5338</a>
+<a href="#5339" id="5339">5339</a>
+<a href="#5340" id="5340">5340</a>
+<a href="#5341" id="5341">5341</a>
+<a href="#5342" id="5342">5342</a>
+<a href="#5343" id="5343">5343</a>
+<a href="#5344" id="5344">5344</a>
+<a href="#5345" id="5345">5345</a>
+<a href="#5346" id="5346">5346</a>
+<a href="#5347" id="5347">5347</a>
+<a href="#5348" id="5348">5348</a>
+<a href="#5349" id="5349">5349</a>
+<a href="#5350" id="5350">5350</a>
+<a href="#5351" id="5351">5351</a>
+<a href="#5352" id="5352">5352</a>
+<a href="#5353" id="5353">5353</a>
+<a href="#5354" id="5354">5354</a>
+<a href="#5355" id="5355">5355</a>
+<a href="#5356" id="5356">5356</a>
+<a href="#5357" id="5357">5357</a>
+<a href="#5358" id="5358">5358</a>
+<a href="#5359" id="5359">5359</a>
+<a href="#5360" id="5360">5360</a>
+<a href="#5361" id="5361">5361</a>
+<a href="#5362" id="5362">5362</a>
+<a href="#5363" id="5363">5363</a>
+<a href="#5364" id="5364">5364</a>
+<a href="#5365" id="5365">5365</a>
+<a href="#5366" id="5366">5366</a>
+<a href="#5367" id="5367">5367</a>
+<a href="#5368" id="5368">5368</a>
+<a href="#5369" id="5369">5369</a>
+<a href="#5370" id="5370">5370</a>
+<a href="#5371" id="5371">5371</a>
+<a href="#5372" id="5372">5372</a>
+<a href="#5373" id="5373">5373</a>
+<a href="#5374" id="5374">5374</a>
+<a href="#5375" id="5375">5375</a>
+<a href="#5376" id="5376">5376</a>
+<a href="#5377" id="5377">5377</a>
+<a href="#5378" id="5378">5378</a>
+<a href="#5379" id="5379">5379</a>
+<a href="#5380" id="5380">5380</a>
+<a href="#5381" id="5381">5381</a>
+<a href="#5382" id="5382">5382</a>
+<a href="#5383" id="5383">5383</a>
+<a href="#5384" id="5384">5384</a>
+<a href="#5385" id="5385">5385</a>
+<a href="#5386" id="5386">5386</a>
+<a href="#5387" id="5387">5387</a>
+<a href="#5388" id="5388">5388</a>
+<a href="#5389" id="5389">5389</a>
+<a href="#5390" id="5390">5390</a>
+<a href="#5391" id="5391">5391</a>
+<a href="#5392" id="5392">5392</a>
+<a href="#5393" id="5393">5393</a>
+<a href="#5394" id="5394">5394</a>
+<a href="#5395" id="5395">5395</a>
+<a href="#5396" id="5396">5396</a>
+<a href="#5397" id="5397">5397</a>
+<a href="#5398" id="5398">5398</a>
+<a href="#5399" id="5399">5399</a>
+<a href="#5400" id="5400">5400</a>
+<a href="#5401" id="5401">5401</a>
+<a href="#5402" id="5402">5402</a>
+<a href="#5403" id="5403">5403</a>
+<a href="#5404" id="5404">5404</a>
+<a href="#5405" id="5405">5405</a>
+<a href="#5406" id="5406">5406</a>
+<a href="#5407" id="5407">5407</a>
+<a href="#5408" id="5408">5408</a>
+<a href="#5409" id="5409">5409</a>
+<a href="#5410" id="5410">5410</a>
+<a href="#5411" id="5411">5411</a>
+<a href="#5412" id="5412">5412</a>
+<a href="#5413" id="5413">5413</a>
+<a href="#5414" id="5414">5414</a>
+<a href="#5415" id="5415">5415</a>
+<a href="#5416" id="5416">5416</a>
+<a href="#5417" id="5417">5417</a>
+<a href="#5418" id="5418">5418</a>
+<a href="#5419" id="5419">5419</a>
+<a href="#5420" id="5420">5420</a>
+<a href="#5421" id="5421">5421</a>
+<a href="#5422" id="5422">5422</a>
+<a href="#5423" id="5423">5423</a>
+<a href="#5424" id="5424">5424</a>
+<a href="#5425" id="5425">5425</a>
+<a href="#5426" id="5426">5426</a>
+<a href="#5427" id="5427">5427</a>
+<a href="#5428" id="5428">5428</a>
+<a href="#5429" id="5429">5429</a>
+<a href="#5430" id="5430">5430</a>
+<a href="#5431" id="5431">5431</a>
+<a href="#5432" id="5432">5432</a>
+<a href="#5433" id="5433">5433</a>
+<a href="#5434" id="5434">5434</a>
+<a href="#5435" id="5435">5435</a>
+<a href="#5436" id="5436">5436</a>
+<a href="#5437" id="5437">5437</a>
+<a href="#5438" id="5438">5438</a>
+<a href="#5439" id="5439">5439</a>
+<a href="#5440" id="5440">5440</a>
+<a href="#5441" id="5441">5441</a>
+<a href="#5442" id="5442">5442</a>
+<a href="#5443" id="5443">5443</a>
+<a href="#5444" id="5444">5444</a>
+<a href="#5445" id="5445">5445</a>
+<a href="#5446" id="5446">5446</a>
+<a href="#5447" id="5447">5447</a>
+<a href="#5448" id="5448">5448</a>
+<a href="#5449" id="5449">5449</a>
+<a href="#5450" id="5450">5450</a>
+<a href="#5451" id="5451">5451</a>
+<a href="#5452" id="5452">5452</a>
+<a href="#5453" id="5453">5453</a>
+<a href="#5454" id="5454">5454</a>
+<a href="#5455" id="5455">5455</a>
+<a href="#5456" id="5456">5456</a>
+<a href="#5457" id="5457">5457</a>
+<a href="#5458" id="5458">5458</a>
+<a href="#5459" id="5459">5459</a>
+<a href="#5460" id="5460">5460</a>
+<a href="#5461" id="5461">5461</a>
+<a href="#5462" id="5462">5462</a>
+<a href="#5463" id="5463">5463</a>
+<a href="#5464" id="5464">5464</a>
+<a href="#5465" id="5465">5465</a>
+<a href="#5466" id="5466">5466</a>
+<a href="#5467" id="5467">5467</a>
+<a href="#5468" id="5468">5468</a>
+<a href="#5469" id="5469">5469</a>
+<a href="#5470" id="5470">5470</a>
+<a href="#5471" id="5471">5471</a>
+<a href="#5472" id="5472">5472</a>
+<a href="#5473" id="5473">5473</a>
+<a href="#5474" id="5474">5474</a>
+<a href="#5475" id="5475">5475</a>
+<a href="#5476" id="5476">5476</a>
+<a href="#5477" id="5477">5477</a>
+<a href="#5478" id="5478">5478</a>
+<a href="#5479" id="5479">5479</a>
+<a href="#5480" id="5480">5480</a>
+<a href="#5481" id="5481">5481</a>
+<a href="#5482" id="5482">5482</a>
+<a href="#5483" id="5483">5483</a>
+<a href="#5484" id="5484">5484</a>
+<a href="#5485" id="5485">5485</a>
+<a href="#5486" id="5486">5486</a>
+<a href="#5487" id="5487">5487</a>
+<a href="#5488" id="5488">5488</a>
+<a href="#5489" id="5489">5489</a>
+<a href="#5490" id="5490">5490</a>
+<a href="#5491" id="5491">5491</a>
+<a href="#5492" id="5492">5492</a>
+<a href="#5493" id="5493">5493</a>
+<a href="#5494" id="5494">5494</a>
+<a href="#5495" id="5495">5495</a>
+<a href="#5496" id="5496">5496</a>
+<a href="#5497" id="5497">5497</a>
+<a href="#5498" id="5498">5498</a>
+<a href="#5499" id="5499">5499</a>
+<a href="#5500" id="5500">5500</a>
+<a href="#5501" id="5501">5501</a>
+<a href="#5502" id="5502">5502</a>
+<a href="#5503" id="5503">5503</a>
+<a href="#5504" id="5504">5504</a>
+<a href="#5505" id="5505">5505</a>
+<a href="#5506" id="5506">5506</a>
+<a href="#5507" id="5507">5507</a>
+<a href="#5508" id="5508">5508</a>
+<a href="#5509" id="5509">5509</a>
+<a href="#5510" id="5510">5510</a>
+<a href="#5511" id="5511">5511</a>
+<a href="#5512" id="5512">5512</a>
+<a href="#5513" id="5513">5513</a>
+<a href="#5514" id="5514">5514</a>
+<a href="#5515" id="5515">5515</a>
+<a href="#5516" id="5516">5516</a>
+<a href="#5517" id="5517">5517</a>
+<a href="#5518" id="5518">5518</a>
+<a href="#5519" id="5519">5519</a>
+<a href="#5520" id="5520">5520</a>
+<a href="#5521" id="5521">5521</a>
+<a href="#5522" id="5522">5522</a>
+<a href="#5523" id="5523">5523</a>
+<a href="#5524" id="5524">5524</a>
+<a href="#5525" id="5525">5525</a>
+<a href="#5526" id="5526">5526</a>
+<a href="#5527" id="5527">5527</a>
+<a href="#5528" id="5528">5528</a>
+<a href="#5529" id="5529">5529</a>
+<a href="#5530" id="5530">5530</a>
+<a href="#5531" id="5531">5531</a>
+<a href="#5532" id="5532">5532</a>
+<a href="#5533" id="5533">5533</a>
+<a href="#5534" id="5534">5534</a>
+<a href="#5535" id="5535">5535</a>
+<a href="#5536" id="5536">5536</a>
+<a href="#5537" id="5537">5537</a>
+<a href="#5538" id="5538">5538</a>
+<a href="#5539" id="5539">5539</a>
+<a href="#5540" id="5540">5540</a>
+<a href="#5541" id="5541">5541</a>
+<a href="#5542" id="5542">5542</a>
+<a href="#5543" id="5543">5543</a>
+<a href="#5544" id="5544">5544</a>
+<a href="#5545" id="5545">5545</a>
+<a href="#5546" id="5546">5546</a>
+<a href="#5547" id="5547">5547</a>
+<a href="#5548" id="5548">5548</a>
+<a href="#5549" id="5549">5549</a>
+<a href="#5550" id="5550">5550</a>
+<a href="#5551" id="5551">5551</a>
+<a href="#5552" id="5552">5552</a>
+<a href="#5553" id="5553">5553</a>
+<a href="#5554" id="5554">5554</a>
+<a href="#5555" id="5555">5555</a>
+<a href="#5556" id="5556">5556</a>
+<a href="#5557" id="5557">5557</a>
+<a href="#5558" id="5558">5558</a>
+<a href="#5559" id="5559">5559</a>
+<a href="#5560" id="5560">5560</a>
+<a href="#5561" id="5561">5561</a>
+<a href="#5562" id="5562">5562</a>
+<a href="#5563" id="5563">5563</a>
+<a href="#5564" id="5564">5564</a>
+<a href="#5565" id="5565">5565</a>
+<a href="#5566" id="5566">5566</a>
+<a href="#5567" id="5567">5567</a>
+<a href="#5568" id="5568">5568</a>
+<a href="#5569" id="5569">5569</a>
+<a href="#5570" id="5570">5570</a>
+<a href="#5571" id="5571">5571</a>
+<a href="#5572" id="5572">5572</a>
+<a href="#5573" id="5573">5573</a>
+<a href="#5574" id="5574">5574</a>
+<a href="#5575" id="5575">5575</a>
+<a href="#5576" id="5576">5576</a>
+<a href="#5577" id="5577">5577</a>
+<a href="#5578" id="5578">5578</a>
+<a href="#5579" id="5579">5579</a>
+<a href="#5580" id="5580">5580</a>
+<a href="#5581" id="5581">5581</a>
+<a href="#5582" id="5582">5582</a>
+<a href="#5583" id="5583">5583</a>
+<a href="#5584" id="5584">5584</a>
+<a href="#5585" id="5585">5585</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Wallet
+//!
+//! This module defines the [`Wallet`] structure.
+
+</span><span class="kw">use </span>std::cell::RefCell;
+<span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::collections::{BTreeMap, HashSet};
+<span class="kw">use </span>std::fmt;
+<span class="kw">use </span>std::ops::{Deref, DerefMut};
+<span class="kw">use </span>std::str::FromStr;
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>bitcoin::secp256k1::Secp256k1;
+
+<span class="kw">use </span>bitcoin::consensus::encode::serialize;
+<span class="kw">use </span>bitcoin::util::psbt;
+<span class="kw">use </span>bitcoin::{
+ Address, EcdsaSighashType, LockTime, Network, OutPoint, SchnorrSighashType, Script, Sequence,
+ Transaction, TxOut, Txid, Witness,
};
-<span class="kw">use</span> <span class="ident">miniscript::psbt</span>::{<span class="ident">PsbtExt</span>, <span class="ident">PsbtInputExt</span>, <span class="ident">PsbtInputSatisfier</span>};
-
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
-<span class="kw">use</span> <span class="ident">log</span>::{<span class="ident">debug</span>, <span class="ident">error</span>, <span class="ident">info</span>, <span class="ident">trace</span>};
-
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">coin_selection</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">export</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">signer</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">time</span>;
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">tx_builder</span>;
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod</span> <span class="ident">utils</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"verify"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"verify"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">verify</span>;
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"hardware-signer"</span>)]</span>
-<span class="attribute">#[<span class="ident">cfg_attr</span>(<span class="ident">docsrs</span>, <span class="ident">doc</span>(<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"hardware-signer"</span>)))]</span>
-<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">hardwaresigner</span>;
-
-<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">utils::IsDust</span>;
-
-<span class="kw">use</span> <span class="ident">coin_selection::DefaultCoinSelectionAlgorithm</span>;
-<span class="kw">use</span> <span class="ident">signer</span>::{<span class="ident">SignOptions</span>, <span class="ident">SignerOrdering</span>, <span class="ident">SignersContainer</span>, <span class="ident">TransactionSigner</span>};
-<span class="kw">use</span> <span class="ident">tx_builder</span>::{<span class="ident">BumpFee</span>, <span class="ident">CreateTx</span>, <span class="ident">FeePolicy</span>, <span class="ident">TxBuilder</span>, <span class="ident">TxParams</span>};
-<span class="kw">use</span> <span class="ident">utils</span>::{<span class="ident">check_nsequence_rbf</span>, <span class="ident">After</span>, <span class="ident">Older</span>, <span class="ident">SecpCtx</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blockchain</span>::{<span class="ident">GetHeight</span>, <span class="ident">NoopProgress</span>, <span class="ident">Progress</span>, <span class="ident">WalletSync</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::memory::MemoryDatabase</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">AnyDatabase</span>, <span class="ident">BatchDatabase</span>, <span class="ident">BatchOperations</span>, <span class="ident">DatabaseUtils</span>, <span class="ident">SyncTime</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::checksum::calc_checksum_bytes_internal</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::policy::BuildSatisfaction</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>::{
- <span class="ident">calc_checksum</span>, <span class="ident">into_wallet_descriptor_checked</span>, <span class="ident">DerivedDescriptor</span>, <span class="ident">DescriptorMeta</span>,
- <span class="ident">ExtendedDescriptor</span>, <span class="ident">ExtractPolicy</span>, <span class="ident">IntoWalletDescriptor</span>, <span class="ident">Policy</span>, <span class="ident">XKeyUtils</span>,
+<span class="kw">use </span>miniscript::psbt::{PsbtExt, PsbtInputExt, PsbtInputSatisfier};
+
+<span class="attr">#[allow(unused_imports)]
+</span><span class="kw">use </span>log::{debug, error, info, trace};
+
+<span class="kw">pub mod </span>coin_selection;
+<span class="kw">pub mod </span>export;
+<span class="kw">pub mod </span>signer;
+<span class="kw">pub mod </span>time;
+<span class="kw">pub mod </span>tx_builder;
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>utils;
+<span class="attr">#[cfg(feature = <span class="string">"verify"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"verify"</span>)))]
+</span><span class="kw">pub mod </span>verify;
+
+<span class="attr">#[cfg(feature = <span class="string">"hardware-signer"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"hardware-signer"</span>)))]
+</span><span class="kw">pub mod </span>hardwaresigner;
+
+<span class="kw">pub use </span>utils::IsDust;
+
+<span class="kw">use </span>coin_selection::DefaultCoinSelectionAlgorithm;
+<span class="kw">use </span>signer::{SignOptions, SignerOrdering, SignersContainer, TransactionSigner};
+<span class="kw">use </span>tx_builder::{BumpFee, CreateTx, FeePolicy, TxBuilder, TxParams};
+<span class="kw">use </span>utils::{check_nsequence_rbf, After, Older, SecpCtx};
+
+<span class="kw">use </span><span class="kw">crate</span>::blockchain::{GetHeight, NoopProgress, Progress, WalletSync};
+<span class="kw">use </span><span class="kw">crate</span>::database::memory::MemoryDatabase;
+<span class="kw">use </span><span class="kw">crate</span>::database::{AnyDatabase, BatchDatabase, BatchOperations, DatabaseUtils, SyncTime};
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::checksum::calc_checksum_bytes_internal;
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::policy::BuildSatisfaction;
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::{
+ calc_checksum, into_wallet_descriptor_checked, DerivedDescriptor, DescriptorMeta,
+ ExtendedDescriptor, ExtractPolicy, IntoWalletDescriptor, Policy, XKeyUtils,
};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error</span>::{<span class="ident">Error</span>, <span class="ident">MiniscriptPsbtError</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::psbt::PsbtUtils</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer::SignerError</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::testutils</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types</span>::<span class="kw-2">*</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::coin_selection::Excess</span>::{<span class="ident">Change</span>, <span class="ident">NoChange</span>};
-
-<span class="kw">const</span> <span class="ident">CACHE_ADDR_BATCH_SIZE</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="number">100</span>;
-<span class="kw">const</span> <span class="ident">COINBASE_MATURITY</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="number">100</span>;
-
-<span class="doccomment">/// A Bitcoin wallet</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The `Wallet` struct acts as a way of coherently interfacing with output descriptors and related transactions.</span>
-<span class="doccomment">/// Its main components are:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// 1. output *descriptors* from which it can derive addresses.</span>
-<span class="doccomment">/// 2. A [`Database`] where it tracks transactions and utxos related to the descriptors.</span>
-<span class="doccomment">/// 3. [`signer`]s that can contribute signatures to addresses instantiated from the descriptors.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`Database`]: crate::database::Database</span>
-<span class="doccomment">/// [`signer`]: crate::signer</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Wallet</span><span class="op"><</span><span class="ident">D</span><span class="op">></span> {
- <span class="ident">descriptor</span>: <span class="ident">ExtendedDescriptor</span>,
- <span class="ident">change_descriptor</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">ExtendedDescriptor</span><span class="op">></span>,
-
- <span class="ident">signers</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">SignersContainer</span><span class="op">></span>,
- <span class="ident">change_signers</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">SignersContainer</span><span class="op">></span>,
-
- <span class="ident">network</span>: <span class="ident">Network</span>,
-
- <span class="ident">database</span>: <span class="ident">RefCell</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>,
-
- <span class="ident">secp</span>: <span class="ident">SecpCtx</span>,
+<span class="kw">use </span><span class="kw">crate</span>::error::{Error, MiniscriptPsbtError};
+<span class="kw">use </span><span class="kw">crate</span>::psbt::PsbtUtils;
+<span class="kw">use </span><span class="kw">crate</span>::signer::SignerError;
+<span class="kw">use </span><span class="kw">crate</span>::testutils;
+<span class="kw">use </span><span class="kw">crate</span>::types::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::wallet::coin_selection::Excess::{Change, NoChange};
+
+<span class="kw">const </span>CACHE_ADDR_BATCH_SIZE: u32 = <span class="number">100</span>;
+<span class="kw">const </span>COINBASE_MATURITY: u32 = <span class="number">100</span>;
+
+<span class="doccomment">/// A Bitcoin wallet
+///
+/// The `Wallet` struct acts as a way of coherently interfacing with output descriptors and related transactions.
+/// Its main components are:
+///
+/// 1. output *descriptors* from which it can derive addresses.
+/// 2. A [`Database`] where it tracks transactions and utxos related to the descriptors.
+/// 3. [`signer`]s that can contribute signatures to addresses instantiated from the descriptors.
+///
+/// [`Database`]: crate::database::Database
+/// [`signer`]: crate::signer
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>Wallet<D> {
+ descriptor: ExtendedDescriptor,
+ change_descriptor: <span class="prelude-ty">Option</span><ExtendedDescriptor>,
+
+ signers: Arc<SignersContainer>,
+ change_signers: Arc<SignersContainer>,
+
+ network: Network,
+
+ database: RefCell<D>,
+
+ secp: SecpCtx,
}
-<span class="doccomment">/// The address index selection strategy to use to derived an address from the wallet's external</span>
-<span class="doccomment">/// descriptor. See [`Wallet::get_address`]. If you're unsure which one to use use `WalletIndex::New`.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">AddressIndex</span> {
- <span class="doccomment">/// Return a new address after incrementing the current descriptor index.</span>
- <span class="ident">New</span>,
- <span class="doccomment">/// Return the address for the current descriptor index if it has not been used in a received</span>
- <span class="doccomment">/// transaction. Otherwise return a new address as with [`AddressIndex::New`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Use with caution, if the wallet has not yet detected an address has been used it could</span>
- <span class="doccomment">/// return an already used address. This function is primarily meant for situations where the</span>
- <span class="doccomment">/// caller is untrusted; for example when deriving donation addresses on-demand for a public</span>
- <span class="doccomment">/// web page.</span>
- <span class="ident">LastUnused</span>,
- <span class="doccomment">/// Return the address for a specific descriptor index. Does not change the current descriptor</span>
- <span class="doccomment">/// index used by `AddressIndex::New` and `AddressIndex::LastUsed`.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Use with caution, if an index is given that is less than the current descriptor index</span>
- <span class="doccomment">/// then the returned address may have already been used.</span>
- <span class="ident">Peek</span>(<span class="ident">u32</span>),
- <span class="doccomment">/// Return the address for a specific descriptor index and reset the current descriptor index</span>
- <span class="doccomment">/// used by `AddressIndex::New` and `AddressIndex::LastUsed` to this value.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Use with caution, if an index is given that is less than the current descriptor index</span>
- <span class="doccomment">/// then the returned address and subsequent addresses returned by calls to `AddressIndex::New`</span>
- <span class="doccomment">/// and `AddressIndex::LastUsed` may have already been used. Also if the index is reset to a</span>
- <span class="doccomment">/// value earlier than the [`crate::blockchain::Blockchain`] stop_gap (default is 20) then a</span>
- <span class="doccomment">/// larger stop_gap should be used to monitor for all possibly used addresses.</span>
- <span class="ident">Reset</span>(<span class="ident">u32</span>),
+<span class="doccomment">/// The address index selection strategy to use to derived an address from the wallet's external
+/// descriptor. See [`Wallet::get_address`]. If you're unsure which one to use use `WalletIndex::New`.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>AddressIndex {
+ <span class="doccomment">/// Return a new address after incrementing the current descriptor index.
+ </span>New,
+ <span class="doccomment">/// Return the address for the current descriptor index if it has not been used in a received
+ /// transaction. Otherwise return a new address as with [`AddressIndex::New`].
+ ///
+ /// Use with caution, if the wallet has not yet detected an address has been used it could
+ /// return an already used address. This function is primarily meant for situations where the
+ /// caller is untrusted; for example when deriving donation addresses on-demand for a public
+ /// web page.
+ </span>LastUnused,
+ <span class="doccomment">/// Return the address for a specific descriptor index. Does not change the current descriptor
+ /// index used by `AddressIndex::New` and `AddressIndex::LastUsed`.
+ ///
+ /// Use with caution, if an index is given that is less than the current descriptor index
+ /// then the returned address may have already been used.
+ </span>Peek(u32),
+ <span class="doccomment">/// Return the address for a specific descriptor index and reset the current descriptor index
+ /// used by `AddressIndex::New` and `AddressIndex::LastUsed` to this value.
+ ///
+ /// Use with caution, if an index is given that is less than the current descriptor index
+ /// then the returned address and subsequent addresses returned by calls to `AddressIndex::New`
+ /// and `AddressIndex::LastUsed` may have already been used. Also if the index is reset to a
+ /// value earlier than the [`crate::blockchain::Blockchain`] stop_gap (default is 20) then a
+ /// larger stop_gap should be used to monitor for all possibly used addresses.
+ </span>Reset(u32),
}
-<span class="doccomment">/// A derived address and the index it was found at</span>
-<span class="doccomment">/// For convenience this automatically derefs to `Address`</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">AddressInfo</span> {
- <span class="doccomment">/// Child index of this address</span>
- <span class="kw">pub</span> <span class="ident">index</span>: <span class="ident">u32</span>,
- <span class="doccomment">/// Address</span>
- <span class="kw">pub</span> <span class="ident">address</span>: <span class="ident">Address</span>,
- <span class="doccomment">/// Type of keychain</span>
- <span class="kw">pub</span> <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
+<span class="doccomment">/// A derived address and the index it was found at
+/// For convenience this automatically derefs to `Address`
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>AddressInfo {
+ <span class="doccomment">/// Child index of this address
+ </span><span class="kw">pub </span>index: u32,
+ <span class="doccomment">/// Address
+ </span><span class="kw">pub </span>address: Address,
+ <span class="doccomment">/// Type of keychain
+ </span><span class="kw">pub </span>keychain: KeychainKind,
}
-<span class="kw">impl</span> <span class="ident">Deref</span> <span class="kw">for</span> <span class="ident">AddressInfo</span> {
- <span class="kw">type</span> <span class="ident">Target</span> <span class="op">=</span> <span class="ident">Address</span>;
+<span class="kw">impl </span>Deref <span class="kw">for </span>AddressInfo {
+ <span class="kw">type </span>Target = Address;
- <span class="kw">fn</span> <span class="ident">deref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Target</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">address</span>
+ <span class="kw">fn </span>deref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="self">Self</span>::Target {
+ <span class="kw-2">&</span><span class="self">self</span>.address
}
}
-<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">AddressInfo</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{}"</span>, <span class="self">self</span>.<span class="ident">address</span>)
+<span class="kw">impl </span>fmt::Display <span class="kw">for </span>AddressInfo {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{}"</span>, <span class="self">self</span>.address)
}
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>)]</span>
-<span class="doccomment">/// Options to a [`sync`].</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`sync`]: Wallet::sync</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SyncOptions</span> {
- <span class="doccomment">/// The progress tracker which may be informed when progress is made.</span>
- <span class="kw">pub</span> <span class="ident">progress</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">Progress</span><span class="op">></span><span class="op">></span>,
+<span class="attr">#[derive(Debug, Default)]
+</span><span class="doccomment">/// Options to a [`sync`].
+///
+/// [`sync`]: Wallet::sync
+</span><span class="kw">pub struct </span>SyncOptions {
+ <span class="doccomment">/// The progress tracker which may be informed when progress is made.
+ </span><span class="kw">pub </span>progress: <span class="prelude-ty">Option</span><Box<<span class="kw">dyn </span>Progress>>,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">D</span><span class="op">></span> <span class="ident">Wallet</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">D</span>: <span class="ident">BatchDatabase</span>,
+<span class="kw">impl</span><D> Wallet<D>
+<span class="kw">where
+ </span>D: BatchDatabase,
{
- <span class="attribute">#[<span class="ident">deprecated</span> <span class="op">=</span> <span class="string">"Just use Wallet::new -- all wallets are offline now!"</span>]</span>
- <span class="doccomment">/// Create a new "offline" wallet</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_offline</span><span class="op"><</span><span class="ident">E</span>: <span class="ident">IntoWalletDescriptor</span><span class="op">></span>(
- <span class="ident">descriptor</span>: <span class="ident">E</span>,
- <span class="ident">change_descriptor</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">E</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="ident">database</span>: <span class="ident">D</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="ident"><span class="self">Self</span>::new</span>(<span class="ident">descriptor</span>, <span class="ident">change_descriptor</span>, <span class="ident">network</span>, <span class="ident">database</span>)
- }
-
- <span class="doccomment">/// Create a wallet.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The only way this can fail is if the descriptors passed in do not match the checksums in `database`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span><span class="op"><</span><span class="ident">E</span>: <span class="ident">IntoWalletDescriptor</span><span class="op">></span>(
- <span class="ident">descriptor</span>: <span class="ident">E</span>,
- <span class="ident">change_descriptor</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">E</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="kw-2">mut</span> <span class="ident">database</span>: <span class="ident">D</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">into_wallet_descriptor_checked</span>(<span class="ident">descriptor</span>, <span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">network</span>)<span class="question-mark">?</span>;
- <span class="ident"><span class="self">Self</span>::db_checksum</span>(
- <span class="kw-2">&mut</span> <span class="ident">database</span>,
- <span class="kw-2">&</span><span class="ident">descriptor</span>.<span class="ident">to_string</span>(),
- <span class="ident">KeychainKind::External</span>,
+ <span class="attr">#[deprecated = <span class="string">"Just use Wallet::new -- all wallets are offline now!"</span>]
+ </span><span class="doccomment">/// Create a new "offline" wallet
+ </span><span class="kw">pub fn </span>new_offline<E: IntoWalletDescriptor>(
+ descriptor: E,
+ change_descriptor: <span class="prelude-ty">Option</span><E>,
+ network: Network,
+ database: D,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="self">Self</span>::new(descriptor, change_descriptor, network, database)
+ }
+
+ <span class="doccomment">/// Create a wallet.
+ ///
+ /// The only way this can fail is if the descriptors passed in do not match the checksums in `database`.
+ </span><span class="kw">pub fn </span>new<E: IntoWalletDescriptor>(
+ descriptor: E,
+ change_descriptor: <span class="prelude-ty">Option</span><E>,
+ network: Network,
+ <span class="kw-2">mut </span>database: D,
+ ) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>, Error> {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(descriptor, keymap) = into_wallet_descriptor_checked(descriptor, <span class="kw-2">&</span>secp, network)<span class="question-mark">?</span>;
+ <span class="self">Self</span>::db_checksum(
+ <span class="kw-2">&mut </span>database,
+ <span class="kw-2">&</span>descriptor.to_string(),
+ KeychainKind::External,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">descriptor</span>, <span class="kw-2">&</span><span class="ident">secp</span>));
- <span class="kw">let</span> (<span class="ident">change_descriptor</span>, <span class="ident">change_signers</span>) <span class="op">=</span> <span class="kw">match</span> <span class="ident">change_descriptor</span> {
- <span class="prelude-val">Some</span>(<span class="ident">desc</span>) => {
- <span class="kw">let</span> (<span class="ident">change_descriptor</span>, <span class="ident">change_keymap</span>) <span class="op">=</span>
- <span class="ident">into_wallet_descriptor_checked</span>(<span class="ident">desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">network</span>)<span class="question-mark">?</span>;
- <span class="ident"><span class="self">Self</span>::db_checksum</span>(
- <span class="kw-2">&mut</span> <span class="ident">database</span>,
- <span class="kw-2">&</span><span class="ident">change_descriptor</span>.<span class="ident">to_string</span>(),
- <span class="ident">KeychainKind::Internal</span>,
+ <span class="kw">let </span>signers = Arc::new(SignersContainer::build(keymap, <span class="kw-2">&</span>descriptor, <span class="kw-2">&</span>secp));
+ <span class="kw">let </span>(change_descriptor, change_signers) = <span class="kw">match </span>change_descriptor {
+ <span class="prelude-val">Some</span>(desc) => {
+ <span class="kw">let </span>(change_descriptor, change_keymap) =
+ into_wallet_descriptor_checked(desc, <span class="kw-2">&</span>secp, network)<span class="question-mark">?</span>;
+ <span class="self">Self</span>::db_checksum(
+ <span class="kw-2">&mut </span>database,
+ <span class="kw-2">&</span>change_descriptor.to_string(),
+ KeychainKind::Internal,
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">change_signers</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::build</span>(
- <span class="ident">change_keymap</span>,
- <span class="kw-2">&</span><span class="ident">change_descriptor</span>,
- <span class="kw-2">&</span><span class="ident">secp</span>,
+ <span class="kw">let </span>change_signers = Arc::new(SignersContainer::build(
+ change_keymap,
+ <span class="kw-2">&</span>change_descriptor,
+ <span class="kw-2">&</span>secp,
));
- (<span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>), <span class="ident">change_signers</span>)
+ (<span class="prelude-val">Some</span>(change_descriptor), change_signers)
}
- <span class="prelude-val">None</span> => (<span class="prelude-val">None</span>, <span class="ident">Arc::new</span>(<span class="ident">SignersContainer::new</span>())),
+ <span class="prelude-val">None </span>=> (<span class="prelude-val">None</span>, Arc::new(SignersContainer::new())),
};
- <span class="prelude-val">Ok</span>(<span class="ident">Wallet</span> {
- <span class="ident">descriptor</span>,
- <span class="ident">change_descriptor</span>,
- <span class="ident">signers</span>,
- <span class="ident">change_signers</span>,
- <span class="ident">network</span>,
- <span class="ident">database</span>: <span class="ident">RefCell::new</span>(<span class="ident">database</span>),
- <span class="ident">secp</span>,
+ <span class="prelude-val">Ok</span>(Wallet {
+ descriptor,
+ change_descriptor,
+ signers,
+ change_signers,
+ network,
+ database: RefCell::new(database),
+ secp,
})
}
- <span class="doccomment">/// This checks the checksum within [`BatchDatabase`] twice (if needed). The first time with the</span>
- <span class="doccomment">/// actual checksum, and the second time with the checksum of `descriptor+checksum`. The second</span>
- <span class="doccomment">/// check is necessary for backwards compatibility of a checksum-inception bug.</span>
- <span class="kw">fn</span> <span class="ident">db_checksum</span>(<span class="ident">db</span>: <span class="kw-2">&mut</span> <span class="ident">D</span>, <span class="ident">desc</span>: <span class="kw-2">&</span><span class="ident">str</span>, <span class="ident">kind</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">checksum</span> <span class="op">=</span> <span class="ident">calc_checksum_bytes_internal</span>(<span class="ident">desc</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">kind</span>, <span class="ident">checksum</span>).<span class="ident">is_ok</span>() {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="doccomment">/// This checks the checksum within [`BatchDatabase`] twice (if needed). The first time with the
+ /// actual checksum, and the second time with the checksum of `descriptor+checksum`. The second
+ /// check is necessary for backwards compatibility of a checksum-inception bug.
+ </span><span class="kw">fn </span>db_checksum(db: <span class="kw-2">&mut </span>D, desc: <span class="kw-2">&</span>str, kind: KeychainKind) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>checksum = calc_checksum_bytes_internal(desc, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+ <span class="kw">if </span>db.check_descriptor_checksum(kind, checksum).is_ok() {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="kw">let</span> <span class="ident">checksum_inception</span> <span class="op">=</span> <span class="ident">calc_checksum_bytes_internal</span>(<span class="ident">desc</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
- <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">kind</span>, <span class="ident">checksum_inception</span>)
+ <span class="kw">let </span>checksum_inception = calc_checksum_bytes_internal(desc, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+ db.check_descriptor_checksum(kind, checksum_inception)
}
- <span class="doccomment">/// Get the Bitcoin network the wallet is using.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">network</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Network</span> {
- <span class="self">self</span>.<span class="ident">network</span>
+ <span class="doccomment">/// Get the Bitcoin network the wallet is using.
+ </span><span class="kw">pub fn </span>network(<span class="kw-2">&</span><span class="self">self</span>) -> Network {
+ <span class="self">self</span>.network
}
- <span class="comment">// Return a newly derived address for the specified `keychain`.</span>
- <span class="kw">fn</span> <span class="ident">get_new_address</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">incremented_index</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fetch_and_increment_index</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span>;
+ <span class="comment">// Return a newly derived address for the specified `keychain`.
+ </span><span class="kw">fn </span>get_new_address(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="kw">let </span>incremented_index = <span class="self">self</span>.fetch_and_increment_index(keychain)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">address_result</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="ident">at_derivation_index</span>(<span class="ident">incremented_index</span>)
- .<span class="ident">address</span>(<span class="self">self</span>.<span class="ident">network</span>);
+ <span class="kw">let </span>address_result = <span class="self">self
+ </span>.get_descriptor_for_keychain(keychain)
+ .at_derivation_index(incremented_index)
+ .address(<span class="self">self</span>.network);
- <span class="ident">address_result</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">address</span><span class="op">|</span> <span class="ident">AddressInfo</span> {
- <span class="ident">address</span>,
- <span class="ident">index</span>: <span class="ident">incremented_index</span>,
- <span class="ident">keychain</span>,
+ address_result
+ .map(|address| AddressInfo {
+ address,
+ index: incremented_index,
+ keychain,
})
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">Error::ScriptDoesntHaveAddressForm</span>)
- }
-
- <span class="comment">// Return the the last previously derived address for `keychain` if it has not been used in a</span>
- <span class="comment">// received transaction. Otherwise return a new address using [`Wallet::get_new_address`].</span>
- <span class="kw">fn</span> <span class="ident">get_unused_address</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">current_index</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fetch_index</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="ident">derived_key</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="ident">at_derivation_index</span>(<span class="ident">current_index</span>);
-
- <span class="kw">let</span> <span class="ident">script_pubkey</span> <span class="op">=</span> <span class="ident">derived_key</span>.<span class="ident">script_pubkey</span>();
-
- <span class="kw">let</span> <span class="ident">found_used</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">list_transactions</span>(<span class="bool-val">true</span>)<span class="question-mark">?</span>
- .<span class="ident">iter</span>()
- .<span class="ident">flat_map</span>(<span class="op">|</span><span class="ident">tx_details</span><span class="op">|</span> <span class="ident">tx_details</span>.<span class="ident">transaction</span>.<span class="ident">as_ref</span>())
- .<span class="ident">flat_map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>())
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">o</span><span class="op">|</span> <span class="ident">o</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">script_pubkey</span>);
-
- <span class="kw">if</span> <span class="ident">found_used</span> {
- <span class="self">self</span>.<span class="ident">get_new_address</span>(<span class="ident">keychain</span>)
- } <span class="kw">else</span> {
- <span class="ident">derived_key</span>
- .<span class="ident">address</span>(<span class="self">self</span>.<span class="ident">network</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">address</span><span class="op">|</span> <span class="ident">AddressInfo</span> {
- <span class="ident">address</span>,
- <span class="ident">index</span>: <span class="ident">current_index</span>,
- <span class="ident">keychain</span>,
+ .map_err(|<span class="kw">_</span>| Error::ScriptDoesntHaveAddressForm)
+ }
+
+ <span class="comment">// Return the the last previously derived address for `keychain` if it has not been used in a
+ // received transaction. Otherwise return a new address using [`Wallet::get_new_address`].
+ </span><span class="kw">fn </span>get_unused_address(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="kw">let </span>current_index = <span class="self">self</span>.fetch_index(keychain)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>derived_key = <span class="self">self
+ </span>.get_descriptor_for_keychain(keychain)
+ .at_derivation_index(current_index);
+
+ <span class="kw">let </span>script_pubkey = derived_key.script_pubkey();
+
+ <span class="kw">let </span>found_used = <span class="self">self
+ </span>.list_transactions(<span class="bool-val">true</span>)<span class="question-mark">?
+ </span>.iter()
+ .flat_map(|tx_details| tx_details.transaction.as_ref())
+ .flat_map(|tx| tx.output.iter())
+ .any(|o| o.script_pubkey == script_pubkey);
+
+ <span class="kw">if </span>found_used {
+ <span class="self">self</span>.get_new_address(keychain)
+ } <span class="kw">else </span>{
+ derived_key
+ .address(<span class="self">self</span>.network)
+ .map(|address| AddressInfo {
+ address,
+ index: current_index,
+ keychain,
})
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">Error::ScriptDoesntHaveAddressForm</span>)
+ .map_err(|<span class="kw">_</span>| Error::ScriptDoesntHaveAddressForm)
}
}
- <span class="comment">// Return derived address for the descriptor of given [`KeychainKind`] at a specific index</span>
- <span class="kw">fn</span> <span class="ident">peek_address</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">index</span>: <span class="ident">u32</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="ident">at_derivation_index</span>(<span class="ident">index</span>)
- .<span class="ident">address</span>(<span class="self">self</span>.<span class="ident">network</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">address</span><span class="op">|</span> <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>,
- <span class="ident">address</span>,
- <span class="ident">keychain</span>,
+ <span class="comment">// Return derived address for the descriptor of given [`KeychainKind`] at a specific index
+ </span><span class="kw">fn </span>peek_address(<span class="kw-2">&</span><span class="self">self</span>, index: u32, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="self">self</span>.get_descriptor_for_keychain(keychain)
+ .at_derivation_index(index)
+ .address(<span class="self">self</span>.network)
+ .map(|address| AddressInfo {
+ index,
+ address,
+ keychain,
})
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">Error::ScriptDoesntHaveAddressForm</span>)
+ .map_err(|<span class="kw">_</span>| Error::ScriptDoesntHaveAddressForm)
}
- <span class="comment">// Return derived address for `keychain` at a specific index and reset current</span>
- <span class="comment">// address index</span>
- <span class="kw">fn</span> <span class="ident">reset_address</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">index</span>: <span class="ident">u32</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">set_index</span>(<span class="ident">keychain</span>, <span class="ident">index</span>)<span class="question-mark">?</span>;
+ <span class="comment">// Return derived address for `keychain` at a specific index and reset current
+ // address index
+ </span><span class="kw">fn </span>reset_address(<span class="kw-2">&</span><span class="self">self</span>, index: u32, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="self">self</span>.set_index(keychain, index)<span class="question-mark">?</span>;
- <span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="ident">at_derivation_index</span>(<span class="ident">index</span>)
- .<span class="ident">address</span>(<span class="self">self</span>.<span class="ident">network</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">address</span><span class="op">|</span> <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>,
- <span class="ident">address</span>,
- <span class="ident">keychain</span>,
+ <span class="self">self</span>.get_descriptor_for_keychain(keychain)
+ .at_derivation_index(index)
+ .address(<span class="self">self</span>.network)
+ .map(|address| AddressInfo {
+ index,
+ address,
+ keychain,
})
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">Error::ScriptDoesntHaveAddressForm</span>)
+ .map_err(|<span class="kw">_</span>| Error::ScriptDoesntHaveAddressForm)
}
- <span class="doccomment">/// Return a derived address using the external descriptor, see [`AddressIndex`] for</span>
- <span class="doccomment">/// available address index selection strategies. If none of the keys in the descriptor are derivable</span>
- <span class="doccomment">/// (i.e. does not end with /*) then the same address will always be returned for any [`AddressIndex`].</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_address</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">address_index</span>: <span class="ident">AddressIndex</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">_get_address</span>(<span class="ident">address_index</span>, <span class="ident">KeychainKind::External</span>)
+ <span class="doccomment">/// Return a derived address using the external descriptor, see [`AddressIndex`] for
+ /// available address index selection strategies. If none of the keys in the descriptor are derivable
+ /// (i.e. does not end with /*) then the same address will always be returned for any [`AddressIndex`].
+ </span><span class="kw">pub fn </span>get_address(<span class="kw-2">&</span><span class="self">self</span>, address_index: AddressIndex) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="self">self</span>._get_address(address_index, KeychainKind::External)
}
- <span class="doccomment">/// Return a derived address using the internal (change) descriptor.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If the wallet doesn't have an internal descriptor it will use the external descriptor.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// see [`AddressIndex`] for available address index selection strategies. If none of the keys</span>
- <span class="doccomment">/// in the descriptor are derivable (i.e. does not end with /*) then the same address will always</span>
- <span class="doccomment">/// be returned for any [`AddressIndex`].</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_internal_address</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">address_index</span>: <span class="ident">AddressIndex</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">_get_address</span>(<span class="ident">address_index</span>, <span class="ident">KeychainKind::Internal</span>)
+ <span class="doccomment">/// Return a derived address using the internal (change) descriptor.
+ ///
+ /// If the wallet doesn't have an internal descriptor it will use the external descriptor.
+ ///
+ /// see [`AddressIndex`] for available address index selection strategies. If none of the keys
+ /// in the descriptor are derivable (i.e. does not end with /*) then the same address will always
+ /// be returned for any [`AddressIndex`].
+ </span><span class="kw">pub fn </span>get_internal_address(<span class="kw-2">&</span><span class="self">self</span>, address_index: AddressIndex) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="self">self</span>._get_address(address_index, KeychainKind::Internal)
}
- <span class="kw">fn</span> <span class="ident">_get_address</span>(
+ <span class="kw">fn </span>_get_address(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">address_index</span>: <span class="ident">AddressIndex</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">AddressInfo</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="ident">address_index</span> {
- <span class="ident">AddressIndex::New</span> => <span class="self">self</span>.<span class="ident">get_new_address</span>(<span class="ident">keychain</span>),
- <span class="ident">AddressIndex::LastUnused</span> => <span class="self">self</span>.<span class="ident">get_unused_address</span>(<span class="ident">keychain</span>),
- <span class="ident">AddressIndex::Peek</span>(<span class="ident">index</span>) => <span class="self">self</span>.<span class="ident">peek_address</span>(<span class="ident">index</span>, <span class="ident">keychain</span>),
- <span class="ident">AddressIndex::Reset</span>(<span class="ident">index</span>) => <span class="self">self</span>.<span class="ident">reset_address</span>(<span class="ident">index</span>, <span class="ident">keychain</span>),
+ address_index: AddressIndex,
+ keychain: KeychainKind,
+ ) -> <span class="prelude-ty">Result</span><AddressInfo, Error> {
+ <span class="kw">match </span>address_index {
+ AddressIndex::New => <span class="self">self</span>.get_new_address(keychain),
+ AddressIndex::LastUnused => <span class="self">self</span>.get_unused_address(keychain),
+ AddressIndex::Peek(index) => <span class="self">self</span>.peek_address(index, keychain),
+ AddressIndex::Reset(index) => <span class="self">self</span>.reset_address(index, keychain),
}
}
- <span class="doccomment">/// Ensures that there are at least `max_addresses` addresses cached in the database if the</span>
- <span class="doccomment">/// descriptor is derivable, or 1 address if it is not.</span>
- <span class="doccomment">/// Will return `Ok(true)` if there are new addresses generated (either external or internal),</span>
- <span class="doccomment">/// and `Ok(false)` if all the required addresses are already cached. This function is useful to</span>
- <span class="doccomment">/// explicitly cache addresses in a wallet to do things like check [`Wallet::is_mine`] on</span>
- <span class="doccomment">/// transaction output scripts.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">ensure_addresses_cached</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">max_addresses</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">new_addresses_cached</span> <span class="op">=</span> <span class="bool-val">false</span>;
- <span class="kw">let</span> <span class="ident">max_address</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">has_wildcard</span>() {
- <span class="bool-val">false</span> => <span class="number">0</span>,
- <span class="bool-val">true</span> => <span class="ident">max_addresses</span>,
+ <span class="doccomment">/// Ensures that there are at least `max_addresses` addresses cached in the database if the
+ /// descriptor is derivable, or 1 address if it is not.
+ /// Will return `Ok(true)` if there are new addresses generated (either external or internal),
+ /// and `Ok(false)` if all the required addresses are already cached. This function is useful to
+ /// explicitly cache addresses in a wallet to do things like check [`Wallet::is_mine`] on
+ /// transaction output scripts.
+ </span><span class="kw">pub fn </span>ensure_addresses_cached(<span class="kw-2">&</span><span class="self">self</span>, max_addresses: u32) -> <span class="prelude-ty">Result</span><bool, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>new_addresses_cached = <span class="bool-val">false</span>;
+ <span class="kw">let </span>max_address = <span class="kw">match </span><span class="self">self</span>.descriptor.has_wildcard() {
+ <span class="bool-val">false </span>=> <span class="number">0</span>,
+ <span class="bool-val">true </span>=> max_addresses,
};
- <span class="macro">debug!</span>(<span class="string">"max_address {}"</span>, <span class="ident">max_address</span>);
- <span class="kw">if</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">max_address</span>.<span class="ident">saturating_sub</span>(<span class="number">1</span>))<span class="question-mark">?</span>
- .<span class="ident">is_none</span>()
+ <span class="macro">debug!</span>(<span class="string">"max_address {}"</span>, max_address);
+ <span class="kw">if </span><span class="self">self
+ </span>.database
+ .borrow()
+ .get_script_pubkey_from_path(KeychainKind::External, max_address.saturating_sub(<span class="number">1</span>))<span class="question-mark">?
+ </span>.is_none()
{
<span class="macro">debug!</span>(<span class="string">"caching external addresses"</span>);
- <span class="ident">new_addresses_cached</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>.<span class="ident">cache_addresses</span>(<span class="ident">KeychainKind::External</span>, <span class="number">0</span>, <span class="ident">max_address</span>)<span class="question-mark">?</span>;
+ new_addresses_cached = <span class="bool-val">true</span>;
+ <span class="self">self</span>.cache_addresses(KeychainKind::External, <span class="number">0</span>, max_address)<span class="question-mark">?</span>;
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">change_descriptor</span> {
- <span class="kw">let</span> <span class="ident">max_address</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">change_descriptor</span>.<span class="ident">has_wildcard</span>() {
- <span class="bool-val">false</span> => <span class="number">0</span>,
- <span class="bool-val">true</span> => <span class="ident">max_addresses</span>,
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(change_descriptor) = <span class="kw-2">&</span><span class="self">self</span>.change_descriptor {
+ <span class="kw">let </span>max_address = <span class="kw">match </span>change_descriptor.has_wildcard() {
+ <span class="bool-val">false </span>=> <span class="number">0</span>,
+ <span class="bool-val">true </span>=> max_addresses,
};
- <span class="kw">if</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::Internal</span>, <span class="ident">max_address</span>.<span class="ident">saturating_sub</span>(<span class="number">1</span>))<span class="question-mark">?</span>
- .<span class="ident">is_none</span>()
+ <span class="kw">if </span><span class="self">self
+ </span>.database
+ .borrow()
+ .get_script_pubkey_from_path(KeychainKind::Internal, max_address.saturating_sub(<span class="number">1</span>))<span class="question-mark">?
+ </span>.is_none()
{
<span class="macro">debug!</span>(<span class="string">"caching internal addresses"</span>);
- <span class="ident">new_addresses_cached</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>.<span class="ident">cache_addresses</span>(<span class="ident">KeychainKind::Internal</span>, <span class="number">0</span>, <span class="ident">max_address</span>)<span class="question-mark">?</span>;
+ new_addresses_cached = <span class="bool-val">true</span>;
+ <span class="self">self</span>.cache_addresses(KeychainKind::Internal, <span class="number">0</span>, max_address)<span class="question-mark">?</span>;
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">new_addresses_cached</span>)
- }
-
- <span class="doccomment">/// Return whether or not a `script` is part of this wallet (either internal or external)</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">is_mine</span>(<span class="ident">script</span>)
- }
-
- <span class="doccomment">/// Return the list of unspent outputs of this wallet</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that this method only operates on the internal database, which first needs to be</span>
- <span class="doccomment">/// [`Wallet::sync`] manually.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">list_unspent</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">iter_utxos</span>()<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">l</span><span class="op">|</span> <span class="op">!</span><span class="ident">l</span>.<span class="ident">is_spent</span>)
- .<span class="ident">collect</span>())
- }
-
- <span class="doccomment">/// Returns the `UTXO` owned by this wallet corresponding to `outpoint` if it exists in the</span>
- <span class="doccomment">/// wallet's database.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">outpoint</span>: <span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">get_utxo</span>(<span class="kw-2">&</span><span class="ident">outpoint</span>)
- }
-
- <span class="doccomment">/// Return a single transactions made and received by the wallet</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Optionally fill the [`TransactionDetails::transaction`] field with the raw transaction if</span>
- <span class="doccomment">/// `include_raw` is `true`.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that this method only operates on the internal database, which first needs to be</span>
- <span class="doccomment">/// [`Wallet::sync`] manually.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_tx</span>(
+ <span class="prelude-val">Ok</span>(new_addresses_cached)
+ }
+
+ <span class="doccomment">/// Return whether or not a `script` is part of this wallet (either internal or external)
+ </span><span class="kw">pub fn </span>is_mine(<span class="kw-2">&</span><span class="self">self</span>, script: <span class="kw-2">&</span>Script) -> <span class="prelude-ty">Result</span><bool, Error> {
+ <span class="self">self</span>.database.borrow().is_mine(script)
+ }
+
+ <span class="doccomment">/// Return the list of unspent outputs of this wallet
+ ///
+ /// Note that this method only operates on the internal database, which first needs to be
+ /// [`Wallet::sync`] manually.
+ </span><span class="kw">pub fn </span>list_unspent(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<LocalUtxo>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.database
+ .borrow()
+ .iter_utxos()<span class="question-mark">?
+ </span>.into_iter()
+ .filter(|l| !l.is_spent)
+ .collect())
+ }
+
+ <span class="doccomment">/// Returns the `UTXO` owned by this wallet corresponding to `outpoint` if it exists in the
+ /// wallet's database.
+ </span><span class="kw">pub fn </span>get_utxo(<span class="kw-2">&</span><span class="self">self</span>, outpoint: OutPoint) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><LocalUtxo>, Error> {
+ <span class="self">self</span>.database.borrow().get_utxo(<span class="kw-2">&</span>outpoint)
+ }
+
+ <span class="doccomment">/// Return a single transactions made and received by the wallet
+ ///
+ /// Optionally fill the [`TransactionDetails::transaction`] field with the raw transaction if
+ /// `include_raw` is `true`.
+ ///
+ /// Note that this method only operates on the internal database, which first needs to be
+ /// [`Wallet::sync`] manually.
+ </span><span class="kw">pub fn </span>get_tx(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>,
- <span class="ident">include_raw</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">get_tx</span>(<span class="ident">txid</span>, <span class="ident">include_raw</span>)
- }
-
- <span class="doccomment">/// Return an unsorted list of transactions made and received by the wallet</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Optionally fill the [`TransactionDetails::transaction`] field with the raw transaction if</span>
- <span class="doccomment">/// `include_raw` is `true`.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// To sort transactions, the following code can be used:</span>
- <span class="doccomment">/// ```no_run</span>
- <span class="doccomment">/// # let mut tx_list: Vec<bdk::TransactionDetails> = vec![];</span>
- <span class="doccomment">/// tx_list.sort_by(|a, b| {</span>
- <span class="doccomment">/// b.confirmation_time</span>
- <span class="doccomment">/// .as_ref()</span>
- <span class="doccomment">/// .map(|t| t.height)</span>
- <span class="doccomment">/// .cmp(&a.confirmation_time.as_ref().map(|t| t.height))</span>
- <span class="doccomment">/// });</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that this method only operates on the internal database, which first needs to be</span>
- <span class="doccomment">/// [`Wallet::sync`] manually.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">list_transactions</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">include_raw</span>: <span class="ident">bool</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">TransactionDetails</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">iter_txs</span>(<span class="ident">include_raw</span>)
- }
-
- <span class="doccomment">/// Return the balance, separated into available, trusted-pending, untrusted-pending and immature</span>
- <span class="doccomment">/// values.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that this method only operates on the internal database, which first needs to be</span>
- <span class="doccomment">/// [`Wallet::sync`] manually.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_balance</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Balance</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">immature</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">trusted_pending</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">untrusted_pending</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">confirmed</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">list_unspent</span>()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>();
- <span class="kw">let</span> <span class="ident">last_sync_height</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">database</span>
- .<span class="ident">get_sync_time</span>()<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">sync_time</span><span class="op">|</span> <span class="ident">sync_time</span>.<span class="ident">block_time</span>.<span class="ident">height</span>)
+ txid: <span class="kw-2">&</span>Txid,
+ include_raw: bool,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><TransactionDetails>, Error> {
+ <span class="self">self</span>.database.borrow().get_tx(txid, include_raw)
+ }
+
+ <span class="doccomment">/// Return an unsorted list of transactions made and received by the wallet
+ ///
+ /// Optionally fill the [`TransactionDetails::transaction`] field with the raw transaction if
+ /// `include_raw` is `true`.
+ ///
+ /// To sort transactions, the following code can be used:
+ /// ```no_run
+ /// # let mut tx_list: Vec<bdk::TransactionDetails> = vec![];
+ /// tx_list.sort_by(|a, b| {
+ /// b.confirmation_time
+ /// .as_ref()
+ /// .map(|t| t.height)
+ /// .cmp(&a.confirmation_time.as_ref().map(|t| t.height))
+ /// });
+ /// ```
+ ///
+ /// Note that this method only operates on the internal database, which first needs to be
+ /// [`Wallet::sync`] manually.
+ </span><span class="kw">pub fn </span>list_transactions(<span class="kw-2">&</span><span class="self">self</span>, include_raw: bool) -> <span class="prelude-ty">Result</span><Vec<TransactionDetails>, Error> {
+ <span class="self">self</span>.database.borrow().iter_txs(include_raw)
+ }
+
+ <span class="doccomment">/// Return the balance, separated into available, trusted-pending, untrusted-pending and immature
+ /// values.
+ ///
+ /// Note that this method only operates on the internal database, which first needs to be
+ /// [`Wallet::sync`] manually.
+ </span><span class="kw">pub fn </span>get_balance(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Balance, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>immature = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>trusted_pending = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>untrusted_pending = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>confirmed = <span class="number">0</span>;
+ <span class="kw">let </span>utxos = <span class="self">self</span>.list_unspent()<span class="question-mark">?</span>;
+ <span class="kw">let </span>database = <span class="self">self</span>.database.borrow();
+ <span class="kw">let </span>last_sync_height = <span class="kw">match </span>database
+ .get_sync_time()<span class="question-mark">?
+ </span>.map(|sync_time| sync_time.block_time.height)
{
- <span class="prelude-val">Some</span>(<span class="ident">height</span>) => <span class="ident">height</span>,
- <span class="comment">// None means database was never synced</span>
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Ok</span>(<span class="ident">Balance::default</span>()),
+ <span class="prelude-val">Some</span>(height) => height,
+ <span class="comment">// None means database was never synced
+ </span><span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Ok</span>(Balance::default()),
};
- <span class="kw">for</span> <span class="ident">u</span> <span class="kw">in</span> <span class="ident">utxos</span> {
- <span class="comment">// Unwrap used since utxo set is created from database</span>
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">database</span>
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">u</span>.<span class="ident">outpoint</span>.<span class="ident">txid</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>
- .<span class="ident">expect</span>(<span class="string">"Transaction not found in database"</span>);
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">tx_conf_time</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">confirmation_time</span> {
- <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">transaction</span>.<span class="ident">expect</span>(<span class="string">"No transaction"</span>).<span class="ident">is_coin_base</span>()
- <span class="op">&&</span> (<span class="ident">last_sync_height</span> <span class="op">-</span> <span class="ident">tx_conf_time</span>.<span class="ident">height</span>) <span class="op"><</span> <span class="ident">COINBASE_MATURITY</span>
+ <span class="kw">for </span>u <span class="kw">in </span>utxos {
+ <span class="comment">// Unwrap used since utxo set is created from database
+ </span><span class="kw">let </span>tx = database
+ .get_tx(<span class="kw-2">&</span>u.outpoint.txid, <span class="bool-val">true</span>)<span class="question-mark">?
+ </span>.expect(<span class="string">"Transaction not found in database"</span>);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(tx_conf_time) = <span class="kw-2">&</span>tx.confirmation_time {
+ <span class="kw">if </span>tx.transaction.expect(<span class="string">"No transaction"</span>).is_coin_base()
+ && (last_sync_height - tx_conf_time.height) < COINBASE_MATURITY
{
- <span class="ident">immature</span> <span class="op">+</span><span class="op">=</span> <span class="ident">u</span>.<span class="ident">txout</span>.<span class="ident">value</span>;
- } <span class="kw">else</span> {
- <span class="ident">confirmed</span> <span class="op">+</span><span class="op">=</span> <span class="ident">u</span>.<span class="ident">txout</span>.<span class="ident">value</span>;
+ immature += u.txout.value;
+ } <span class="kw">else </span>{
+ confirmed += u.txout.value;
}
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">u</span>.<span class="ident">keychain</span> <span class="op">==</span> <span class="ident">KeychainKind::Internal</span> {
- <span class="ident">trusted_pending</span> <span class="op">+</span><span class="op">=</span> <span class="ident">u</span>.<span class="ident">txout</span>.<span class="ident">value</span>;
- } <span class="kw">else</span> {
- <span class="ident">untrusted_pending</span> <span class="op">+</span><span class="op">=</span> <span class="ident">u</span>.<span class="ident">txout</span>.<span class="ident">value</span>;
+ } <span class="kw">else if </span>u.keychain == KeychainKind::Internal {
+ trusted_pending += u.txout.value;
+ } <span class="kw">else </span>{
+ untrusted_pending += u.txout.value;
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">Balance</span> {
- <span class="ident">immature</span>,
- <span class="ident">trusted_pending</span>,
- <span class="ident">untrusted_pending</span>,
- <span class="ident">confirmed</span>,
+ <span class="prelude-val">Ok</span>(Balance {
+ immature,
+ trusted_pending,
+ untrusted_pending,
+ confirmed,
})
}
- <span class="doccomment">/// Add an external signer</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// See [the `signer` module](signer) for an example.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_signer</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">ordering</span>: <span class="ident">SignerOrdering</span>,
- <span class="ident">signer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span>,
+ <span class="doccomment">/// Add an external signer
+ ///
+ /// See [the `signer` module](signer) for an example.
+ </span><span class="kw">pub fn </span>add_signer(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ keychain: KeychainKind,
+ ordering: SignerOrdering,
+ signer: Arc<<span class="kw">dyn </span>TransactionSigner>,
) {
- <span class="kw">let</span> <span class="ident">signers</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="ident">KeychainKind::External</span> => <span class="ident">Arc::make_mut</span>(<span class="kw-2">&mut</span> <span class="self">self</span>.<span class="ident">signers</span>),
- <span class="ident">KeychainKind::Internal</span> => <span class="ident">Arc::make_mut</span>(<span class="kw-2">&mut</span> <span class="self">self</span>.<span class="ident">change_signers</span>),
+ <span class="kw">let </span>signers = <span class="kw">match </span>keychain {
+ KeychainKind::External => Arc::make_mut(<span class="kw-2">&mut </span><span class="self">self</span>.signers),
+ KeychainKind::Internal => Arc::make_mut(<span class="kw-2">&mut </span><span class="self">self</span>.change_signers),
};
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">signer</span>.<span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>), <span class="ident">ordering</span>, <span class="ident">signer</span>);
- }
-
- <span class="doccomment">/// Get the signers</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Example</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">/// # use bdk::{Wallet, KeychainKind};</span>
- <span class="doccomment">/// # use bdk::bitcoin::Network;</span>
- <span class="doccomment">/// # use bdk::database::MemoryDatabase;</span>
- <span class="doccomment">/// let wallet = Wallet::new("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet, MemoryDatabase::new())?;</span>
- <span class="doccomment">/// for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {</span>
- <span class="doccomment">/// // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*</span>
- <span class="doccomment">/// println!("secret_key: {}", secret_key);</span>
- <span class="doccomment">/// }</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Ok::<(), Box<dyn std::error::Error>>(())</span>
- <span class="doccomment">/// ```</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_signers</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="ident">Arc</span><span class="op"><</span><span class="ident">SignersContainer</span><span class="op">></span> {
- <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="ident">KeychainKind::External</span> => <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">signers</span>),
- <span class="ident">KeychainKind::Internal</span> => <span class="ident">Arc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">change_signers</span>),
+ signers.add_external(signer.id(<span class="kw-2">&</span><span class="self">self</span>.secp), ordering, signer);
+ }
+
+ <span class="doccomment">/// Get the signers
+ ///
+ /// ## Example
+ ///
+ /// ```
+ /// # use bdk::{Wallet, KeychainKind};
+ /// # use bdk::bitcoin::Network;
+ /// # use bdk::database::MemoryDatabase;
+ /// let wallet = Wallet::new("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet, MemoryDatabase::new())?;
+ /// for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
+ /// // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
+ /// println!("secret_key: {}", secret_key);
+ /// }
+ ///
+ /// Ok::<(), Box<dyn std::error::Error>>(())
+ /// ```
+ </span><span class="kw">pub fn </span>get_signers(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> Arc<SignersContainer> {
+ <span class="kw">match </span>keychain {
+ KeychainKind::External => Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.signers),
+ KeychainKind::Internal => Arc::clone(<span class="kw-2">&</span><span class="self">self</span>.change_signers),
}
}
- <span class="doccomment">/// Start building a transaction.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This returns a blank [`TxBuilder`] from which you can specify the parameters for the transaction.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Example</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">/// # use std::str::FromStr;</span>
- <span class="doccomment">/// # use bitcoin::*;</span>
- <span class="doccomment">/// # use bdk::*;</span>
- <span class="doccomment">/// # use bdk::database::*;</span>
- <span class="doccomment">/// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";</span>
- <span class="doccomment">/// # let wallet = doctest_wallet!();</span>
- <span class="doccomment">/// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
- <span class="doccomment">/// let (psbt, details) = {</span>
- <span class="doccomment">/// let mut builder = wallet.build_tx();</span>
- <span class="doccomment">/// builder</span>
- <span class="doccomment">/// .add_recipient(to_address.script_pubkey(), 50_000);</span>
- <span class="doccomment">/// builder.finish()?</span>
- <span class="doccomment">/// };</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// // sign and broadcast ...</span>
- <span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`TxBuilder`]: crate::TxBuilder</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">build_tx</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'_</span>, <span class="ident">D</span>, <span class="ident">DefaultCoinSelectionAlgorithm</span>, <span class="ident">CreateTx</span><span class="op">></span> {
- <span class="ident">TxBuilder</span> {
- <span class="ident">wallet</span>: <span class="self">self</span>,
- <span class="ident">params</span>: <span class="ident">TxParams::default</span>(),
- <span class="ident">coin_selection</span>: <span class="ident">DefaultCoinSelectionAlgorithm::default</span>(),
- <span class="ident">phantom</span>: <span class="ident">core::marker::PhantomData</span>,
+ <span class="doccomment">/// Start building a transaction.
+ ///
+ /// This returns a blank [`TxBuilder`] from which you can specify the parameters for the transaction.
+ ///
+ /// ## Example
+ ///
+ /// ```
+ /// # use std::str::FromStr;
+ /// # use bitcoin::*;
+ /// # use bdk::*;
+ /// # use bdk::database::*;
+ /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
+ /// # let wallet = doctest_wallet!();
+ /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+ /// let (psbt, details) = {
+ /// let mut builder = wallet.build_tx();
+ /// builder
+ /// .add_recipient(to_address.script_pubkey(), 50_000);
+ /// builder.finish()?
+ /// };
+ ///
+ /// // sign and broadcast ...
+ /// # Ok::<(), bdk::Error>(())
+ /// ```
+ ///
+ /// [`TxBuilder`]: crate::TxBuilder
+ </span><span class="kw">pub fn </span>build_tx(<span class="kw-2">&</span><span class="self">self</span>) -> TxBuilder<<span class="lifetime">'_</span>, D, DefaultCoinSelectionAlgorithm, CreateTx> {
+ TxBuilder {
+ wallet: <span class="self">self</span>,
+ params: TxParams::default(),
+ coin_selection: DefaultCoinSelectionAlgorithm::default(),
+ phantom: core::marker::PhantomData,
}
}
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">create_tx</span><span class="op"><</span><span class="ident">Cs</span>: <span class="ident">coin_selection::CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span><span class="op">></span>(
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>create_tx<Cs: coin_selection::CoinSelectionAlgorithm<D>>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">coin_selection</span>: <span class="ident">Cs</span>,
- <span class="ident">params</span>: <span class="ident">TxParams</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">psbt::PartiallySignedTransaction</span>, <span class="ident">TransactionDetails</span>), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">external_policy</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">descriptor</span>
- .<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">signers</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>)<span class="question-mark">?</span>
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">internal_policy</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">change_descriptor</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">desc</span><span class="op">|</span> {
- <span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span>(
- <span class="ident">desc</span>.<span class="ident">extract_policy</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">change_signers</span>, <span class="ident">BuildSatisfaction::None</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>)<span class="question-mark">?</span>
- .<span class="ident">unwrap</span>(),
+ coin_selection: Cs,
+ params: TxParams,
+ ) -> <span class="prelude-ty">Result</span><(psbt::PartiallySignedTransaction, TransactionDetails), Error> {
+ <span class="kw">let </span>external_policy = <span class="self">self
+ </span>.descriptor
+ .extract_policy(<span class="kw-2">&</span><span class="self">self</span>.signers, BuildSatisfaction::None, <span class="kw-2">&</span><span class="self">self</span>.secp)<span class="question-mark">?
+ </span>.unwrap();
+ <span class="kw">let </span>internal_policy = <span class="self">self
+ </span>.change_descriptor
+ .as_ref()
+ .map(|desc| {
+ <span class="prelude-val">Ok</span>::<<span class="kw">_</span>, Error>(
+ desc.extract_policy(<span class="kw-2">&</span><span class="self">self</span>.change_signers, BuildSatisfaction::None, <span class="kw-2">&</span><span class="self">self</span>.secp)<span class="question-mark">?
+ </span>.unwrap(),
)
})
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>;
+ .transpose()<span class="question-mark">?</span>;
- <span class="comment">// The policy allows spending external outputs, but it requires a policy path that hasn't been</span>
- <span class="comment">// provided</span>
- <span class="kw">if</span> <span class="ident">params</span>.<span class="ident">change_policy</span> <span class="op">!</span><span class="op">=</span> <span class="ident">tx_builder::ChangeSpendPolicy::OnlyChange</span>
- <span class="op">&&</span> <span class="ident">external_policy</span>.<span class="ident">requires_path</span>()
- <span class="op">&&</span> <span class="ident">params</span>.<span class="ident">external_policy_path</span>.<span class="ident">is_none</span>()
+ <span class="comment">// The policy allows spending external outputs, but it requires a policy path that hasn't been
+ // provided
+ </span><span class="kw">if </span>params.change_policy != tx_builder::ChangeSpendPolicy::OnlyChange
+ && external_policy.requires_path()
+ && params.external_policy_path.is_none()
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::SpendingPolicyRequired</span>(<span class="ident">KeychainKind::External</span>));
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::SpendingPolicyRequired(KeychainKind::External));
};
- <span class="comment">// Same for the internal_policy path, if present</span>
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">internal_policy</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">internal_policy</span> {
- <span class="kw">if</span> <span class="ident">params</span>.<span class="ident">change_policy</span> <span class="op">!</span><span class="op">=</span> <span class="ident">tx_builder::ChangeSpendPolicy::ChangeForbidden</span>
- <span class="op">&&</span> <span class="ident">internal_policy</span>.<span class="ident">requires_path</span>()
- <span class="op">&&</span> <span class="ident">params</span>.<span class="ident">internal_policy_path</span>.<span class="ident">is_none</span>()
+ <span class="comment">// Same for the internal_policy path, if present
+ </span><span class="kw">if let </span><span class="prelude-val">Some</span>(internal_policy) = <span class="kw-2">&</span>internal_policy {
+ <span class="kw">if </span>params.change_policy != tx_builder::ChangeSpendPolicy::ChangeForbidden
+ && internal_policy.requires_path()
+ && params.internal_policy_path.is_none()
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::SpendingPolicyRequired</span>(<span class="ident">KeychainKind::Internal</span>));
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::SpendingPolicyRequired(KeychainKind::Internal));
};
}
- <span class="kw">let</span> <span class="ident">external_requirements</span> <span class="op">=</span> <span class="ident">external_policy</span>.<span class="ident">get_condition</span>(
- <span class="ident">params</span>
- .<span class="ident">external_policy_path</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">unwrap_or</span>(<span class="kw-2">&</span><span class="ident">BTreeMap::new</span>()),
+ <span class="kw">let </span>external_requirements = external_policy.get_condition(
+ params
+ .external_policy_path
+ .as_ref()
+ .unwrap_or(<span class="kw-2">&</span>BTreeMap::new()),
)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">internal_requirements</span> <span class="op">=</span> <span class="ident">internal_policy</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">policy</span><span class="op">|</span> {
- <span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span>(
- <span class="ident">policy</span>.<span class="ident">get_condition</span>(
- <span class="ident">params</span>
- .<span class="ident">internal_policy_path</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">unwrap_or</span>(<span class="kw-2">&</span><span class="ident">BTreeMap::new</span>()),
+ <span class="kw">let </span>internal_requirements = internal_policy
+ .map(|policy| {
+ <span class="prelude-val">Ok</span>::<<span class="kw">_</span>, Error>(
+ policy.get_condition(
+ params
+ .internal_policy_path
+ .as_ref()
+ .unwrap_or(<span class="kw-2">&</span>BTreeMap::new()),
)<span class="question-mark">?</span>,
)
})
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>;
+ .transpose()<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">requirements</span> <span class="op">=</span>
- <span class="ident">external_requirements</span>.<span class="ident">merge</span>(<span class="kw-2">&</span><span class="ident">internal_requirements</span>.<span class="ident">unwrap_or_default</span>())<span class="question-mark">?</span>;
- <span class="macro">debug!</span>(<span class="string">"Policy requirements: {:?}"</span>, <span class="ident">requirements</span>);
+ <span class="kw">let </span>requirements =
+ external_requirements.merge(<span class="kw-2">&</span>internal_requirements.unwrap_or_default())<span class="question-mark">?</span>;
+ <span class="macro">debug!</span>(<span class="string">"Policy requirements: {:?}"</span>, requirements);
- <span class="kw">let</span> <span class="ident">version</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">params</span>.<span class="ident">version</span> {
- <span class="prelude-val">Some</span>(<span class="ident">tx_builder::Version</span>(<span class="number">0</span>)) => {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="string">"Invalid version `0`"</span>.<span class="ident">into</span>()))
+ <span class="kw">let </span>version = <span class="kw">match </span>params.version {
+ <span class="prelude-val">Some</span>(tx_builder::Version(<span class="number">0</span>)) => {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="string">"Invalid version `0`"</span>.into()))
}
- <span class="prelude-val">Some</span>(<span class="ident">tx_builder::Version</span>(<span class="number">1</span>)) <span class="kw">if</span> <span class="ident">requirements</span>.<span class="ident">csv</span>.<span class="ident">is_some</span>() => {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(
- <span class="string">"TxBuilder requested version `1`, but at least `2` is needed to use OP_CSV"</span>
- .<span class="ident">into</span>(),
+ <span class="prelude-val">Some</span>(tx_builder::Version(<span class="number">1</span>)) <span class="kw">if </span>requirements.csv.is_some() => {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(
+ <span class="string">"TxBuilder requested version `1`, but at least `2` is needed to use OP_CSV"
+ </span>.into(),
))
}
- <span class="prelude-val">Some</span>(<span class="ident">tx_builder::Version</span>(<span class="ident">x</span>)) => <span class="ident">x</span>,
- <span class="prelude-val">None</span> <span class="kw">if</span> <span class="ident">requirements</span>.<span class="ident">csv</span>.<span class="ident">is_some</span>() => <span class="number">2</span>,
- <span class="kw">_</span> => <span class="number">1</span>,
+ <span class="prelude-val">Some</span>(tx_builder::Version(x)) => x,
+ <span class="prelude-val">None </span><span class="kw">if </span>requirements.csv.is_some() => <span class="number">2</span>,
+ <span class="kw">_ </span>=> <span class="number">1</span>,
};
- <span class="comment">// We use a match here instead of a map_or_else as it's way more readable :)</span>
- <span class="kw">let</span> <span class="ident">current_height</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">params</span>.<span class="ident">current_height</span> {
- <span class="comment">// If they didn't tell us the current height, we assume it's the latest sync height.</span>
- <span class="prelude-val">None</span> => <span class="self">self</span>.<span class="ident">database</span>().<span class="ident">get_sync_time</span>()<span class="question-mark">?</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">sync_time</span><span class="op">|</span> {
- <span class="ident">LockTime::from_height</span>(<span class="ident">sync_time</span>.<span class="ident">block_time</span>.<span class="ident">height</span>).<span class="ident">expect</span>(<span class="string">"Invalid height"</span>)
+ <span class="comment">// We use a match here instead of a map_or_else as it's way more readable :)
+ </span><span class="kw">let </span>current_height = <span class="kw">match </span>params.current_height {
+ <span class="comment">// If they didn't tell us the current height, we assume it's the latest sync height.
+ </span><span class="prelude-val">None </span>=> <span class="self">self</span>.database().get_sync_time()<span class="question-mark">?</span>.map(|sync_time| {
+ LockTime::from_height(sync_time.block_time.height).expect(<span class="string">"Invalid height"</span>)
}),
- <span class="ident">h</span> => <span class="ident">h</span>,
+ h => h,
};
- <span class="kw">let</span> <span class="ident">lock_time</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">params</span>.<span class="ident">locktime</span> {
- <span class="comment">// When no nLockTime is specified, we try to prevent fee sniping, if possible</span>
- <span class="prelude-val">None</span> => {
- <span class="comment">// Fee sniping can be partially prevented by setting the timelock</span>
- <span class="comment">// to current_height. If we don't know the current_height,</span>
- <span class="comment">// we default to 0.</span>
- <span class="kw">let</span> <span class="ident">fee_sniping_height</span> <span class="op">=</span> <span class="ident">current_height</span>.<span class="ident">unwrap_or</span>(<span class="ident">LockTime::ZERO</span>);
-
- <span class="comment">// We choose the biggest between the required nlocktime and the fee sniping</span>
- <span class="comment">// height</span>
- <span class="kw">match</span> <span class="ident">requirements</span>.<span class="ident">timelock</span> {
- <span class="comment">// No requirement, just use the fee_sniping_height</span>
- <span class="prelude-val">None</span> => <span class="ident">fee_sniping_height</span>,
- <span class="comment">// There's a block-based requirement, but the value is lower than the fee_sniping_height</span>
- <span class="prelude-val">Some</span>(<span class="ident">value</span> @ <span class="ident">LockTime::Blocks</span>(<span class="kw">_</span>)) <span class="kw">if</span> <span class="ident">value</span> <span class="op"><</span> <span class="ident">fee_sniping_height</span> => <span class="ident">fee_sniping_height</span>,
- <span class="comment">// There's a time-based requirement or a block-based requirement greater</span>
- <span class="comment">// than the fee_sniping_height use that value</span>
- <span class="prelude-val">Some</span>(<span class="ident">value</span>) => <span class="ident">value</span>,
+ <span class="kw">let </span>lock_time = <span class="kw">match </span>params.locktime {
+ <span class="comment">// When no nLockTime is specified, we try to prevent fee sniping, if possible
+ </span><span class="prelude-val">None </span>=> {
+ <span class="comment">// Fee sniping can be partially prevented by setting the timelock
+ // to current_height. If we don't know the current_height,
+ // we default to 0.
+ </span><span class="kw">let </span>fee_sniping_height = current_height.unwrap_or(LockTime::ZERO);
+
+ <span class="comment">// We choose the biggest between the required nlocktime and the fee sniping
+ // height
+ </span><span class="kw">match </span>requirements.timelock {
+ <span class="comment">// No requirement, just use the fee_sniping_height
+ </span><span class="prelude-val">None </span>=> fee_sniping_height,
+ <span class="comment">// There's a block-based requirement, but the value is lower than the fee_sniping_height
+ </span><span class="prelude-val">Some</span>(value @ LockTime::Blocks(<span class="kw">_</span>)) <span class="kw">if </span>value < fee_sniping_height => fee_sniping_height,
+ <span class="comment">// There's a time-based requirement or a block-based requirement greater
+ // than the fee_sniping_height use that value
+ </span><span class="prelude-val">Some</span>(value) => value,
}
}
- <span class="comment">// Specific nLockTime required and we have no constraints, so just set to that value</span>
- <span class="prelude-val">Some</span>(<span class="ident">x</span>) <span class="kw">if</span> <span class="ident">requirements</span>.<span class="ident">timelock</span>.<span class="ident">is_none</span>() => <span class="ident">x</span>,
- <span class="comment">// Specific nLockTime required and it's compatible with the constraints</span>
- <span class="prelude-val">Some</span>(<span class="ident">x</span>) <span class="kw">if</span> <span class="ident">requirements</span>.<span class="ident">timelock</span>.<span class="ident">unwrap</span>().<span class="ident">is_same_unit</span>(<span class="ident">x</span>) <span class="op">&&</span> <span class="ident">x</span> <span class="op">></span><span class="op">=</span> <span class="ident">requirements</span>.<span class="ident">timelock</span>.<span class="ident">unwrap</span>() => <span class="ident">x</span>,
- <span class="comment">// Invalid nLockTime required</span>
- <span class="prelude-val">Some</span>(<span class="ident">x</span>) => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="macro">format!</span>(<span class="string">"TxBuilder requested timelock of `{:?}`, but at least `{:?}` is required to spend from this script"</span>, <span class="ident">x</span>, <span class="ident">requirements</span>.<span class="ident">timelock</span>.<span class="ident">unwrap</span>())))
+ <span class="comment">// Specific nLockTime required and we have no constraints, so just set to that value
+ </span><span class="prelude-val">Some</span>(x) <span class="kw">if </span>requirements.timelock.is_none() => x,
+ <span class="comment">// Specific nLockTime required and it's compatible with the constraints
+ </span><span class="prelude-val">Some</span>(x) <span class="kw">if </span>requirements.timelock.unwrap().is_same_unit(x) && x >= requirements.timelock.unwrap() => x,
+ <span class="comment">// Invalid nLockTime required
+ </span><span class="prelude-val">Some</span>(x) => <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="macro">format!</span>(<span class="string">"TxBuilder requested timelock of `{:?}`, but at least `{:?}` is required to spend from this script"</span>, x, requirements.timelock.unwrap())))
};
- <span class="kw">let</span> <span class="ident">n_sequence</span> <span class="op">=</span> <span class="kw">match</span> (<span class="ident">params</span>.<span class="ident">rbf</span>, <span class="ident">requirements</span>.<span class="ident">csv</span>) {
- <span class="comment">// No RBF or CSV but there's an nLockTime, so the nSequence cannot be final</span>
- (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) <span class="kw">if</span> <span class="ident">lock_time</span> <span class="op">!</span><span class="op">=</span> <span class="ident">LockTime::ZERO</span> => <span class="ident">Sequence::ENABLE_LOCKTIME_NO_RBF</span>,
- <span class="comment">// No RBF, CSV or nLockTime, make the transaction final</span>
- (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) => <span class="ident">Sequence::MAX</span>,
-
- <span class="comment">// No RBF requested, use the value from CSV. Note that this value is by definition</span>
- <span class="comment">// non-final, so even if a timelock is enabled this nSequence is fine, hence why we</span>
- <span class="comment">// don't bother checking for it here. The same is true for all the other branches below</span>
- (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="ident">csv</span>)) => <span class="ident">csv</span>,
-
- <span class="comment">// RBF with a specific value but that value is too high</span>
- (<span class="prelude-val">Some</span>(<span class="ident">tx_builder::RbfValue::Value</span>(<span class="ident">rbf</span>)), <span class="kw">_</span>) <span class="kw">if</span> <span class="op">!</span><span class="ident">rbf</span>.<span class="ident">is_rbf</span>() => {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(
- <span class="string">"Cannot enable RBF with a nSequence >= 0xFFFFFFFE"</span>.<span class="ident">into</span>(),
+ <span class="kw">let </span>n_sequence = <span class="kw">match </span>(params.rbf, requirements.csv) {
+ <span class="comment">// No RBF or CSV but there's an nLockTime, so the nSequence cannot be final
+ </span>(<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) <span class="kw">if </span>lock_time != LockTime::ZERO => Sequence::ENABLE_LOCKTIME_NO_RBF,
+ <span class="comment">// No RBF, CSV or nLockTime, make the transaction final
+ </span>(<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) => Sequence::MAX,
+
+ <span class="comment">// No RBF requested, use the value from CSV. Note that this value is by definition
+ // non-final, so even if a timelock is enabled this nSequence is fine, hence why we
+ // don't bother checking for it here. The same is true for all the other branches below
+ </span>(<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(csv)) => csv,
+
+ <span class="comment">// RBF with a specific value but that value is too high
+ </span>(<span class="prelude-val">Some</span>(tx_builder::RbfValue::Value(rbf)), <span class="kw">_</span>) <span class="kw">if </span>!rbf.is_rbf() => {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(
+ <span class="string">"Cannot enable RBF with a nSequence >= 0xFFFFFFFE"</span>.into(),
))
}
- <span class="comment">// RBF with a specific value requested, but the value is incompatible with CSV</span>
- (<span class="prelude-val">Some</span>(<span class="ident">tx_builder::RbfValue::Value</span>(<span class="ident">rbf</span>)), <span class="prelude-val">Some</span>(<span class="ident">csv</span>))
- <span class="kw">if</span> <span class="op">!</span><span class="ident">check_nsequence_rbf</span>(<span class="ident">rbf</span>, <span class="ident">csv</span>) =>
+ <span class="comment">// RBF with a specific value requested, but the value is incompatible with CSV
+ </span>(<span class="prelude-val">Some</span>(tx_builder::RbfValue::Value(rbf)), <span class="prelude-val">Some</span>(csv))
+ <span class="kw">if </span>!check_nsequence_rbf(rbf, csv) =>
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="macro">format!</span>(
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="macro">format!</span>(
<span class="string">"Cannot enable RBF with nSequence `{:?}` given a required OP_CSV of `{:?}`"</span>,
- <span class="ident">rbf</span>, <span class="ident">csv</span>
+ rbf, csv
)))
}
- <span class="comment">// RBF enabled with the default value with CSV also enabled. CSV takes precedence</span>
- (<span class="prelude-val">Some</span>(<span class="ident">tx_builder::RbfValue::Default</span>), <span class="prelude-val">Some</span>(<span class="ident">csv</span>)) => <span class="ident">csv</span>,
- <span class="comment">// Valid RBF, either default or with a specific value. We ignore the `CSV` value</span>
- <span class="comment">// because we've already checked it before</span>
- (<span class="prelude-val">Some</span>(<span class="ident">rbf</span>), <span class="kw">_</span>) => <span class="ident">rbf</span>.<span class="ident">get_value</span>(),
+ <span class="comment">// RBF enabled with the default value with CSV also enabled. CSV takes precedence
+ </span>(<span class="prelude-val">Some</span>(tx_builder::RbfValue::Default), <span class="prelude-val">Some</span>(csv)) => csv,
+ <span class="comment">// Valid RBF, either default or with a specific value. We ignore the `CSV` value
+ // because we've already checked it before
+ </span>(<span class="prelude-val">Some</span>(rbf), <span class="kw">_</span>) => rbf.get_value(),
};
- <span class="kw">let</span> (<span class="ident">fee_rate</span>, <span class="kw-2">mut</span> <span class="ident">fee_amount</span>) <span class="op">=</span> <span class="kw">match</span> <span class="ident">params</span>
- .<span class="ident">fee_policy</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">unwrap_or</span>(<span class="kw-2">&</span><span class="ident">FeePolicy::FeeRate</span>(<span class="ident">FeeRate::default</span>()))
+ <span class="kw">let </span>(fee_rate, <span class="kw-2">mut </span>fee_amount) = <span class="kw">match </span>params
+ .fee_policy
+ .as_ref()
+ .unwrap_or(<span class="kw-2">&</span>FeePolicy::FeeRate(FeeRate::default()))
{
- <span class="comment">//FIXME: see https://github.com/bitcoindevkit/bdk/issues/256</span>
- <span class="ident">FeePolicy::FeeAmount</span>(<span class="ident">fee</span>) => {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">previous_fee</span>) <span class="op">=</span> <span class="ident">params</span>.<span class="ident">bumping_fee</span> {
- <span class="kw">if</span> <span class="kw-2">*</span><span class="ident">fee</span> <span class="op"><</span> <span class="ident">previous_fee</span>.<span class="ident">absolute</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::FeeTooLow</span> {
- <span class="ident">required</span>: <span class="ident">previous_fee</span>.<span class="ident">absolute</span>,
+ <span class="comment">//FIXME: see https://github.com/bitcoindevkit/bdk/issues/256
+ </span>FeePolicy::FeeAmount(fee) => {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(previous_fee) = params.bumping_fee {
+ <span class="kw">if </span><span class="kw-2">*</span>fee < previous_fee.absolute {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FeeTooLow {
+ required: previous_fee.absolute,
});
}
}
- (<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">0.0</span>), <span class="kw-2">*</span><span class="ident">fee</span>)
+ (FeeRate::from_sat_per_vb(<span class="number">0.0</span>), <span class="kw-2">*</span>fee)
}
- <span class="ident">FeePolicy::FeeRate</span>(<span class="ident">rate</span>) => {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">previous_fee</span>) <span class="op">=</span> <span class="ident">params</span>.<span class="ident">bumping_fee</span> {
- <span class="kw">let</span> <span class="ident">required_feerate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="ident">previous_fee</span>.<span class="ident">rate</span> <span class="op">+</span> <span class="number">1.0</span>);
- <span class="kw">if</span> <span class="kw-2">*</span><span class="ident">rate</span> <span class="op"><</span> <span class="ident">required_feerate</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::FeeRateTooLow</span> {
- <span class="ident">required</span>: <span class="ident">required_feerate</span>,
+ FeePolicy::FeeRate(rate) => {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(previous_fee) = params.bumping_fee {
+ <span class="kw">let </span>required_feerate = FeeRate::from_sat_per_vb(previous_fee.rate + <span class="number">1.0</span>);
+ <span class="kw">if </span><span class="kw-2">*</span>rate < required_feerate {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FeeRateTooLow {
+ required: required_feerate,
});
}
}
- (<span class="kw-2">*</span><span class="ident">rate</span>, <span class="number">0</span>)
+ (<span class="kw-2">*</span>rate, <span class="number">0</span>)
}
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">Transaction</span> {
- <span class="ident">version</span>,
- <span class="ident">lock_time</span>: <span class="ident">lock_time</span>.<span class="ident">into</span>(),
- <span class="ident">input</span>: <span class="macro">vec!</span>[],
- <span class="ident">output</span>: <span class="macro">vec!</span>[],
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = Transaction {
+ version,
+ lock_time: lock_time.into(),
+ input: <span class="macro">vec!</span>[],
+ output: <span class="macro">vec!</span>[],
};
- <span class="kw">if</span> <span class="ident">params</span>.<span class="ident">manually_selected_only</span> <span class="op">&&</span> <span class="ident">params</span>.<span class="ident">utxos</span>.<span class="ident">is_empty</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::NoUtxosSelected</span>);
+ <span class="kw">if </span>params.manually_selected_only && params.utxos.is_empty() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::NoUtxosSelected);
}
- <span class="comment">// we keep it as a float while we accumulate it, and only round it at the end</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">outgoing</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">received</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="comment">// we keep it as a float while we accumulate it, and only round it at the end
+ </span><span class="kw">let </span><span class="kw-2">mut </span>outgoing: u64 = <span class="number">0</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>received: u64 = <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">recipients</span> <span class="op">=</span> <span class="ident">params</span>.<span class="ident">recipients</span>.<span class="ident">iter</span>().<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">r</span>, <span class="ident">v</span>)<span class="op">|</span> (<span class="ident">r</span>, <span class="kw-2">*</span><span class="ident">v</span>));
+ <span class="kw">let </span>recipients = params.recipients.iter().map(|(r, v)| (r, <span class="kw-2">*</span>v));
- <span class="kw">for</span> (<span class="ident">index</span>, (<span class="ident">script_pubkey</span>, <span class="ident">value</span>)) <span class="kw">in</span> <span class="ident">recipients</span>.<span class="ident">enumerate</span>() {
- <span class="kw">if</span> <span class="op">!</span><span class="ident">params</span>.<span class="ident">allow_dust</span>
- <span class="op">&&</span> <span class="ident">value</span>.<span class="ident">is_dust</span>(<span class="ident">script_pubkey</span>)
- <span class="op">&&</span> <span class="op">!</span><span class="ident">script_pubkey</span>.<span class="ident">is_provably_unspendable</span>()
+ <span class="kw">for </span>(index, (script_pubkey, value)) <span class="kw">in </span>recipients.enumerate() {
+ <span class="kw">if </span>!params.allow_dust
+ && value.is_dust(script_pubkey)
+ && !script_pubkey.is_provably_unspendable()
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::OutputBelowDustLimit</span>(<span class="ident">index</span>));
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::OutputBelowDustLimit(index));
}
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_mine</span>(<span class="ident">script_pubkey</span>)<span class="question-mark">?</span> {
- <span class="ident">received</span> <span class="op">+</span><span class="op">=</span> <span class="ident">value</span>;
+ <span class="kw">if </span><span class="self">self</span>.is_mine(script_pubkey)<span class="question-mark">? </span>{
+ received += value;
}
- <span class="kw">let</span> <span class="ident">new_out</span> <span class="op">=</span> <span class="ident">TxOut</span> {
- <span class="ident">script_pubkey</span>: <span class="ident">script_pubkey</span>.<span class="ident">clone</span>(),
- <span class="ident">value</span>,
+ <span class="kw">let </span>new_out = TxOut {
+ script_pubkey: script_pubkey.clone(),
+ value,
};
- <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">push</span>(<span class="ident">new_out</span>);
+ tx.output.push(new_out);
- <span class="ident">outgoing</span> <span class="op">+</span><span class="op">=</span> <span class="ident">value</span>;
+ outgoing += value;
}
- <span class="ident">fee_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">fee_rate</span>.<span class="ident">fee_wu</span>(<span class="ident">tx</span>.<span class="ident">weight</span>());
-
- <span class="comment">// Segwit transactions' header is 2WU larger than legacy txs' header,</span>
- <span class="comment">// as they contain a witness marker (1WU) and a witness flag (1WU) (see BIP144).</span>
- <span class="comment">// At this point we really don't know if the resulting transaction will be segwit</span>
- <span class="comment">// or legacy, so we just add this 2WU to the fee_amount - overshooting the fee amount</span>
- <span class="comment">// is better than undershooting it.</span>
- <span class="comment">// If we pass a fee_amount that is slightly higher than the final fee_amount, we</span>
- <span class="comment">// end up with a transaction with a slightly higher fee rate than the requested one.</span>
- <span class="comment">// If, instead, we undershoot, we may end up with a feerate lower than the requested one</span>
- <span class="comment">// - we might come up with non broadcastable txs!</span>
- <span class="ident">fee_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">fee_rate</span>.<span class="ident">fee_wu</span>(<span class="number">2</span>);
-
- <span class="kw">if</span> <span class="ident">params</span>.<span class="ident">change_policy</span> <span class="op">!</span><span class="op">=</span> <span class="ident">tx_builder::ChangeSpendPolicy::ChangeAllowed</span>
- <span class="op">&&</span> <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">is_none</span>()
+ fee_amount += fee_rate.fee_wu(tx.weight());
+
+ <span class="comment">// Segwit transactions' header is 2WU larger than legacy txs' header,
+ // as they contain a witness marker (1WU) and a witness flag (1WU) (see BIP144).
+ // At this point we really don't know if the resulting transaction will be segwit
+ // or legacy, so we just add this 2WU to the fee_amount - overshooting the fee amount
+ // is better than undershooting it.
+ // If we pass a fee_amount that is slightly higher than the final fee_amount, we
+ // end up with a transaction with a slightly higher fee rate than the requested one.
+ // If, instead, we undershoot, we may end up with a feerate lower than the requested one
+ // - we might come up with non broadcastable txs!
+ </span>fee_amount += fee_rate.fee_wu(<span class="number">2</span>);
+
+ <span class="kw">if </span>params.change_policy != tx_builder::ChangeSpendPolicy::ChangeAllowed
+ && <span class="self">self</span>.change_descriptor.is_none()
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(
- <span class="string">"The `change_policy` can be set only if the wallet has a change_descriptor"</span>.<span class="ident">into</span>(),
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(
+ <span class="string">"The `change_policy` can be set only if the wallet has a change_descriptor"</span>.into(),
));
}
- <span class="kw">let</span> (<span class="ident">required_utxos</span>, <span class="ident">optional_utxos</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">preselect_utxos</span>(
- <span class="ident">params</span>.<span class="ident">change_policy</span>,
- <span class="kw-2">&</span><span class="ident">params</span>.<span class="ident">unspendable</span>,
- <span class="ident">params</span>.<span class="ident">utxos</span>.<span class="ident">clone</span>(),
- <span class="ident">params</span>.<span class="ident">drain_wallet</span>,
- <span class="ident">params</span>.<span class="ident">manually_selected_only</span>,
- <span class="ident">params</span>.<span class="ident">bumping_fee</span>.<span class="ident">is_some</span>(), <span class="comment">// we mandate confirmed transactions if we're bumping the fee</span>
- <span class="ident">current_height</span>.<span class="ident">map</span>(<span class="ident">LockTime::to_consensus_u32</span>),
+ <span class="kw">let </span>(required_utxos, optional_utxos) = <span class="self">self</span>.preselect_utxos(
+ params.change_policy,
+ <span class="kw-2">&</span>params.unspendable,
+ params.utxos.clone(),
+ params.drain_wallet,
+ params.manually_selected_only,
+ params.bumping_fee.is_some(), <span class="comment">// we mandate confirmed transactions if we're bumping the fee
+ </span>current_height.map(LockTime::to_consensus_u32),
)<span class="question-mark">?</span>;
- <span class="comment">// get drain script</span>
- <span class="kw">let</span> <span class="ident">drain_script</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">params</span>.<span class="ident">drain_to</span> {
- <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">drain_recipient</span>) => <span class="ident">drain_recipient</span>.<span class="ident">clone</span>(),
- <span class="prelude-val">None</span> => <span class="self">self</span>
- .<span class="ident">get_internal_address</span>(<span class="ident">AddressIndex::New</span>)<span class="question-mark">?</span>
- .<span class="ident">address</span>
- .<span class="ident">script_pubkey</span>(),
+ <span class="comment">// get drain script
+ </span><span class="kw">let </span>drain_script = <span class="kw">match </span>params.drain_to {
+ <span class="prelude-val">Some</span>(<span class="kw-2">ref </span>drain_recipient) => drain_recipient.clone(),
+ <span class="prelude-val">None </span>=> <span class="self">self
+ </span>.get_internal_address(AddressIndex::New)<span class="question-mark">?
+ </span>.address
+ .script_pubkey(),
};
- <span class="kw">let</span> <span class="ident">coin_selection</span> <span class="op">=</span> <span class="ident">coin_selection</span>.<span class="ident">coin_select</span>(
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">deref</span>(),
- <span class="ident">required_utxos</span>,
- <span class="ident">optional_utxos</span>,
- <span class="ident">fee_rate</span>,
- <span class="ident">outgoing</span> <span class="op">+</span> <span class="ident">fee_amount</span>,
- <span class="kw-2">&</span><span class="ident">drain_script</span>,
+ <span class="kw">let </span>coin_selection = coin_selection.coin_select(
+ <span class="self">self</span>.database.borrow().deref(),
+ required_utxos,
+ optional_utxos,
+ fee_rate,
+ outgoing + fee_amount,
+ <span class="kw-2">&</span>drain_script,
)<span class="question-mark">?</span>;
- <span class="ident">fee_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">coin_selection</span>.<span class="ident">fee_amount</span>;
- <span class="kw">let</span> <span class="ident">excess</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">coin_selection</span>.<span class="ident">excess</span>;
-
- <span class="ident">tx</span>.<span class="ident">input</span> <span class="op">=</span> <span class="ident">coin_selection</span>
- .<span class="ident">selected</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">bitcoin::TxIn</span> {
- <span class="ident">previous_output</span>: <span class="ident">u</span>.<span class="ident">outpoint</span>(),
- <span class="ident">script_sig</span>: <span class="ident">Script::default</span>(),
- <span class="ident">sequence</span>: <span class="ident">n_sequence</span>,
- <span class="ident">witness</span>: <span class="ident">Witness::new</span>(),
+ fee_amount += coin_selection.fee_amount;
+ <span class="kw">let </span>excess = <span class="kw-2">&</span>coin_selection.excess;
+
+ tx.input = coin_selection
+ .selected
+ .iter()
+ .map(|u| bitcoin::TxIn {
+ previous_output: u.outpoint(),
+ script_sig: Script::default(),
+ sequence: n_sequence,
+ witness: Witness::new(),
})
- .<span class="ident">collect</span>();
-
- <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">is_empty</span>() {
- <span class="comment">// Uh oh, our transaction has no outputs.</span>
- <span class="comment">// We allow this when:</span>
- <span class="comment">// - We have a drain_to address and the utxos we must spend (this happens,</span>
- <span class="comment">// for example, when we RBF)</span>
- <span class="comment">// - We have a drain_to address and drain_wallet set</span>
- <span class="comment">// Otherwise, we don't know who we should send the funds to, and how much</span>
- <span class="comment">// we should send!</span>
- <span class="kw">if</span> <span class="ident">params</span>.<span class="ident">drain_to</span>.<span class="ident">is_some</span>() <span class="op">&&</span> (<span class="ident">params</span>.<span class="ident">drain_wallet</span> <span class="op">|</span><span class="op">|</span> <span class="op">!</span><span class="ident">params</span>.<span class="ident">utxos</span>.<span class="ident">is_empty</span>()) {
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">NoChange</span> {
- <span class="ident">dust_threshold</span>,
- <span class="ident">remaining_amount</span>,
- <span class="ident">change_fee</span>,
- } <span class="op">=</span> <span class="ident">excess</span>
+ .collect();
+
+ <span class="kw">if </span>tx.output.is_empty() {
+ <span class="comment">// Uh oh, our transaction has no outputs.
+ // We allow this when:
+ // - We have a drain_to address and the utxos we must spend (this happens,
+ // for example, when we RBF)
+ // - We have a drain_to address and drain_wallet set
+ // Otherwise, we don't know who we should send the funds to, and how much
+ // we should send!
+ </span><span class="kw">if </span>params.drain_to.is_some() && (params.drain_wallet || !params.utxos.is_empty()) {
+ <span class="kw">if let </span>NoChange {
+ dust_threshold,
+ remaining_amount,
+ change_fee,
+ } = excess
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">needed</span>: <span class="kw-2">*</span><span class="ident">dust_threshold</span>,
- <span class="ident">available</span>: <span class="ident">remaining_amount</span>.<span class="ident">saturating_sub</span>(<span class="kw-2">*</span><span class="ident">change_fee</span>),
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InsufficientFunds {
+ needed: <span class="kw-2">*</span>dust_threshold,
+ available: remaining_amount.saturating_sub(<span class="kw-2">*</span>change_fee),
});
}
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::NoRecipients</span>);
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::NoRecipients);
}
}
- <span class="kw">match</span> <span class="ident">excess</span> {
- <span class="ident">NoChange</span> {
- <span class="ident">remaining_amount</span>, ..
- } => <span class="ident">fee_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">remaining_amount</span>,
- <span class="ident">Change</span> { <span class="ident">amount</span>, <span class="ident">fee</span> } => {
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_mine</span>(<span class="kw-2">&</span><span class="ident">drain_script</span>)<span class="question-mark">?</span> {
- <span class="ident">received</span> <span class="op">+</span><span class="op">=</span> <span class="ident">amount</span>;
+ <span class="kw">match </span>excess {
+ NoChange {
+ remaining_amount, ..
+ } => fee_amount += remaining_amount,
+ Change { amount, fee } => {
+ <span class="kw">if </span><span class="self">self</span>.is_mine(<span class="kw-2">&</span>drain_script)<span class="question-mark">? </span>{
+ received += amount;
}
- <span class="ident">fee_amount</span> <span class="op">+</span><span class="op">=</span> <span class="ident">fee</span>;
+ fee_amount += fee;
- <span class="comment">// create drain output</span>
- <span class="kw">let</span> <span class="ident">drain_output</span> <span class="op">=</span> <span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="kw-2">*</span><span class="ident">amount</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">drain_script</span>,
+ <span class="comment">// create drain output
+ </span><span class="kw">let </span>drain_output = TxOut {
+ value: <span class="kw-2">*</span>amount,
+ script_pubkey: drain_script,
};
- <span class="comment">// TODO: We should pay attention when adding a new output: this might increase</span>
- <span class="comment">// the lenght of the "number of vouts" parameter by 2 bytes, potentially making</span>
- <span class="comment">// our feerate too low</span>
- <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">push</span>(<span class="ident">drain_output</span>);
+ <span class="comment">// TODO: We should pay attention when adding a new output: this might increase
+ // the lenght of the "number of vouts" parameter by 2 bytes, potentially making
+ // our feerate too low
+ </span>tx.output.push(drain_output);
}
};
- <span class="comment">// sort input/outputs according to the chosen algorithm</span>
- <span class="ident">params</span>.<span class="ident">ordering</span>.<span class="ident">sort_tx</span>(<span class="kw-2">&mut</span> <span class="ident">tx</span>);
+ <span class="comment">// sort input/outputs according to the chosen algorithm
+ </span>params.ordering.sort_tx(<span class="kw-2">&mut </span>tx);
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">let</span> <span class="ident">sent</span> <span class="op">=</span> <span class="ident">coin_selection</span>.<span class="ident">local_selected_amount</span>();
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">complete_transaction</span>(<span class="ident">tx</span>, <span class="ident">coin_selection</span>.<span class="ident">selected</span>, <span class="ident">params</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">let </span>sent = coin_selection.local_selected_amount();
+ <span class="kw">let </span>psbt = <span class="self">self</span>.complete_transaction(tx, coin_selection.selected, params)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">transaction_details</span> <span class="op">=</span> <span class="ident">TransactionDetails</span> {
- <span class="ident">transaction</span>: <span class="prelude-val">None</span>,
- <span class="ident">txid</span>,
- <span class="ident">confirmation_time</span>: <span class="prelude-val">None</span>,
- <span class="ident">received</span>,
- <span class="ident">sent</span>,
- <span class="ident">fee</span>: <span class="prelude-val">Some</span>(<span class="ident">fee_amount</span>),
+ <span class="kw">let </span>transaction_details = TransactionDetails {
+ transaction: <span class="prelude-val">None</span>,
+ txid,
+ confirmation_time: <span class="prelude-val">None</span>,
+ received,
+ sent,
+ fee: <span class="prelude-val">Some</span>(fee_amount),
};
- <span class="prelude-val">Ok</span>((<span class="ident">psbt</span>, <span class="ident">transaction_details</span>))
- }
-
- <span class="doccomment">/// Bump the fee of a transaction previously created with this wallet.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Returns an error if the transaction is already confirmed or doesn't explicitly signal</span>
- <span class="doccomment">/// *replace by fee* (RBF). If the transaction can be fee bumped then it returns a [`TxBuilder`]</span>
- <span class="doccomment">/// pre-populated with the inputs and outputs of the original transaction.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Example</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ```no_run</span>
- <span class="doccomment">/// # // TODO: remove norun -- bumping fee seems to need the tx in the wallet database first.</span>
- <span class="doccomment">/// # use std::str::FromStr;</span>
- <span class="doccomment">/// # use bitcoin::*;</span>
- <span class="doccomment">/// # use bdk::*;</span>
- <span class="doccomment">/// # use bdk::database::*;</span>
- <span class="doccomment">/// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";</span>
- <span class="doccomment">/// # let wallet = doctest_wallet!();</span>
- <span class="doccomment">/// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
- <span class="doccomment">/// let (mut psbt, _) = {</span>
- <span class="doccomment">/// let mut builder = wallet.build_tx();</span>
- <span class="doccomment">/// builder</span>
- <span class="doccomment">/// .add_recipient(to_address.script_pubkey(), 50_000)</span>
- <span class="doccomment">/// .enable_rbf();</span>
- <span class="doccomment">/// builder.finish()?</span>
- <span class="doccomment">/// };</span>
- <span class="doccomment">/// let _ = wallet.sign(&mut psbt, SignOptions::default())?;</span>
- <span class="doccomment">/// let tx = psbt.extract_tx();</span>
- <span class="doccomment">/// // broadcast tx but it's taking too long to confirm so we want to bump the fee</span>
- <span class="doccomment">/// let (mut psbt, _) = {</span>
- <span class="doccomment">/// let mut builder = wallet.build_fee_bump(tx.txid())?;</span>
- <span class="doccomment">/// builder</span>
- <span class="doccomment">/// .fee_rate(FeeRate::from_sat_per_vb(5.0));</span>
- <span class="doccomment">/// builder.finish()?</span>
- <span class="doccomment">/// };</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// let _ = wallet.sign(&mut psbt, SignOptions::default())?;</span>
- <span class="doccomment">/// let fee_bumped_tx = psbt.extract_tx();</span>
- <span class="doccomment">/// // broadcast fee_bumped_tx to replace original</span>
- <span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
- <span class="doccomment">/// ```</span>
- <span class="comment">// TODO: support for merging multiple transactions while bumping the fees</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">build_fee_bump</span>(
+ <span class="prelude-val">Ok</span>((psbt, transaction_details))
+ }
+
+ <span class="doccomment">/// Bump the fee of a transaction previously created with this wallet.
+ ///
+ /// Returns an error if the transaction is already confirmed or doesn't explicitly signal
+ /// *replace by fee* (RBF). If the transaction can be fee bumped then it returns a [`TxBuilder`]
+ /// pre-populated with the inputs and outputs of the original transaction.
+ ///
+ /// ## Example
+ ///
+ /// ```no_run
+ /// # // TODO: remove norun -- bumping fee seems to need the tx in the wallet database first.
+ /// # use std::str::FromStr;
+ /// # use bitcoin::*;
+ /// # use bdk::*;
+ /// # use bdk::database::*;
+ /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
+ /// # let wallet = doctest_wallet!();
+ /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+ /// let (mut psbt, _) = {
+ /// let mut builder = wallet.build_tx();
+ /// builder
+ /// .add_recipient(to_address.script_pubkey(), 50_000)
+ /// .enable_rbf();
+ /// builder.finish()?
+ /// };
+ /// let _ = wallet.sign(&mut psbt, SignOptions::default())?;
+ /// let tx = psbt.extract_tx();
+ /// // broadcast tx but it's taking too long to confirm so we want to bump the fee
+ /// let (mut psbt, _) = {
+ /// let mut builder = wallet.build_fee_bump(tx.txid())?;
+ /// builder
+ /// .fee_rate(FeeRate::from_sat_per_vb(5.0));
+ /// builder.finish()?
+ /// };
+ ///
+ /// let _ = wallet.sign(&mut psbt, SignOptions::default())?;
+ /// let fee_bumped_tx = psbt.extract_tx();
+ /// // broadcast fee_bumped_tx to replace original
+ /// # Ok::<(), bdk::Error>(())
+ /// ```
+ </span><span class="comment">// TODO: support for merging multiple transactions while bumping the fees
+ </span><span class="kw">pub fn </span>build_fee_bump(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">txid</span>: <span class="ident">Txid</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'_</span>, <span class="ident">D</span>, <span class="ident">DefaultCoinSelectionAlgorithm</span>, <span class="ident">BumpFee</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">details</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">txid</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span> {
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::TransactionNotFound</span>),
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">transaction</span>.<span class="ident">is_none</span>() => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::TransactionNotFound</span>),
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">confirmation_time</span>.<span class="ident">is_some</span>() => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::TransactionConfirmed</span>),
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) => <span class="ident">tx</span>,
+ txid: Txid,
+ ) -> <span class="prelude-ty">Result</span><TxBuilder<<span class="lifetime">'_</span>, D, DefaultCoinSelectionAlgorithm, BumpFee>, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>details = <span class="kw">match </span><span class="self">self</span>.database.borrow().get_tx(<span class="kw-2">&</span>txid, <span class="bool-val">true</span>)<span class="question-mark">? </span>{
+ <span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TransactionNotFound),
+ <span class="prelude-val">Some</span>(tx) <span class="kw">if </span>tx.transaction.is_none() => <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TransactionNotFound),
+ <span class="prelude-val">Some</span>(tx) <span class="kw">if </span>tx.confirmation_time.is_some() => <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TransactionConfirmed),
+ <span class="prelude-val">Some</span>(tx) => tx,
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">details</span>.<span class="ident">transaction</span>.<span class="ident">take</span>().<span class="ident">unwrap</span>();
- <span class="kw">if</span> <span class="op">!</span><span class="ident">tx</span>
- .<span class="ident">input</span>
- .<span class="ident">iter</span>()
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">txin</span><span class="op">|</span> <span class="ident">txin</span>.<span class="ident">sequence</span>.<span class="ident">to_consensus_u32</span>() <span class="op"><</span><span class="op">=</span> <span class="number">0xFFFFFFFD</span>)
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = details.transaction.take().unwrap();
+ <span class="kw">if </span>!tx
+ .input
+ .iter()
+ .any(|txin| txin.sequence.to_consensus_u32() <= <span class="number">0xFFFFFFFD</span>)
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::IrreplaceableTransaction</span>);
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IrreplaceableTransaction);
}
- <span class="kw">let</span> <span class="ident">feerate</span> <span class="op">=</span> <span class="ident">FeeRate::from_wu</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">ok_or</span>(<span class="ident">Error::FeeRateUnavailable</span>)<span class="question-mark">?</span>, <span class="ident">tx</span>.<span class="ident">weight</span>());
-
- <span class="comment">// remove the inputs from the tx and process them</span>
- <span class="kw">let</span> <span class="ident">original_txin</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">drain</span>(..).<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">let</span> <span class="ident">original_utxos</span> <span class="op">=</span> <span class="ident">original_txin</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txin</span><span class="op">|</span> -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw">_</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">txout</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_previous_output</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">Error::UnknownUtxo</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> (<span class="ident">weight</span>, <span class="ident">keychain</span>) <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">txout</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
- <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="kw">_</span>)) => (
- <span class="self">self</span>.<span class="ident">_get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="number">0</span>
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>,
+ <span class="kw">let </span>feerate = FeeRate::from_wu(details.fee.ok_or(Error::FeeRateUnavailable)<span class="question-mark">?</span>, tx.weight());
+
+ <span class="comment">// remove the inputs from the tx and process them
+ </span><span class="kw">let </span>original_txin = tx.input.drain(..).collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">let </span>original_utxos = original_txin
+ .iter()
+ .map(|txin| -> <span class="prelude-ty">Result</span><<span class="kw">_</span>, Error> {
+ <span class="kw">let </span>txout = <span class="self">self
+ </span>.database
+ .borrow()
+ .get_previous_output(<span class="kw-2">&</span>txin.previous_output)<span class="question-mark">?
+ </span>.ok_or(Error::UnknownUtxo)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>(weight, keychain) = <span class="kw">match </span><span class="self">self
+ </span>.database
+ .borrow()
+ .get_path_from_script_pubkey(<span class="kw-2">&</span>txout.script_pubkey)<span class="question-mark">?
+ </span>{
+ <span class="prelude-val">Some</span>((keychain, <span class="kw">_</span>)) => (
+ <span class="self">self</span>._get_descriptor_for_keychain(keychain)
+ .<span class="number">0
+ </span>.max_satisfaction_weight()
+ .unwrap(),
+ keychain,
),
- <span class="prelude-val">None</span> => {
- <span class="comment">// estimate the weight based on the scriptsig/witness size present in the</span>
- <span class="comment">// original transaction</span>
- <span class="kw">let</span> <span class="ident">weight</span> <span class="op">=</span>
- <span class="ident">serialize</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">script_sig</span>).<span class="ident">len</span>() <span class="op">*</span> <span class="number">4</span> <span class="op">+</span> <span class="ident">serialize</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">witness</span>).<span class="ident">len</span>();
- (<span class="ident">weight</span>, <span class="ident">KeychainKind::External</span>)
+ <span class="prelude-val">None </span>=> {
+ <span class="comment">// estimate the weight based on the scriptsig/witness size present in the
+ // original transaction
+ </span><span class="kw">let </span>weight =
+ serialize(<span class="kw-2">&</span>txin.script_sig).len() * <span class="number">4 </span>+ serialize(<span class="kw-2">&</span>txin.witness).len();
+ (weight, KeychainKind::External)
}
};
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">txin</span>.<span class="ident">previous_output</span>,
- <span class="ident">txout</span>,
- <span class="ident">keychain</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">true</span>,
+ <span class="kw">let </span>utxo = LocalUtxo {
+ outpoint: txin.previous_output,
+ txout,
+ keychain,
+ is_spent: <span class="bool-val">true</span>,
};
- <span class="prelude-val">Ok</span>(<span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>: <span class="ident">weight</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Local</span>(<span class="ident">utxo</span>),
+ <span class="prelude-val">Ok</span>(WeightedUtxo {
+ satisfaction_weight: weight,
+ utxo: Utxo::Local(utxo),
})
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>() <span class="op">></span> <span class="number">1</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">change_index</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">txout</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">change_type</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">_get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::Internal</span>);
- <span class="kw">match</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">txout</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
- <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="kw">_</span>)) <span class="kw">if</span> <span class="ident">keychain</span> <span class="op">==</span> <span class="ident">change_type</span> => <span class="ident">change_index</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">index</span>),
- <span class="kw">_</span> => {}
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+
+ <span class="kw">if </span>tx.output.len() > <span class="number">1 </span>{
+ <span class="kw">let </span><span class="kw-2">mut </span>change_index = <span class="prelude-val">None</span>;
+ <span class="kw">for </span>(index, txout) <span class="kw">in </span>tx.output.iter().enumerate() {
+ <span class="kw">let </span>(<span class="kw">_</span>, change_type) = <span class="self">self</span>._get_descriptor_for_keychain(KeychainKind::Internal);
+ <span class="kw">match </span><span class="self">self
+ </span>.database
+ .borrow()
+ .get_path_from_script_pubkey(<span class="kw-2">&</span>txout.script_pubkey)<span class="question-mark">?
+ </span>{
+ <span class="prelude-val">Some</span>((keychain, <span class="kw">_</span>)) <span class="kw">if </span>keychain == change_type => change_index = <span class="prelude-val">Some</span>(index),
+ <span class="kw">_ </span>=> {}
}
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">change_index</span>) <span class="op">=</span> <span class="ident">change_index</span> {
- <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">remove</span>(<span class="ident">change_index</span>);
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(change_index) = change_index {
+ tx.output.remove(change_index);
}
}
- <span class="kw">let</span> <span class="ident">params</span> <span class="op">=</span> <span class="ident">TxParams</span> {
- <span class="comment">// TODO: figure out what rbf option should be?</span>
- <span class="ident">version</span>: <span class="prelude-val">Some</span>(<span class="ident">tx_builder::Version</span>(<span class="ident">tx</span>.<span class="ident">version</span>)),
- <span class="ident">recipients</span>: <span class="ident">tx</span>
- .<span class="ident">output</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> (<span class="ident">txout</span>.<span class="ident">script_pubkey</span>, <span class="ident">txout</span>.<span class="ident">value</span>))
- .<span class="ident">collect</span>(),
- <span class="ident">utxos</span>: <span class="ident">original_utxos</span>,
- <span class="ident">bumping_fee</span>: <span class="prelude-val">Some</span>(<span class="ident">tx_builder::PreviousFee</span> {
- <span class="ident">absolute</span>: <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">ok_or</span>(<span class="ident">Error::FeeRateUnavailable</span>)<span class="question-mark">?</span>,
- <span class="ident">rate</span>: <span class="ident">feerate</span>.<span class="ident">as_sat_per_vb</span>(),
+ <span class="kw">let </span>params = TxParams {
+ <span class="comment">// TODO: figure out what rbf option should be?
+ </span>version: <span class="prelude-val">Some</span>(tx_builder::Version(tx.version)),
+ recipients: tx
+ .output
+ .into_iter()
+ .map(|txout| (txout.script_pubkey, txout.value))
+ .collect(),
+ utxos: original_utxos,
+ bumping_fee: <span class="prelude-val">Some</span>(tx_builder::PreviousFee {
+ absolute: details.fee.ok_or(Error::FeeRateUnavailable)<span class="question-mark">?</span>,
+ rate: feerate.as_sat_per_vb(),
}),
- ..<span class="ident">Default::default</span>()
+ ..Default::default()
};
- <span class="prelude-val">Ok</span>(<span class="ident">TxBuilder</span> {
- <span class="ident">wallet</span>: <span class="self">self</span>,
- <span class="ident">params</span>,
- <span class="ident">coin_selection</span>: <span class="ident">DefaultCoinSelectionAlgorithm::default</span>(),
- <span class="ident">phantom</span>: <span class="ident">core::marker::PhantomData</span>,
+ <span class="prelude-val">Ok</span>(TxBuilder {
+ wallet: <span class="self">self</span>,
+ params,
+ coin_selection: DefaultCoinSelectionAlgorithm::default(),
+ phantom: core::marker::PhantomData,
})
}
- <span class="doccomment">/// Sign a transaction with all the wallet's signers, in the order specified by every signer's</span>
- <span class="doccomment">/// [`SignerOrdering`]</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The [`SignOptions`] can be used to tweak the behavior of the software signers, and the way</span>
- <span class="doccomment">/// the transaction is finalized at the end. Note that it can't be guaranteed that *every*</span>
- <span class="doccomment">/// signers will follow the options, but the "software signers" (WIF keys and `xprv`) defined</span>
- <span class="doccomment">/// in this library will.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Example</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">/// # use std::str::FromStr;</span>
- <span class="doccomment">/// # use bitcoin::*;</span>
- <span class="doccomment">/// # use bdk::*;</span>
- <span class="doccomment">/// # use bdk::database::*;</span>
- <span class="doccomment">/// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";</span>
- <span class="doccomment">/// # let wallet = doctest_wallet!();</span>
- <span class="doccomment">/// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
- <span class="doccomment">/// let (mut psbt, _) = {</span>
- <span class="doccomment">/// let mut builder = wallet.build_tx();</span>
- <span class="doccomment">/// builder.add_recipient(to_address.script_pubkey(), 50_000);</span>
- <span class="doccomment">/// builder.finish()?</span>
- <span class="doccomment">/// };</span>
- <span class="doccomment">/// let finalized = wallet.sign(&mut psbt, SignOptions::default())?;</span>
- <span class="doccomment">/// assert!(finalized, "we should have signed all the inputs");</span>
- <span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">sign</span>(
+ <span class="doccomment">/// Sign a transaction with all the wallet's signers, in the order specified by every signer's
+ /// [`SignerOrdering`]
+ ///
+ /// The [`SignOptions`] can be used to tweak the behavior of the software signers, and the way
+ /// the transaction is finalized at the end. Note that it can't be guaranteed that *every*
+ /// signers will follow the options, but the "software signers" (WIF keys and `xprv`) defined
+ /// in this library will.
+ ///
+ /// ## Example
+ ///
+ /// ```
+ /// # use std::str::FromStr;
+ /// # use bitcoin::*;
+ /// # use bdk::*;
+ /// # use bdk::database::*;
+ /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
+ /// # let wallet = doctest_wallet!();
+ /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+ /// let (mut psbt, _) = {
+ /// let mut builder = wallet.build_tx();
+ /// builder.add_recipient(to_address.script_pubkey(), 50_000);
+ /// builder.finish()?
+ /// };
+ /// let finalized = wallet.sign(&mut psbt, SignOptions::default())?;
+ /// assert!(finalized, "we should have signed all the inputs");
+ /// # Ok::<(), bdk::Error>(())
+ </span><span class="kw">pub fn </span>sign(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">sign_options</span>: <span class="ident">SignOptions</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// This adds all the PSBT metadata for the inputs, which will help us later figure out how</span>
- <span class="comment">// to derive our keys</span>
- <span class="self">self</span>.<span class="ident">update_psbt_with_descriptor</span>(<span class="ident">psbt</span>)<span class="question-mark">?</span>;
-
- <span class="comment">// If we aren't allowed to use `witness_utxo`, ensure that every input (except p2tr and finalized ones)</span>
- <span class="comment">// has the `non_witness_utxo`</span>
- <span class="kw">if</span> <span class="op">!</span><span class="ident">sign_options</span>.<span class="ident">trust_witness_utxo</span>
- <span class="op">&&</span> <span class="ident">psbt</span>
- .<span class="ident">inputs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">final_script_witness</span>.<span class="ident">is_none</span>() <span class="op">&&</span> <span class="ident">i</span>.<span class="ident">final_script_sig</span>.<span class="ident">is_none</span>())
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">tap_internal_key</span>.<span class="ident">is_none</span>() <span class="op">&&</span> <span class="ident">i</span>.<span class="ident">tap_merkle_root</span>.<span class="ident">is_none</span>())
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">non_witness_utxo</span>.<span class="ident">is_none</span>())
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ sign_options: SignOptions,
+ ) -> <span class="prelude-ty">Result</span><bool, Error> {
+ <span class="comment">// This adds all the PSBT metadata for the inputs, which will help us later figure out how
+ // to derive our keys
+ </span><span class="self">self</span>.update_psbt_with_descriptor(psbt)<span class="question-mark">?</span>;
+
+ <span class="comment">// If we aren't allowed to use `witness_utxo`, ensure that every input (except p2tr and finalized ones)
+ // has the `non_witness_utxo`
+ </span><span class="kw">if </span>!sign_options.trust_witness_utxo
+ && psbt
+ .inputs
+ .iter()
+ .filter(|i| i.final_script_witness.is_none() && i.final_script_sig.is_none())
+ .filter(|i| i.tap_internal_key.is_none() && i.tap_merkle_root.is_none())
+ .any(|i| i.non_witness_utxo.is_none())
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Signer</span>(<span class="ident">signer::SignerError::MissingNonWitnessUtxo</span>));
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Signer(signer::SignerError::MissingNonWitnessUtxo));
}
- <span class="comment">// If the user hasn't explicitly opted-in, refuse to sign the transaction unless every input</span>
- <span class="comment">// is using `SIGHASH_ALL` or `SIGHASH_DEFAULT` for taproot</span>
- <span class="kw">if</span> <span class="op">!</span><span class="ident">sign_options</span>.<span class="ident">allow_all_sighashes</span>
- <span class="op">&&</span> <span class="op">!</span><span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">all</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> {
- <span class="ident">i</span>.<span class="ident">sighash_type</span>.<span class="ident">is_none</span>()
- <span class="op">|</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">sighash_type</span> <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">EcdsaSighashType::All</span>.<span class="ident">into</span>())
- <span class="op">|</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">sighash_type</span> <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">SchnorrSighashType::All</span>.<span class="ident">into</span>())
- <span class="op">|</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">sighash_type</span> <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">SchnorrSighashType::Default</span>.<span class="ident">into</span>())
+ <span class="comment">// If the user hasn't explicitly opted-in, refuse to sign the transaction unless every input
+ // is using `SIGHASH_ALL` or `SIGHASH_DEFAULT` for taproot
+ </span><span class="kw">if </span>!sign_options.allow_all_sighashes
+ && !psbt.inputs.iter().all(|i| {
+ i.sighash_type.is_none()
+ || i.sighash_type == <span class="prelude-val">Some</span>(EcdsaSighashType::All.into())
+ || i.sighash_type == <span class="prelude-val">Some</span>(SchnorrSighashType::All.into())
+ || i.sighash_type == <span class="prelude-val">Some</span>(SchnorrSighashType::Default.into())
})
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Signer</span>(<span class="ident">signer::SignerError::NonStandardSighash</span>));
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Signer(signer::SignerError::NonStandardSighash));
}
- <span class="kw">for</span> <span class="ident">signer</span> <span class="kw">in</span> <span class="self">self</span>
- .<span class="ident">signers</span>
- .<span class="ident">signers</span>()
- .<span class="ident">iter</span>()
- .<span class="ident">chain</span>(<span class="self">self</span>.<span class="ident">change_signers</span>.<span class="ident">signers</span>().<span class="ident">iter</span>())
+ <span class="kw">for </span>signer <span class="kw">in </span><span class="self">self
+ </span>.signers
+ .signers()
+ .iter()
+ .chain(<span class="self">self</span>.change_signers.signers().iter())
{
- <span class="ident">signer</span>.<span class="ident">sign_transaction</span>(<span class="ident">psbt</span>, <span class="kw-2">&</span><span class="ident">sign_options</span>, <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>)<span class="question-mark">?</span>;
+ signer.sign_transaction(psbt, <span class="kw-2">&</span>sign_options, <span class="kw-2">&</span><span class="self">self</span>.secp)<span class="question-mark">?</span>;
}
- <span class="comment">// attempt to finalize</span>
- <span class="kw">if</span> <span class="ident">sign_options</span>.<span class="ident">try_finalize</span> {
- <span class="self">self</span>.<span class="ident">finalize_psbt</span>(<span class="ident">psbt</span>, <span class="ident">sign_options</span>)
- } <span class="kw">else</span> {
+ <span class="comment">// attempt to finalize
+ </span><span class="kw">if </span>sign_options.try_finalize {
+ <span class="self">self</span>.finalize_psbt(psbt, sign_options)
+ } <span class="kw">else </span>{
<span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
}
}
- <span class="doccomment">/// Return the spending policies for the wallet's descriptor</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">policies</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Policy</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> (<span class="ident">keychain</span>, <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">as_ref</span>()) {
- (<span class="ident">KeychainKind::External</span>, <span class="kw">_</span>) => <span class="prelude-val">Ok</span>(<span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">extract_policy</span>(
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">signers</span>,
- <span class="ident">BuildSatisfaction::None</span>,
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>,
+ <span class="doccomment">/// Return the spending policies for the wallet's descriptor
+ </span><span class="kw">pub fn </span>policies(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Policy>, Error> {
+ <span class="kw">match </span>(keychain, <span class="self">self</span>.change_descriptor.as_ref()) {
+ (KeychainKind::External, <span class="kw">_</span>) => <span class="prelude-val">Ok</span>(<span class="self">self</span>.descriptor.extract_policy(
+ <span class="kw-2">&</span><span class="self">self</span>.signers,
+ BuildSatisfaction::None,
+ <span class="kw-2">&</span><span class="self">self</span>.secp,
)<span class="question-mark">?</span>),
- (<span class="ident">KeychainKind::Internal</span>, <span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- (<span class="ident">KeychainKind::Internal</span>, <span class="prelude-val">Some</span>(<span class="ident">desc</span>)) => <span class="prelude-val">Ok</span>(<span class="ident">desc</span>.<span class="ident">extract_policy</span>(
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">change_signers</span>,
- <span class="ident">BuildSatisfaction::None</span>,
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>,
+ (KeychainKind::Internal, <span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ (KeychainKind::Internal, <span class="prelude-val">Some</span>(desc)) => <span class="prelude-val">Ok</span>(desc.extract_policy(
+ <span class="kw-2">&</span><span class="self">self</span>.change_signers,
+ BuildSatisfaction::None,
+ <span class="kw-2">&</span><span class="self">self</span>.secp,
)<span class="question-mark">?</span>),
}
}
- <span class="doccomment">/// Return the "public" version of the wallet's descriptor, meaning a new descriptor that has</span>
- <span class="doccomment">/// the same structure but with every secret key removed</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This can be used to build a watch-only version of a wallet</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">public_descriptor</span>(
+ <span class="doccomment">/// Return the "public" version of the wallet's descriptor, meaning a new descriptor that has
+ /// the same structure but with every secret key removed
+ ///
+ /// This can be used to build a watch-only version of a wallet
+ </span><span class="kw">pub fn </span>public_descriptor(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">ExtendedDescriptor</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> (<span class="ident">keychain</span>, <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">as_ref</span>()) {
- (<span class="ident">KeychainKind::External</span>, <span class="kw">_</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">clone</span>())),
- (<span class="ident">KeychainKind::Internal</span>, <span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
- (<span class="ident">KeychainKind::Internal</span>, <span class="prelude-val">Some</span>(<span class="ident">desc</span>)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">desc</span>.<span class="ident">clone</span>())),
+ keychain: KeychainKind,
+ ) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><ExtendedDescriptor>, Error> {
+ <span class="kw">match </span>(keychain, <span class="self">self</span>.change_descriptor.as_ref()) {
+ (KeychainKind::External, <span class="kw">_</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="self">self</span>.descriptor.clone())),
+ (KeychainKind::Internal, <span class="prelude-val">None</span>) => <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+ (KeychainKind::Internal, <span class="prelude-val">Some</span>(desc)) => <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(desc.clone())),
}
}
- <span class="doccomment">/// Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass</span>
- <span class="doccomment">/// validation and construct the respective `scriptSig` or `scriptWitness`. Please refer to</span>
- <span class="doccomment">/// [BIP174](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#Input_Finalizer)</span>
- <span class="doccomment">/// for further information.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Returns `true` if the PSBT could be finalized, and `false` otherwise.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The [`SignOptions`] can be used to tweak the behavior of the finalizer.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">finalize_psbt</span>(
+ <span class="doccomment">/// Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass
+ /// validation and construct the respective `scriptSig` or `scriptWitness`. Please refer to
+ /// [BIP174](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#Input_Finalizer)
+ /// for further information.
+ ///
+ /// Returns `true` if the PSBT could be finalized, and `false` otherwise.
+ ///
+ /// The [`SignOptions`] can be used to tweak the behavior of the finalizer.
+ </span><span class="kw">pub fn </span>finalize_psbt(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">sign_options</span>: <span class="ident">SignOptions</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">bool</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">finished</span> <span class="op">=</span> <span class="bool-val">true</span>;
-
- <span class="kw">for</span> (<span class="ident">n</span>, <span class="ident">input</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>
- .<span class="ident">inputs</span>
- .<span class="ident">get</span>(<span class="ident">n</span>)
- .<span class="ident">ok_or</span>(<span class="ident">Error::Signer</span>(<span class="ident">SignerError::InputIndexOutOfRange</span>))<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="ident">psbt_input</span>.<span class="ident">final_script_sig</span>.<span class="ident">is_some</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">psbt_input</span>.<span class="ident">final_script_witness</span>.<span class="ident">is_some</span>() {
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ sign_options: SignOptions,
+ ) -> <span class="prelude-ty">Result</span><bool, Error> {
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="kw">let </span><span class="kw-2">mut </span>finished = <span class="bool-val">true</span>;
+
+ <span class="kw">for </span>(n, input) <span class="kw">in </span>tx.input.iter().enumerate() {
+ <span class="kw">let </span>psbt_input = <span class="kw-2">&</span>psbt
+ .inputs
+ .get(n)
+ .ok_or(Error::Signer(SignerError::InputIndexOutOfRange))<span class="question-mark">?</span>;
+ <span class="kw">if </span>psbt_input.final_script_sig.is_some() || psbt_input.final_script_witness.is_some() {
<span class="kw">continue</span>;
}
- <span class="comment">// if the height is None in the database it means it's still unconfirmed, so consider</span>
- <span class="comment">// that as a very high value</span>
- <span class="kw">let</span> <span class="ident">create_height</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="ident">tx</span>.<span class="ident">confirmation_time</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">c</span><span class="op">|</span> <span class="ident">c</span>.<span class="ident">height</span>).<span class="ident">unwrap_or</span>(<span class="ident">u32::MAX</span>));
- <span class="kw">let</span> <span class="ident">last_sync_height</span> <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">database</span>()
- .<span class="ident">get_sync_time</span>()<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">sync_time</span><span class="op">|</span> <span class="ident">sync_time</span>.<span class="ident">block_time</span>.<span class="ident">height</span>);
- <span class="kw">let</span> <span class="ident">current_height</span> <span class="op">=</span> <span class="ident">sign_options</span>.<span class="ident">assume_height</span>.<span class="ident">or</span>(<span class="ident">last_sync_height</span>);
+ <span class="comment">// if the height is None in the database it means it's still unconfirmed, so consider
+ // that as a very high value
+ </span><span class="kw">let </span>create_height = <span class="self">self
+ </span>.database
+ .borrow()
+ .get_tx(<span class="kw-2">&</span>input.previous_output.txid, <span class="bool-val">false</span>)<span class="question-mark">?
+ </span>.map(|tx| tx.confirmation_time.map(|c| c.height).unwrap_or(u32::MAX));
+ <span class="kw">let </span>last_sync_height = <span class="self">self
+ </span>.database()
+ .get_sync_time()<span class="question-mark">?
+ </span>.map(|sync_time| sync_time.block_time.height);
+ <span class="kw">let </span>current_height = sign_options.assume_height.or(last_sync_height);
<span class="macro">debug!</span>(
<span class="string">"Input #{} - {}, using `create_height` = {:?}, `current_height` = {:?}"</span>,
- <span class="ident">n</span>, <span class="ident">input</span>.<span class="ident">previous_output</span>, <span class="ident">create_height</span>, <span class="ident">current_height</span>
+ n, input.previous_output, create_height, current_height
);
- <span class="comment">// - Try to derive the descriptor by looking at the txout. If it's in our database, we</span>
- <span class="comment">// know exactly which `keychain` to use, and which derivation index it is</span>
- <span class="comment">// - If that fails, try to derive it by looking at the psbt input: the complete logic</span>
- <span class="comment">// is in `src/descriptor/mod.rs`, but it will basically look at `bip32_derivation`,</span>
- <span class="comment">// `redeem_script` and `witness_script` to determine the right derivation</span>
- <span class="comment">// - If that also fails, it will try it on the internal descriptor, if present</span>
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="ident">psbt</span>
- .<span class="ident">get_utxo_for</span>(<span class="ident">n</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">get_descriptor_for_txout</span>(<span class="kw-2">&</span><span class="ident">txout</span>))
- .<span class="ident">transpose</span>()<span class="question-mark">?</span>
- .<span class="ident">flatten</span>()
- .<span class="ident">or_else</span>(<span class="op">|</span><span class="op">|</span> {
- <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">derive_from_psbt_input</span>(
- <span class="ident">psbt_input</span>,
- <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="ident">n</span>),
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>,
+ <span class="comment">// - Try to derive the descriptor by looking at the txout. If it's in our database, we
+ // know exactly which `keychain` to use, and which derivation index it is
+ // - If that fails, try to derive it by looking at the psbt input: the complete logic
+ // is in `src/descriptor/mod.rs`, but it will basically look at `bip32_derivation`,
+ // `redeem_script` and `witness_script` to determine the right derivation
+ // - If that also fails, it will try it on the internal descriptor, if present
+ </span><span class="kw">let </span>desc = psbt
+ .get_utxo_for(n)
+ .map(|txout| <span class="self">self</span>.get_descriptor_for_txout(<span class="kw-2">&</span>txout))
+ .transpose()<span class="question-mark">?
+ </span>.flatten()
+ .or_else(|| {
+ <span class="self">self</span>.descriptor.derive_from_psbt_input(
+ psbt_input,
+ psbt.get_utxo_for(n),
+ <span class="kw-2">&</span><span class="self">self</span>.secp,
)
})
- .<span class="ident">or_else</span>(<span class="op">|</span><span class="op">|</span> {
- <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">as_ref</span>().<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">desc</span><span class="op">|</span> {
- <span class="ident">desc</span>.<span class="ident">derive_from_psbt_input</span>(<span class="ident">psbt_input</span>, <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="ident">n</span>), <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>)
+ .or_else(|| {
+ <span class="self">self</span>.change_descriptor.as_ref().and_then(|desc| {
+ desc.derive_from_psbt_input(psbt_input, psbt.get_utxo_for(n), <span class="kw-2">&</span><span class="self">self</span>.secp)
})
});
- <span class="kw">match</span> <span class="ident">desc</span> {
- <span class="prelude-val">Some</span>(<span class="ident">desc</span>) => {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tmp_input</span> <span class="op">=</span> <span class="ident">bitcoin::TxIn::default</span>();
- <span class="kw">match</span> <span class="ident">desc</span>.<span class="ident">satisfy</span>(
- <span class="kw-2">&mut</span> <span class="ident">tmp_input</span>,
+ <span class="kw">match </span>desc {
+ <span class="prelude-val">Some</span>(desc) => {
+ <span class="kw">let </span><span class="kw-2">mut </span>tmp_input = bitcoin::TxIn::default();
+ <span class="kw">match </span>desc.satisfy(
+ <span class="kw-2">&mut </span>tmp_input,
(
- <span class="ident">PsbtInputSatisfier::new</span>(<span class="ident">psbt</span>, <span class="ident">n</span>),
- <span class="ident">After::new</span>(<span class="ident">current_height</span>, <span class="bool-val">false</span>),
- <span class="ident">Older::new</span>(<span class="ident">current_height</span>, <span class="ident">create_height</span>, <span class="bool-val">false</span>),
+ PsbtInputSatisfier::new(psbt, n),
+ After::new(current_height, <span class="bool-val">false</span>),
+ Older::new(current_height, create_height, <span class="bool-val">false</span>),
),
) {
<span class="prelude-val">Ok</span>(<span class="kw">_</span>) => {
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="kw-2">&mut</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">n</span>];
- <span class="ident">psbt_input</span>.<span class="ident">final_script_sig</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tmp_input</span>.<span class="ident">script_sig</span>);
- <span class="ident">psbt_input</span>.<span class="ident">final_script_witness</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tmp_input</span>.<span class="ident">witness</span>);
- <span class="kw">if</span> <span class="ident">sign_options</span>.<span class="ident">remove_partial_sigs</span> {
- <span class="ident">psbt_input</span>.<span class="ident">partial_sigs</span>.<span class="ident">clear</span>();
+ <span class="kw">let </span>psbt_input = <span class="kw-2">&mut </span>psbt.inputs[n];
+ psbt_input.final_script_sig = <span class="prelude-val">Some</span>(tmp_input.script_sig);
+ psbt_input.final_script_witness = <span class="prelude-val">Some</span>(tmp_input.witness);
+ <span class="kw">if </span>sign_options.remove_partial_sigs {
+ psbt_input.partial_sigs.clear();
}
}
- <span class="prelude-val">Err</span>(<span class="ident">e</span>) => {
- <span class="macro">debug!</span>(<span class="string">"satisfy error {:?} for input {}"</span>, <span class="ident">e</span>, <span class="ident">n</span>);
- <span class="ident">finished</span> <span class="op">=</span> <span class="bool-val">false</span>
- }
+ <span class="prelude-val">Err</span>(e) => {
+ <span class="macro">debug!</span>(<span class="string">"satisfy error {:?} for input {}"</span>, e, n);
+ finished = <span class="bool-val">false
+ </span>}
}
}
- <span class="prelude-val">None</span> => <span class="ident">finished</span> <span class="op">=</span> <span class="bool-val">false</span>,
+ <span class="prelude-val">None </span>=> finished = <span class="bool-val">false</span>,
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">finished</span>)
+ <span class="prelude-val">Ok</span>(finished)
}
- <span class="doccomment">/// Return the secp256k1 context used for all signing operations</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">secp_ctx</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident">SecpCtx</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>
+ <span class="doccomment">/// Return the secp256k1 context used for all signing operations
+ </span><span class="kw">pub fn </span>secp_ctx(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span>SecpCtx {
+ <span class="kw-2">&</span><span class="self">self</span>.secp
}
- <span class="doccomment">/// Returns the descriptor used to create addresses for a particular `keychain`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_descriptor_for_keychain</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="kw-2">&</span><span class="ident">ExtendedDescriptor</span> {
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">_get_descriptor_for_keychain</span>(<span class="ident">keychain</span>);
- <span class="ident">descriptor</span>
+ <span class="doccomment">/// Returns the descriptor used to create addresses for a particular `keychain`.
+ </span><span class="kw">pub fn </span>get_descriptor_for_keychain(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="kw-2">&</span>ExtendedDescriptor {
+ <span class="kw">let </span>(descriptor, <span class="kw">_</span>) = <span class="self">self</span>._get_descriptor_for_keychain(keychain);
+ descriptor
}
- <span class="comment">// Internals</span>
+ <span class="comment">// Internals
- <span class="kw">fn</span> <span class="ident">_get_descriptor_for_keychain</span>(
+ </span><span class="kw">fn </span>_get_descriptor_for_keychain(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- ) -> (<span class="kw-2">&</span><span class="ident">ExtendedDescriptor</span>, <span class="ident">KeychainKind</span>) {
- <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="ident">KeychainKind::Internal</span> <span class="kw">if</span> <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">is_some</span>() => (
- <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>(),
- <span class="ident">KeychainKind::Internal</span>,
+ keychain: KeychainKind,
+ ) -> (<span class="kw-2">&</span>ExtendedDescriptor, KeychainKind) {
+ <span class="kw">match </span>keychain {
+ KeychainKind::Internal <span class="kw">if </span><span class="self">self</span>.change_descriptor.is_some() => (
+ <span class="self">self</span>.change_descriptor.as_ref().unwrap(),
+ KeychainKind::Internal,
),
- <span class="kw">_</span> => (<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">descriptor</span>, <span class="ident">KeychainKind::External</span>),
+ <span class="kw">_ </span>=> (<span class="kw-2">&</span><span class="self">self</span>.descriptor, KeychainKind::External),
}
}
- <span class="kw">fn</span> <span class="ident">get_descriptor_for_txout</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">txout</span>: <span class="kw-2">&</span><span class="ident">TxOut</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DerivedDescriptor</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">txout</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">keychain</span>, <span class="ident">child</span>)<span class="op">|</span> (<span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>), <span class="ident">child</span>))
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">desc</span>, <span class="ident">child</span>)<span class="op">|</span> <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="ident">child</span>)))
+ <span class="kw">fn </span>get_descriptor_for_txout(<span class="kw-2">&</span><span class="self">self</span>, txout: <span class="kw-2">&</span>TxOut) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><DerivedDescriptor>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.database
+ .borrow()
+ .get_path_from_script_pubkey(<span class="kw-2">&</span>txout.script_pubkey)<span class="question-mark">?
+ </span>.map(|(keychain, child)| (<span class="self">self</span>.get_descriptor_for_keychain(keychain), child))
+ .map(|(desc, child)| desc.at_derivation_index(child)))
}
- <span class="kw">fn</span> <span class="ident">fetch_and_increment_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">keychain</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">_get_descriptor_for_keychain</span>(<span class="ident">keychain</span>);
- <span class="kw">let</span> <span class="ident">index</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">descriptor</span>.<span class="ident">has_wildcard</span>() {
- <span class="bool-val">false</span> => <span class="number">0</span>,
- <span class="bool-val">true</span> => <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">increment_last_index</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span>,
+ <span class="kw">fn </span>fetch_and_increment_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="kw">let </span>(descriptor, keychain) = <span class="self">self</span>._get_descriptor_for_keychain(keychain);
+ <span class="kw">let </span>index = <span class="kw">match </span>descriptor.has_wildcard() {
+ <span class="bool-val">false </span>=> <span class="number">0</span>,
+ <span class="bool-val">true </span>=> <span class="self">self</span>.database.borrow_mut().increment_last_index(keychain)<span class="question-mark">?</span>,
};
- <span class="kw">if</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">keychain</span>, <span class="ident">index</span>)<span class="question-mark">?</span>
- .<span class="ident">is_none</span>()
+ <span class="kw">if </span><span class="self">self
+ </span>.database
+ .borrow()
+ .get_script_pubkey_from_path(keychain, index)<span class="question-mark">?
+ </span>.is_none()
{
- <span class="self">self</span>.<span class="ident">cache_addresses</span>(<span class="ident">keychain</span>, <span class="ident">index</span>, <span class="ident">CACHE_ADDR_BATCH_SIZE</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.cache_addresses(keychain, index, CACHE_ADDR_BATCH_SIZE)<span class="question-mark">?</span>;
}
- <span class="prelude-val">Ok</span>(<span class="ident">index</span>)
+ <span class="prelude-val">Ok</span>(index)
}
- <span class="kw">fn</span> <span class="ident">fetch_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">u32</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">keychain</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">_get_descriptor_for_keychain</span>(<span class="ident">keychain</span>);
- <span class="kw">let</span> <span class="ident">index</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">descriptor</span>.<span class="ident">has_wildcard</span>() {
- <span class="bool-val">false</span> => <span class="prelude-val">Some</span>(<span class="number">0</span>),
- <span class="bool-val">true</span> => <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">get_last_index</span>(<span class="ident">keychain</span>)<span class="question-mark">?</span>,
+ <span class="kw">fn </span>fetch_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> <span class="prelude-ty">Result</span><u32, Error> {
+ <span class="kw">let </span>(descriptor, keychain) = <span class="self">self</span>._get_descriptor_for_keychain(keychain);
+ <span class="kw">let </span>index = <span class="kw">match </span>descriptor.has_wildcard() {
+ <span class="bool-val">false </span>=> <span class="prelude-val">Some</span>(<span class="number">0</span>),
+ <span class="bool-val">true </span>=> <span class="self">self</span>.database.borrow_mut().get_last_index(keychain)<span class="question-mark">?</span>,
};
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">i</span>) <span class="op">=</span> <span class="ident">index</span> {
- <span class="prelude-val">Ok</span>(<span class="ident">i</span>)
- } <span class="kw">else</span> {
- <span class="self">self</span>.<span class="ident">fetch_and_increment_index</span>(<span class="ident">keychain</span>)
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(i) = index {
+ <span class="prelude-val">Ok</span>(i)
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.fetch_and_increment_index(keychain)
}
}
- <span class="kw">fn</span> <span class="ident">set_index</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>, <span class="ident">index</span>: <span class="ident">u32</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_last_index</span>(<span class="ident">keychain</span>, <span class="ident">index</span>)<span class="question-mark">?</span>;
+ <span class="kw">fn </span>set_index(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind, index: u32) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="self">self</span>.database.borrow_mut().set_last_index(keychain, index)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">cache_addresses</span>(
+ <span class="kw">fn </span>cache_addresses(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- <span class="ident">from</span>: <span class="ident">u32</span>,
- <span class="kw-2">mut</span> <span class="ident">count</span>: <span class="ident">u32</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> (<span class="ident">descriptor</span>, <span class="ident">keychain</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">_get_descriptor_for_keychain</span>(<span class="ident">keychain</span>);
- <span class="kw">if</span> <span class="op">!</span><span class="ident">descriptor</span>.<span class="ident">has_wildcard</span>() {
- <span class="kw">if</span> <span class="ident">from</span> <span class="op">></span> <span class="number">0</span> {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ keychain: KeychainKind,
+ from: u32,
+ <span class="kw-2">mut </span>count: u32,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="kw">let </span>(descriptor, keychain) = <span class="self">self</span>._get_descriptor_for_keychain(keychain);
+ <span class="kw">if </span>!descriptor.has_wildcard() {
+ <span class="kw">if </span>from > <span class="number">0 </span>{
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="ident">count</span> <span class="op">=</span> <span class="number">1</span>;
+ count = <span class="number">1</span>;
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">address_batch</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">begin_batch</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>address_batch = <span class="self">self</span>.database.borrow().begin_batch();
- <span class="kw">let</span> <span class="ident">start_time</span> <span class="op">=</span> <span class="ident">time::Instant::new</span>();
- <span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="ident">from</span>..(<span class="ident">from</span> <span class="op">+</span> <span class="ident">count</span>) {
- <span class="ident">address_batch</span>.<span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&</span><span class="ident">descriptor</span>.<span class="ident">at_derivation_index</span>(<span class="ident">i</span>).<span class="ident">script_pubkey</span>(),
- <span class="ident">keychain</span>,
- <span class="ident">i</span>,
+ <span class="kw">let </span>start_time = time::Instant::new();
+ <span class="kw">for </span>i <span class="kw">in </span>from..(from + count) {
+ address_batch.set_script_pubkey(
+ <span class="kw-2">&</span>descriptor.at_derivation_index(i).script_pubkey(),
+ keychain,
+ i,
)<span class="question-mark">?</span>;
}
<span class="macro">info!</span>(
<span class="string">"Derivation of {} addresses from {} took {} ms"</span>,
- <span class="ident">count</span>,
- <span class="ident">from</span>,
- <span class="ident">start_time</span>.<span class="ident">elapsed</span>().<span class="ident">as_millis</span>()
+ count,
+ from,
+ start_time.elapsed().as_millis()
);
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">commit_batch</span>(<span class="ident">address_batch</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.database.borrow_mut().commit_batch(address_batch)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="kw">fn</span> <span class="ident">get_available_utxos</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span>(<span class="ident">LocalUtxo</span>, <span class="ident">usize</span>)<span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="prelude-val">Ok</span>(<span class="self">self</span>
- .<span class="ident">list_unspent</span>()<span class="question-mark">?</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">keychain</span> <span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">keychain</span>;
+ <span class="kw">fn </span>get_available_utxos(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Vec<(LocalUtxo, usize)>, Error> {
+ <span class="prelude-val">Ok</span>(<span class="self">self
+ </span>.list_unspent()<span class="question-mark">?
+ </span>.into_iter()
+ .map(|utxo| {
+ <span class="kw">let </span>keychain = utxo.keychain;
(
- <span class="ident">utxo</span>,
- <span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>(),
+ utxo,
+ <span class="self">self</span>.get_descriptor_for_keychain(keychain)
+ .max_satisfaction_weight()
+ .unwrap(),
)
})
- .<span class="ident">collect</span>())
+ .collect())
}
- <span class="doccomment">/// Given the options returns the list of utxos that must be used to form the</span>
- <span class="doccomment">/// transaction and any further that may be used if needed.</span>
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::type_complexity</span>)]</span>
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::too_many_arguments</span>)]</span>
- <span class="kw">fn</span> <span class="ident">preselect_utxos</span>(
+ <span class="doccomment">/// Given the options returns the list of utxos that must be used to form the
+ /// transaction and any further that may be used if needed.
+ </span><span class="attr">#[allow(clippy::type_complexity)]
+ #[allow(clippy::too_many_arguments)]
+ </span><span class="kw">fn </span>preselect_utxos(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">change_policy</span>: <span class="ident">tx_builder::ChangeSpendPolicy</span>,
- <span class="ident">unspendable</span>: <span class="kw-2">&</span><span class="ident">HashSet</span><span class="op"><</span><span class="ident">OutPoint</span><span class="op">></span>,
- <span class="ident">manually_selected</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="ident">must_use_all_available</span>: <span class="ident">bool</span>,
- <span class="ident">manual_only</span>: <span class="ident">bool</span>,
- <span class="ident">must_only_use_confirmed_tx</span>: <span class="ident">bool</span>,
- <span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>), <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// must_spend <- manually selected utxos</span>
- <span class="comment">// may_spend <- all other available utxos</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">may_spend</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_available_utxos</span>()<span class="question-mark">?</span>;
-
- <span class="ident">may_spend</span>.<span class="ident">retain</span>(<span class="op">|</span><span class="ident">may_spend</span><span class="op">|</span> {
- <span class="op">!</span><span class="ident">manually_selected</span>
- .<span class="ident">iter</span>()
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">manually_selected</span><span class="op">|</span> <span class="ident">manually_selected</span>.<span class="ident">utxo</span>.<span class="ident">outpoint</span>() <span class="op">==</span> <span class="ident">may_spend</span>.<span class="number">0</span>.<span class="ident">outpoint</span>)
+ change_policy: tx_builder::ChangeSpendPolicy,
+ unspendable: <span class="kw-2">&</span>HashSet<OutPoint>,
+ manually_selected: Vec<WeightedUtxo>,
+ must_use_all_available: bool,
+ manual_only: bool,
+ must_only_use_confirmed_tx: bool,
+ current_height: <span class="prelude-ty">Option</span><u32>,
+ ) -> <span class="prelude-ty">Result</span><(Vec<WeightedUtxo>, Vec<WeightedUtxo>), Error> {
+ <span class="comment">// must_spend <- manually selected utxos
+ // may_spend <- all other available utxos
+ </span><span class="kw">let </span><span class="kw-2">mut </span>may_spend = <span class="self">self</span>.get_available_utxos()<span class="question-mark">?</span>;
+
+ may_spend.retain(|may_spend| {
+ !manually_selected
+ .iter()
+ .any(|manually_selected| manually_selected.utxo.outpoint() == may_spend.<span class="number">0</span>.outpoint)
});
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">must_spend</span> <span class="op">=</span> <span class="ident">manually_selected</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>must_spend = manually_selected;
- <span class="comment">// NOTE: we are intentionally ignoring `unspendable` here. i.e manual</span>
- <span class="comment">// selection overrides unspendable.</span>
- <span class="kw">if</span> <span class="ident">manual_only</span> {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>((<span class="ident">must_spend</span>, <span class="macro">vec!</span>[]));
+ <span class="comment">// NOTE: we are intentionally ignoring `unspendable` here. i.e manual
+ // selection overrides unspendable.
+ </span><span class="kw">if </span>manual_only {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>((must_spend, <span class="macro">vec!</span>[]));
}
- <span class="kw">let</span> <span class="ident">database</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>();
- <span class="kw">let</span> <span class="ident">satisfies_confirmed</span> <span class="op">=</span> <span class="ident">may_spend</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> {
- <span class="ident">database</span>
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">u</span>.<span class="number">0</span>.<span class="ident">outpoint</span>.<span class="ident">txid</span>, <span class="bool-val">true</span>)
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">tx</span><span class="op">|</span> <span class="kw">match</span> <span class="ident">tx</span> {
- <span class="comment">// We don't have the tx in the db for some reason,</span>
- <span class="comment">// so we can't know for sure if it's mature or not.</span>
- <span class="comment">// We prefer not to spend it.</span>
- <span class="prelude-val">None</span> => <span class="bool-val">false</span>,
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) => {
- <span class="comment">// Whether the UTXO is mature and, if needed, confirmed</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">spendable</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="kw">if</span> <span class="ident">must_only_use_confirmed_tx</span> <span class="op">&&</span> <span class="ident">tx</span>.<span class="ident">confirmation_time</span>.<span class="ident">is_none</span>() {
- <span class="kw">return</span> <span class="bool-val">false</span>;
+ <span class="kw">let </span>database = <span class="self">self</span>.database.borrow();
+ <span class="kw">let </span>satisfies_confirmed = may_spend
+ .iter()
+ .map(|u| {
+ database
+ .get_tx(<span class="kw-2">&</span>u.<span class="number">0</span>.outpoint.txid, <span class="bool-val">true</span>)
+ .map(|tx| <span class="kw">match </span>tx {
+ <span class="comment">// We don't have the tx in the db for some reason,
+ // so we can't know for sure if it's mature or not.
+ // We prefer not to spend it.
+ </span><span class="prelude-val">None </span>=> <span class="bool-val">false</span>,
+ <span class="prelude-val">Some</span>(tx) => {
+ <span class="comment">// Whether the UTXO is mature and, if needed, confirmed
+ </span><span class="kw">let </span><span class="kw-2">mut </span>spendable = <span class="bool-val">true</span>;
+ <span class="kw">if </span>must_only_use_confirmed_tx && tx.confirmation_time.is_none() {
+ <span class="kw">return </span><span class="bool-val">false</span>;
}
- <span class="kw">if</span> <span class="ident">tx</span>
- .<span class="ident">transaction</span>
- .<span class="ident">expect</span>(<span class="string">"We specifically ask for the transaction above"</span>)
- .<span class="ident">is_coin_base</span>()
+ <span class="kw">if </span>tx
+ .transaction
+ .expect(<span class="string">"We specifically ask for the transaction above"</span>)
+ .is_coin_base()
{
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">current_height</span>) <span class="op">=</span> <span class="ident">current_height</span> {
- <span class="kw">match</span> <span class="kw-2">&</span><span class="ident">tx</span>.<span class="ident">confirmation_time</span> {
- <span class="prelude-val">Some</span>(<span class="ident">t</span>) => {
- <span class="comment">// https://github.com/bitcoin/bitcoin/blob/c5e67be03bb06a5d7885c55db1f016fbf2333fe3/src/validation.cpp#L373-L375</span>
- <span class="ident">spendable</span> <span class="op">&=</span> (<span class="ident">current_height</span>.<span class="ident">saturating_sub</span>(<span class="ident">t</span>.<span class="ident">height</span>))
- <span class="op">></span><span class="op">=</span> <span class="ident">COINBASE_MATURITY</span>;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(current_height) = current_height {
+ <span class="kw">match </span><span class="kw-2">&</span>tx.confirmation_time {
+ <span class="prelude-val">Some</span>(t) => {
+ <span class="comment">// https://github.com/bitcoin/bitcoin/blob/c5e67be03bb06a5d7885c55db1f016fbf2333fe3/src/validation.cpp#L373-L375
+ </span>spendable &= (current_height.saturating_sub(t.height))
+ >= COINBASE_MATURITY;
}
- <span class="prelude-val">None</span> => <span class="ident">spendable</span> <span class="op">=</span> <span class="bool-val">false</span>,
+ <span class="prelude-val">None </span>=> spendable = <span class="bool-val">false</span>,
}
}
}
- <span class="ident">spendable</span>
+ spendable
}
})
})
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">i</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="ident">may_spend</span>.<span class="ident">retain</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">retain</span> <span class="op">=</span> <span class="ident">change_policy</span>.<span class="ident">is_satisfied_by</span>(<span class="kw-2">&</span><span class="ident">u</span>.<span class="number">0</span>)
- <span class="op">&&</span> <span class="op">!</span><span class="ident">unspendable</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">u</span>.<span class="number">0</span>.<span class="ident">outpoint</span>)
- <span class="op">&&</span> <span class="ident">satisfies_confirmed</span>[<span class="ident">i</span>];
- <span class="ident">i</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
- <span class="ident">retain</span>
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>i = <span class="number">0</span>;
+ may_spend.retain(|u| {
+ <span class="kw">let </span>retain = change_policy.is_satisfied_by(<span class="kw-2">&</span>u.<span class="number">0</span>)
+ && !unspendable.contains(<span class="kw-2">&</span>u.<span class="number">0</span>.outpoint)
+ && satisfies_confirmed[i];
+ i += <span class="number">1</span>;
+ retain
});
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">may_spend</span> <span class="op">=</span> <span class="ident">may_spend</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">local_utxo</span>, <span class="ident">satisfaction_weight</span>)<span class="op">|</span> <span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Local</span>(<span class="ident">local_utxo</span>),
+ <span class="kw">let </span><span class="kw-2">mut </span>may_spend = may_spend
+ .into_iter()
+ .map(|(local_utxo, satisfaction_weight)| WeightedUtxo {
+ satisfaction_weight,
+ utxo: Utxo::Local(local_utxo),
})
- .<span class="ident">collect</span>();
+ .collect();
- <span class="kw">if</span> <span class="ident">must_use_all_available</span> {
- <span class="ident">must_spend</span>.<span class="ident">append</span>(<span class="kw-2">&mut</span> <span class="ident">may_spend</span>);
+ <span class="kw">if </span>must_use_all_available {
+ must_spend.append(<span class="kw-2">&mut </span>may_spend);
}
- <span class="prelude-val">Ok</span>((<span class="ident">must_spend</span>, <span class="ident">may_spend</span>))
+ <span class="prelude-val">Ok</span>((must_spend, may_spend))
}
- <span class="kw">fn</span> <span class="ident">complete_transaction</span>(
+ <span class="kw">fn </span>complete_transaction(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">tx</span>: <span class="ident">Transaction</span>,
- <span class="ident">selected</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Utxo</span><span class="op">></span>,
- <span class="ident">params</span>: <span class="ident">TxParams</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">psbt::PartiallySignedTransaction</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">psbt::PartiallySignedTransaction::from_unsigned_tx</span>(<span class="ident">tx</span>)<span class="question-mark">?</span>;
-
- <span class="kw">if</span> <span class="ident">params</span>.<span class="ident">add_global_xpubs</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">all_xpubs</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">get_extended_keys</span>()<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">change_descriptor</span> {
- <span class="ident">all_xpubs</span>.<span class="ident">extend</span>(<span class="ident">change_descriptor</span>.<span class="ident">get_extended_keys</span>()<span class="question-mark">?</span>);
+ tx: Transaction,
+ selected: Vec<Utxo>,
+ params: TxParams,
+ ) -> <span class="prelude-ty">Result</span><psbt::PartiallySignedTransaction, Error> {
+ <span class="kw">let </span><span class="kw-2">mut </span>psbt = psbt::PartiallySignedTransaction::from_unsigned_tx(tx)<span class="question-mark">?</span>;
+
+ <span class="kw">if </span>params.add_global_xpubs {
+ <span class="kw">let </span><span class="kw-2">mut </span>all_xpubs = <span class="self">self</span>.descriptor.get_extended_keys()<span class="question-mark">?</span>;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(change_descriptor) = <span class="kw-2">&</span><span class="self">self</span>.change_descriptor {
+ all_xpubs.extend(change_descriptor.get_extended_keys()<span class="question-mark">?</span>);
}
- <span class="kw">for</span> <span class="ident">xpub</span> <span class="kw">in</span> <span class="ident">all_xpubs</span> {
- <span class="kw">let</span> <span class="ident">origin</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">xpub</span>.<span class="ident">origin</span> {
- <span class="prelude-val">Some</span>(<span class="ident">origin</span>) => <span class="ident">origin</span>,
- <span class="prelude-val">None</span> <span class="kw">if</span> <span class="ident">xpub</span>.<span class="ident">xkey</span>.<span class="ident">depth</span> <span class="op">==</span> <span class="number">0</span> => {
- (<span class="ident">xpub</span>.<span class="ident">root_fingerprint</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">secp</span>), <span class="macro">vec!</span>[].<span class="ident">into</span>())
+ <span class="kw">for </span>xpub <span class="kw">in </span>all_xpubs {
+ <span class="kw">let </span>origin = <span class="kw">match </span>xpub.origin {
+ <span class="prelude-val">Some</span>(origin) => origin,
+ <span class="prelude-val">None </span><span class="kw">if </span>xpub.xkey.depth == <span class="number">0 </span>=> {
+ (xpub.root_fingerprint(<span class="kw-2">&</span><span class="self">self</span>.secp), <span class="macro">vec!</span>[].into())
}
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::MissingKeyOrigin</span>(<span class="ident">xpub</span>.<span class="ident">xkey</span>.<span class="ident">to_string</span>())),
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::MissingKeyOrigin(xpub.xkey.to_string())),
};
- <span class="ident">psbt</span>.<span class="ident">xpub</span>.<span class="ident">insert</span>(<span class="ident">xpub</span>.<span class="ident">xkey</span>, <span class="ident">origin</span>);
+ psbt.xpub.insert(xpub.xkey, origin);
}
}
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">lookup_output</span> <span class="op">=</span> <span class="ident">selected</span>
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> (<span class="ident">utxo</span>.<span class="ident">outpoint</span>(), <span class="ident">utxo</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">HashMap</span><span class="op"><</span><span class="kw">_</span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>lookup_output = selected
+ .into_iter()
+ .map(|utxo| (utxo.outpoint(), utxo))
+ .collect::<HashMap<<span class="kw">_</span>, <span class="kw">_</span>>>();
- <span class="comment">// add metadata for the inputs</span>
- <span class="kw">for</span> (<span class="ident">psbt_input</span>, <span class="ident">input</span>) <span class="kw">in</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter_mut</span>().<span class="ident">zip</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">iter</span>()) {
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">lookup_output</span>.<span class="ident">remove</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>) {
- <span class="prelude-val">Some</span>(<span class="ident">utxo</span>) => <span class="ident">utxo</span>,
- <span class="prelude-val">None</span> => <span class="kw">continue</span>,
+ <span class="comment">// add metadata for the inputs
+ </span><span class="kw">for </span>(psbt_input, input) <span class="kw">in </span>psbt.inputs.iter_mut().zip(psbt.unsigned_tx.input.iter()) {
+ <span class="kw">let </span>utxo = <span class="kw">match </span>lookup_output.remove(<span class="kw-2">&</span>input.previous_output) {
+ <span class="prelude-val">Some</span>(utxo) => utxo,
+ <span class="prelude-val">None </span>=> <span class="kw">continue</span>,
};
- <span class="kw">match</span> <span class="ident">utxo</span> {
- <span class="ident">Utxo::Local</span>(<span class="ident">utxo</span>) => {
- <span class="kw-2">*</span><span class="ident">psbt_input</span> <span class="op">=</span>
- <span class="kw">match</span> <span class="self">self</span>.<span class="ident">get_psbt_input</span>(<span class="ident">utxo</span>, <span class="ident">params</span>.<span class="ident">sighash</span>, <span class="ident">params</span>.<span class="ident">only_witness_utxo</span>) {
- <span class="prelude-val">Ok</span>(<span class="ident">psbt_input</span>) => <span class="ident">psbt_input</span>,
- <span class="prelude-val">Err</span>(<span class="ident">e</span>) => <span class="kw">match</span> <span class="ident">e</span> {
- <span class="ident">Error::UnknownUtxo</span> => <span class="ident">psbt::Input</span> {
- <span class="ident">sighash_type</span>: <span class="ident">params</span>.<span class="ident">sighash</span>,
- ..<span class="ident">psbt::Input::default</span>()
+ <span class="kw">match </span>utxo {
+ Utxo::Local(utxo) => {
+ <span class="kw-2">*</span>psbt_input =
+ <span class="kw">match </span><span class="self">self</span>.get_psbt_input(utxo, params.sighash, params.only_witness_utxo) {
+ <span class="prelude-val">Ok</span>(psbt_input) => psbt_input,
+ <span class="prelude-val">Err</span>(e) => <span class="kw">match </span>e {
+ Error::UnknownUtxo => psbt::Input {
+ sighash_type: params.sighash,
+ ..psbt::Input::default()
},
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>),
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(e),
},
}
}
- <span class="ident">Utxo::Foreign</span> {
- <span class="ident">psbt_input</span>: <span class="ident">foreign_psbt_input</span>,
- <span class="ident">outpoint</span>,
+ Utxo::Foreign {
+ psbt_input: foreign_psbt_input,
+ outpoint,
} => {
- <span class="kw">let</span> <span class="ident">is_taproot</span> <span class="op">=</span> <span class="ident">foreign_psbt_input</span>
- .<span class="ident">witness_utxo</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span>.<span class="ident">is_v1_p2tr</span>())
- .<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>);
- <span class="kw">if</span> <span class="op">!</span><span class="ident">is_taproot</span>
- <span class="op">&&</span> <span class="op">!</span><span class="ident">params</span>.<span class="ident">only_witness_utxo</span>
- <span class="op">&&</span> <span class="ident">foreign_psbt_input</span>.<span class="ident">non_witness_utxo</span>.<span class="ident">is_none</span>()
+ <span class="kw">let </span>is_taproot = foreign_psbt_input
+ .witness_utxo
+ .as_ref()
+ .map(|txout| txout.script_pubkey.is_v1_p2tr())
+ .unwrap_or(<span class="bool-val">false</span>);
+ <span class="kw">if </span>!is_taproot
+ && !params.only_witness_utxo
+ && foreign_psbt_input.non_witness_utxo.is_none()
{
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="macro">format!</span>(
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(<span class="macro">format!</span>(
<span class="string">"Missing non_witness_utxo on foreign utxo {}"</span>,
- <span class="ident">outpoint</span>
+ outpoint
)));
}
- <span class="kw-2">*</span><span class="ident">psbt_input</span> <span class="op">=</span> <span class="kw-2">*</span><span class="ident">foreign_psbt_input</span>;
+ <span class="kw-2">*</span>psbt_input = <span class="kw-2">*</span>foreign_psbt_input;
}
}
}
- <span class="self">self</span>.<span class="ident">update_psbt_with_descriptor</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.update_psbt_with_descriptor(<span class="kw-2">&mut </span>psbt)<span class="question-mark">?</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">psbt</span>)
+ <span class="prelude-val">Ok</span>(psbt)
}
- <span class="doccomment">/// get the corresponding PSBT Input for a LocalUtxo</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_psbt_input</span>(
+ <span class="doccomment">/// get the corresponding PSBT Input for a LocalUtxo
+ </span><span class="kw">pub fn </span>get_psbt_input(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">utxo</span>: <span class="ident">LocalUtxo</span>,
- <span class="ident">sighash_type</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">psbt::PsbtSighashType</span><span class="op">></span>,
- <span class="ident">only_witness_utxo</span>: <span class="ident">bool</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">psbt::Input</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// Try to find the prev_script in our db to figure out if this is internal or external,</span>
- <span class="comment">// and the derivation index</span>
- <span class="kw">let</span> (<span class="ident">keychain</span>, <span class="ident">child</span>) <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">utxo</span>.<span class="ident">txout</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- .<span class="ident">ok_or</span>(<span class="ident">Error::UnknownUtxo</span>)<span class="question-mark">?</span>;
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">psbt::Input</span> {
- <span class="ident">sighash_type</span>,
- ..<span class="ident">psbt::Input::default</span>()
+ utxo: LocalUtxo,
+ sighash_type: <span class="prelude-ty">Option</span><psbt::PsbtSighashType>,
+ only_witness_utxo: bool,
+ ) -> <span class="prelude-ty">Result</span><psbt::Input, Error> {
+ <span class="comment">// Try to find the prev_script in our db to figure out if this is internal or external,
+ // and the derivation index
+ </span><span class="kw">let </span>(keychain, child) = <span class="self">self
+ </span>.database
+ .borrow()
+ .get_path_from_script_pubkey(<span class="kw-2">&</span>utxo.txout.script_pubkey)<span class="question-mark">?
+ </span>.ok_or(Error::UnknownUtxo)<span class="question-mark">?</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>psbt_input = psbt::Input {
+ sighash_type,
+ ..psbt::Input::default()
};
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>);
- <span class="kw">let</span> <span class="ident">derived_descriptor</span> <span class="op">=</span> <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="ident">child</span>);
+ <span class="kw">let </span>desc = <span class="self">self</span>.get_descriptor_for_keychain(keychain);
+ <span class="kw">let </span>derived_descriptor = desc.at_derivation_index(child);
- <span class="ident">psbt_input</span>
- .<span class="ident">update_with_descriptor_unchecked</span>(<span class="kw-2">&</span><span class="ident">derived_descriptor</span>)
- .<span class="ident">map_err</span>(<span class="ident">MiniscriptPsbtError::Conversion</span>)<span class="question-mark">?</span>;
+ psbt_input
+ .update_with_descriptor_unchecked(<span class="kw-2">&</span>derived_descriptor)
+ .map_err(MiniscriptPsbtError::Conversion)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">prev_output</span> <span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">outpoint</span>;
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>().<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">prev_output</span>.<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="kw">if</span> <span class="ident">desc</span>.<span class="ident">is_witness</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">desc</span>.<span class="ident">is_taproot</span>() {
- <span class="ident">psbt_input</span>.<span class="ident">witness_utxo</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>.<span class="ident">output</span>[<span class="ident">prev_output</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>].<span class="ident">clone</span>());
+ <span class="kw">let </span>prev_output = utxo.outpoint;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(prev_tx) = <span class="self">self</span>.database.borrow().get_raw_tx(<span class="kw-2">&</span>prev_output.txid)<span class="question-mark">? </span>{
+ <span class="kw">if </span>desc.is_witness() || desc.is_taproot() {
+ psbt_input.witness_utxo = <span class="prelude-val">Some</span>(prev_tx.output[prev_output.vout <span class="kw">as </span>usize].clone());
}
- <span class="kw">if</span> <span class="op">!</span><span class="ident">desc</span>.<span class="ident">is_taproot</span>() <span class="op">&&</span> (<span class="op">!</span><span class="ident">desc</span>.<span class="ident">is_witness</span>() <span class="op">|</span><span class="op">|</span> <span class="op">!</span><span class="ident">only_witness_utxo</span>) {
- <span class="ident">psbt_input</span>.<span class="ident">non_witness_utxo</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>);
+ <span class="kw">if </span>!desc.is_taproot() && (!desc.is_witness() || !only_witness_utxo) {
+ psbt_input.non_witness_utxo = <span class="prelude-val">Some</span>(prev_tx);
}
}
- <span class="prelude-val">Ok</span>(<span class="ident">psbt_input</span>)
+ <span class="prelude-val">Ok</span>(psbt_input)
}
- <span class="kw">fn</span> <span class="ident">update_psbt_with_descriptor</span>(
+ <span class="kw">fn </span>update_psbt_with_descriptor(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
- <span class="comment">// We need to borrow `psbt` mutably within the loops, so we have to allocate a vec for all</span>
- <span class="comment">// the input utxos and outputs</span>
- <span class="comment">//</span>
- <span class="comment">// Clippy complains that the collect is not required, but that's wrong</span>
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::needless_collect</span>)]</span>
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> (<span class="number">0</span>..<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>())
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="ident">i</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">utxo</span><span class="op">|</span> (<span class="bool-val">true</span>, <span class="ident">i</span>, <span class="ident">utxo</span>)))
- .<span class="ident">chain</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">enumerate</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">i</span>, <span class="ident">out</span>)<span class="op">|</span> (<span class="bool-val">false</span>, <span class="ident">i</span>, <span class="ident">out</span>.<span class="ident">clone</span>())),
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
+ <span class="comment">// We need to borrow `psbt` mutably within the loops, so we have to allocate a vec for all
+ // the input utxos and outputs
+ //
+ // Clippy complains that the collect is not required, but that's wrong
+ </span><span class="attr">#[allow(clippy::needless_collect)]
+ </span><span class="kw">let </span>utxos = (<span class="number">0</span>..psbt.inputs.len())
+ .filter_map(|i| psbt.get_utxo_for(i).map(|utxo| (<span class="bool-val">true</span>, i, utxo)))
+ .chain(
+ psbt.unsigned_tx
+ .output
+ .iter()
+ .enumerate()
+ .map(|(i, out)| (<span class="bool-val">false</span>, i, out.clone())),
)
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
-
- <span class="comment">// Try to figure out the keychain and derivation for every input and output</span>
- <span class="kw">for</span> (<span class="ident">is_input</span>, <span class="ident">index</span>, <span class="ident">out</span>) <span class="kw">in</span> <span class="ident">utxos</span>.<span class="ident">into_iter</span>() {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">keychain</span>, <span class="ident">child</span>)) <span class="op">=</span> <span class="self">self</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_path_from_script_pubkey</span>(<span class="kw-2">&</span><span class="ident">out</span>.<span class="ident">script_pubkey</span>)<span class="question-mark">?</span>
- {
+ .collect::<Vec<<span class="kw">_</span>>>();
+
+ <span class="comment">// Try to figure out the keychain and derivation for every input and output
+ </span><span class="kw">for </span>(is_input, index, out) <span class="kw">in </span>utxos.into_iter() {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>((keychain, child)) = <span class="self">self
+ </span>.database
+ .borrow()
+ .get_path_from_script_pubkey(<span class="kw-2">&</span>out.script_pubkey)<span class="question-mark">?
+ </span>{
<span class="macro">debug!</span>(
<span class="string">"Found descriptor for input #{} {:?}/{}"</span>,
- <span class="ident">index</span>, <span class="ident">keychain</span>, <span class="ident">child</span>
+ index, keychain, child
);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="ident">desc</span>.<span class="ident">at_derivation_index</span>(<span class="ident">child</span>);
+ <span class="kw">let </span>desc = <span class="self">self</span>.get_descriptor_for_keychain(keychain);
+ <span class="kw">let </span>desc = desc.at_derivation_index(child);
- <span class="kw">if</span> <span class="ident">is_input</span> {
- <span class="ident">psbt</span>.<span class="ident">update_input_with_descriptor</span>(<span class="ident">index</span>, <span class="kw-2">&</span><span class="ident">desc</span>)
- .<span class="ident">map_err</span>(<span class="ident">MiniscriptPsbtError::UtxoUpdate</span>)<span class="question-mark">?</span>;
- } <span class="kw">else</span> {
- <span class="ident">psbt</span>.<span class="ident">update_output_with_descriptor</span>(<span class="ident">index</span>, <span class="kw-2">&</span><span class="ident">desc</span>)
- .<span class="ident">map_err</span>(<span class="ident">MiniscriptPsbtError::OutputUpdate</span>)<span class="question-mark">?</span>;
+ <span class="kw">if </span>is_input {
+ psbt.update_input_with_descriptor(index, <span class="kw-2">&</span>desc)
+ .map_err(MiniscriptPsbtError::UtxoUpdate)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ psbt.update_output_with_descriptor(index, <span class="kw-2">&</span>desc)
+ .map_err(MiniscriptPsbtError::OutputUpdate)<span class="question-mark">?</span>;
}
}
}
<span class="prelude-val">Ok</span>(())
}
- <span class="doccomment">/// Return an immutable reference to the internal database</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">database</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl</span> <span class="ident">std::ops::Deref</span><span class="op"><</span><span class="ident">Target</span> <span class="op">=</span> <span class="ident">D</span><span class="op">></span> <span class="op">+</span> <span class="lifetime">'_</span> {
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow</span>()
+ <span class="doccomment">/// Return an immutable reference to the internal database
+ </span><span class="kw">pub fn </span>database(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw">impl </span>std::ops::Deref<Target = D> + <span class="lifetime">'_ </span>{
+ <span class="self">self</span>.database.borrow()
}
- <span class="doccomment">/// Sync the internal database with the blockchain</span>
- <span class="attribute">#[<span class="ident">maybe_async</span>]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">sync</span><span class="op"><</span><span class="ident">B</span>: <span class="ident">WalletSync</span> <span class="op">+</span> <span class="ident">GetHeight</span><span class="op">></span>(
+ <span class="doccomment">/// Sync the internal database with the blockchain
+ </span><span class="attr">#[maybe_async]
+ </span><span class="kw">pub fn </span>sync<B: WalletSync + GetHeight>(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">blockchain</span>: <span class="kw-2">&</span><span class="ident">B</span>,
- <span class="ident">sync_opts</span>: <span class="ident">SyncOptions</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span> {
+ blockchain: <span class="kw-2">&</span>B,
+ sync_opts: SyncOptions,
+ ) -> <span class="prelude-ty">Result</span><(), Error> {
<span class="macro">debug!</span>(<span class="string">"Begin sync..."</span>);
- <span class="comment">// TODO: for the next runs, we cannot reuse the `sync_opts.progress` object due to trait</span>
- <span class="comment">// restrictions</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">progress_iter</span> <span class="op">=</span> <span class="ident">sync_opts</span>.<span class="ident">progress</span>.<span class="ident">into_iter</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">new_progress</span> <span class="op">=</span> <span class="op">|</span><span class="op">|</span> {
- <span class="ident">progress_iter</span>
- .<span class="ident">next</span>()
- .<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">Box::new</span>(<span class="ident">NoopProgress</span>))
+ <span class="comment">// TODO: for the next runs, we cannot reuse the `sync_opts.progress` object due to trait
+ // restrictions
+ </span><span class="kw">let </span><span class="kw-2">mut </span>progress_iter = sync_opts.progress.into_iter();
+ <span class="kw">let </span><span class="kw-2">mut </span>new_progress = || {
+ progress_iter
+ .next()
+ .unwrap_or_else(|| Box::new(NoopProgress))
};
- <span class="kw">let</span> <span class="ident">run_setup</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">ensure_addresses_cached</span>(<span class="ident">CACHE_ADDR_BATCH_SIZE</span>)<span class="question-mark">?</span>;
- <span class="macro">debug!</span>(<span class="string">"run_setup: {}"</span>, <span class="ident">run_setup</span>);
-
- <span class="comment">// TODO: what if i generate an address first and cache some addresses?</span>
- <span class="comment">// TODO: we should sync if generating an address triggers a new batch to be stored</span>
-
- <span class="comment">// We need to ensure descriptor is derivable to fullfil "missing cache", otherwise we will</span>
- <span class="comment">// end up with an infinite loop</span>
- <span class="kw">let</span> <span class="ident">has_wildcard</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">descriptor</span>.<span class="ident">has_wildcard</span>()
- <span class="op">&&</span> (<span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">is_none</span>()
- <span class="op">|</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">change_descriptor</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>().<span class="ident">has_wildcard</span>());
-
- <span class="comment">// Restrict max rounds in case of faulty "missing cache" implementation by blockchain</span>
- <span class="kw">let</span> <span class="ident">max_rounds</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">has_wildcard</span> { <span class="number">100</span> } <span class="kw">else</span> { <span class="number">1</span> };
-
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">max_rounds</span> {
- <span class="kw">let</span> <span class="ident">sync_res</span> <span class="op">=</span>
- <span class="kw">if</span> <span class="ident">run_setup</span> {
- <span class="macro">maybe_await!</span>(<span class="ident">blockchain</span>
- .<span class="ident">wallet_setup</span>(<span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">deref_mut</span>(), <span class="ident">new_progress</span>()))
- } <span class="kw">else</span> {
- <span class="macro">maybe_await!</span>(<span class="ident">blockchain</span>
- .<span class="ident">wallet_sync</span>(<span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">deref_mut</span>(), <span class="ident">new_progress</span>()))
+ <span class="kw">let </span>run_setup = <span class="self">self</span>.ensure_addresses_cached(CACHE_ADDR_BATCH_SIZE)<span class="question-mark">?</span>;
+ <span class="macro">debug!</span>(<span class="string">"run_setup: {}"</span>, run_setup);
+
+ <span class="comment">// TODO: what if i generate an address first and cache some addresses?
+ // TODO: we should sync if generating an address triggers a new batch to be stored
+
+ // We need to ensure descriptor is derivable to fullfil "missing cache", otherwise we will
+ // end up with an infinite loop
+ </span><span class="kw">let </span>has_wildcard = <span class="self">self</span>.descriptor.has_wildcard()
+ && (<span class="self">self</span>.change_descriptor.is_none()
+ || <span class="self">self</span>.change_descriptor.as_ref().unwrap().has_wildcard());
+
+ <span class="comment">// Restrict max rounds in case of faulty "missing cache" implementation by blockchain
+ </span><span class="kw">let </span>max_rounds = <span class="kw">if </span>has_wildcard { <span class="number">100 </span>} <span class="kw">else </span>{ <span class="number">1 </span>};
+
+ <span class="kw">for _ in </span><span class="number">0</span>..max_rounds {
+ <span class="kw">let </span>sync_res =
+ <span class="kw">if </span>run_setup {
+ <span class="macro">maybe_await!</span>(blockchain
+ .wallet_setup(<span class="self">self</span>.database.borrow_mut().deref_mut(), new_progress()))
+ } <span class="kw">else </span>{
+ <span class="macro">maybe_await!</span>(blockchain
+ .wallet_sync(<span class="self">self</span>.database.borrow_mut().deref_mut(), new_progress()))
};
- <span class="comment">// If the error is the special `MissingCachedScripts` error, we return the number of</span>
- <span class="comment">// scripts we should ensure cached.</span>
- <span class="comment">// On any other error, we should return the error.</span>
- <span class="comment">// On no error, we say `ensure_cache` is 0.</span>
- <span class="kw">let</span> <span class="ident">ensure_cache</span> <span class="op">=</span> <span class="ident">sync_res</span>.<span class="ident">map_or_else</span>(
- <span class="op">|</span><span class="ident">e</span><span class="op">|</span> <span class="kw">match</span> <span class="ident">e</span> {
- <span class="ident">Error::MissingCachedScripts</span>(<span class="ident">inner</span>) => {
- <span class="comment">// each call to `WalletSync` is expensive, maximize on scripts to search for</span>
- <span class="kw">let</span> <span class="ident">extra</span> <span class="op">=</span>
- <span class="ident">std::cmp::max</span>(<span class="ident">inner</span>.<span class="ident">missing_count</span> <span class="kw">as</span> <span class="ident">u32</span>, <span class="ident">CACHE_ADDR_BATCH_SIZE</span>);
- <span class="kw">let</span> <span class="ident">last</span> <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">last_count</span> <span class="kw">as</span> <span class="ident">u32</span>;
- <span class="prelude-val">Ok</span>(<span class="ident">extra</span> <span class="op">+</span> <span class="ident">last</span>)
+ <span class="comment">// If the error is the special `MissingCachedScripts` error, we return the number of
+ // scripts we should ensure cached.
+ // On any other error, we should return the error.
+ // On no error, we say `ensure_cache` is 0.
+ </span><span class="kw">let </span>ensure_cache = sync_res.map_or_else(
+ |e| <span class="kw">match </span>e {
+ Error::MissingCachedScripts(inner) => {
+ <span class="comment">// each call to `WalletSync` is expensive, maximize on scripts to search for
+ </span><span class="kw">let </span>extra =
+ std::cmp::max(inner.missing_count <span class="kw">as </span>u32, CACHE_ADDR_BATCH_SIZE);
+ <span class="kw">let </span>last = inner.last_count <span class="kw">as </span>u32;
+ <span class="prelude-val">Ok</span>(extra + last)
}
- <span class="kw">_</span> => <span class="prelude-val">Err</span>(<span class="ident">e</span>),
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(e),
},
- <span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="number">0_u32</span>),
+ |<span class="kw">_</span>| <span class="prelude-val">Ok</span>(<span class="number">0_u32</span>),
)<span class="question-mark">?</span>;
- <span class="comment">// cache and try again, break when there is nothing to cache</span>
- <span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">ensure_addresses_cached</span>(<span class="ident">ensure_cache</span>)<span class="question-mark">?</span> {
+ <span class="comment">// cache and try again, break when there is nothing to cache
+ </span><span class="kw">if </span>!<span class="self">self</span>.ensure_addresses_cached(ensure_cache)<span class="question-mark">? </span>{
<span class="kw">break</span>;
}
}
- <span class="kw">let</span> <span class="ident">sync_time</span> <span class="op">=</span> <span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="macro">maybe_await!</span>(<span class="ident">blockchain</span>.<span class="ident">get_height</span>())<span class="question-mark">?</span>,
- <span class="ident">timestamp</span>: <span class="ident">time::get_timestamp</span>(),
+ <span class="kw">let </span>sync_time = SyncTime {
+ block_time: BlockTime {
+ height: <span class="macro">maybe_await!</span>(blockchain.get_height())<span class="question-mark">?</span>,
+ timestamp: time::get_timestamp(),
},
};
- <span class="macro">debug!</span>(<span class="string">"Saving `sync_time` = {:?}"</span>, <span class="ident">sync_time</span>);
- <span class="self">self</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_sync_time</span>(<span class="ident">sync_time</span>)<span class="question-mark">?</span>;
+ <span class="macro">debug!</span>(<span class="string">"Saving `sync_time` = {:?}"</span>, sync_time);
+ <span class="self">self</span>.database.borrow_mut().set_sync_time(sync_time)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
- <span class="doccomment">/// Return the checksum of the public descriptor associated to `keychain`</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Internally calls [`Self::get_descriptor_for_keychain`] to fetch the right descriptor</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">descriptor_checksum</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>) -> <span class="ident">String</span> {
- <span class="self">self</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">keychain</span>)
- .<span class="ident">to_string</span>()
- .<span class="ident">split_once</span>(<span class="string">'#'</span>)
- .<span class="ident">unwrap</span>()
- .<span class="number">1</span>
- .<span class="ident">to_string</span>()
+ <span class="doccomment">/// Return the checksum of the public descriptor associated to `keychain`
+ ///
+ /// Internally calls [`Self::get_descriptor_for_keychain`] to fetch the right descriptor
+ </span><span class="kw">pub fn </span>descriptor_checksum(<span class="kw-2">&</span><span class="self">self</span>, keychain: KeychainKind) -> String {
+ <span class="self">self</span>.get_descriptor_for_keychain(keychain)
+ .to_string()
+ .split_once(<span class="string">'#'</span>)
+ .unwrap()
+ .<span class="number">1
+ </span>.to_string()
}
}
-<span class="doccomment">/// Deterministically generate a unique name given the descriptors defining the wallet</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Compatible with [`wallet_name_from_descriptor`]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">wallet_name_from_descriptor</span><span class="op"><</span><span class="ident">T</span><span class="op">></span>(
- <span class="ident">descriptor</span>: <span class="ident">T</span>,
- <span class="ident">change_descriptor</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">T</span><span class="op">></span>,
- <span class="ident">network</span>: <span class="ident">Network</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Error</span><span class="op">></span>
-<span class="kw">where</span>
- <span class="ident">T</span>: <span class="ident">IntoWalletDescriptor</span>,
+<span class="doccomment">/// Deterministically generate a unique name given the descriptors defining the wallet
+///
+/// Compatible with [`wallet_name_from_descriptor`]
+</span><span class="kw">pub fn </span>wallet_name_from_descriptor<T>(
+ descriptor: T,
+ change_descriptor: <span class="prelude-ty">Option</span><T>,
+ network: Network,
+ secp: <span class="kw-2">&</span>SecpCtx,
+) -> <span class="prelude-ty">Result</span><String, Error>
+<span class="kw">where
+ </span>T: IntoWalletDescriptor,
{
- <span class="comment">//TODO check descriptors contains only public keys</span>
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="ident">descriptor</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)<span class="question-mark">?</span>
- .<span class="number">0</span>
- .<span class="ident">to_string</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">wallet_name</span> <span class="op">=</span> <span class="ident">calc_checksum</span>(<span class="kw-2">&</span><span class="ident">descriptor</span>[..<span class="ident">descriptor</span>.<span class="ident">find</span>(<span class="string">'#'</span>).<span class="ident">unwrap</span>()])<span class="question-mark">?</span>;
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">change_descriptor</span>) <span class="op">=</span> <span class="ident">change_descriptor</span> {
- <span class="kw">let</span> <span class="ident">change_descriptor</span> <span class="op">=</span> <span class="ident">change_descriptor</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="ident">secp</span>, <span class="ident">network</span>)<span class="question-mark">?</span>
- .<span class="number">0</span>
- .<span class="ident">to_string</span>();
- <span class="ident">wallet_name</span>.<span class="ident">push_str</span>(
- <span class="ident">calc_checksum</span>(<span class="kw-2">&</span><span class="ident">change_descriptor</span>[..<span class="ident">change_descriptor</span>.<span class="ident">find</span>(<span class="string">'#'</span>).<span class="ident">unwrap</span>()])<span class="question-mark">?</span>.<span class="ident">as_str</span>(),
- );
- }
-
- <span class="prelude-val">Ok</span>(<span class="ident">wallet_name</span>)
+ <span class="comment">//TODO check descriptors contains only public keys
+ </span><span class="kw">let </span>descriptor = descriptor
+ .into_wallet_descriptor(secp, network)<span class="question-mark">?
+ </span>.<span class="number">0
+ </span>.to_string();
+ <span class="kw">let </span><span class="kw-2">mut </span>wallet_name = calc_checksum(<span class="kw-2">&</span>descriptor[..descriptor.find(<span class="string">'#'</span>).unwrap()])<span class="question-mark">?</span>;
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(change_descriptor) = change_descriptor {
+ <span class="kw">let </span>change_descriptor = change_descriptor
+ .into_wallet_descriptor(secp, network)<span class="question-mark">?
+ </span>.<span class="number">0
+ </span>.to_string();
+ wallet_name.push_str(
+ calc_checksum(<span class="kw-2">&</span>change_descriptor[..change_descriptor.find(<span class="string">'#'</span>).unwrap()])<span class="question-mark">?</span>.as_str(),
+ );
+ }
+
+ <span class="prelude-val">Ok</span>(wallet_name)
}
-<span class="doccomment">/// Return a fake wallet that appears to be funded for testing.</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_funded_wallet</span>(
- <span class="ident">descriptor</span>: <span class="kw-2">&</span><span class="ident">str</span>,
-) -> (<span class="ident">Wallet</span><span class="op"><</span><span class="ident">AnyDatabase</span><span class="op">></span>, (<span class="ident">String</span>, <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>), <span class="ident">bitcoin::Txid</span>) {
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">descriptor</span>));
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
+<span class="doccomment">/// Return a fake wallet that appears to be funded for testing.
+</span><span class="kw">pub fn </span>get_funded_wallet(
+ descriptor: <span class="kw-2">&</span>str,
+) -> (Wallet<AnyDatabase>, (String, <span class="prelude-ty">Option</span><String>), bitcoin::Txid) {
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (descriptor));
+ <span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">MemoryDatabase::new</span>()),
+ Network::Regtest,
+ AnyDatabase::Memory(MemoryDatabase::new()),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">funding_address_kix</span> <span class="op">=</span> <span class="number">0</span>;
+ <span class="kw">let </span>funding_address_kix = <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">tx_meta</span> <span class="op">=</span> <span class="macro">testutils!</span> {
- @<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="ident">funding_address_kix</span>) => <span class="number">50_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)
+ <span class="kw">let </span>tx_meta = <span class="macro">testutils! </span>{
+ @tx ( (@external descriptors, funding_address_kix) => <span class="number">50_000 </span>) (@confirmations <span class="number">1</span>)
};
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_script_pubkey</span>(
- <span class="kw-2">&</span><span class="ident">bitcoin::Address::from_str</span>(<span class="kw-2">&</span><span class="ident">tx_meta</span>.<span class="ident">output</span>.<span class="ident">get</span>(<span class="number">0</span>).<span class="ident">unwrap</span>().<span class="ident">to_address</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">script_pubkey</span>(),
- <span class="ident">KeychainKind::External</span>,
- <span class="ident">funding_address_kix</span>,
+ wallet
+ .database
+ .borrow_mut()
+ .set_script_pubkey(
+ <span class="kw-2">&</span>bitcoin::Address::from_str(<span class="kw-2">&</span>tx_meta.output.get(<span class="number">0</span>).unwrap().to_address)
+ .unwrap()
+ .script_pubkey(),
+ KeychainKind::External,
+ funding_address_kix,
)
- .<span class="ident">unwrap</span>();
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_last_index</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">funding_address_kix</span>)
- .<span class="ident">unwrap</span>();
+ .unwrap();
+ wallet
+ .database
+ .borrow_mut()
+ .set_last_index(KeychainKind::External, funding_address_kix)
+ .unwrap();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(<span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(), <span class="ident">tx_meta</span>, <span class="prelude-val">Some</span>(<span class="number">100</span>));
+ <span class="kw">let </span>txid = <span class="macro">crate::populate_test_db!</span>(wallet.database.borrow_mut(), tx_meta, <span class="prelude-val">Some</span>(<span class="number">100</span>));
- (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="ident">txid</span>)
+ (wallet, descriptors, txid)
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">util::psbt</span>, <span class="ident">Network</span>, <span class="ident">PackedLockTime</span>, <span class="ident">Sequence</span>};
-
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::Database</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::types::KeychainKind</span>;
-
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer</span>::{<span class="ident">SignOptions</span>, <span class="ident">SignerError</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::AddressIndex</span>::{<span class="ident">LastUnused</span>, <span class="ident">New</span>, <span class="ident">Peek</span>, <span class="ident">Reset</span>};
-
- <span class="comment">// The satisfaction size of a P2WPKH is 112 WU =</span>
- <span class="comment">// 1 (elements in witness) + 1 (OP_PUSH) + 33 (pk) + 1 (OP_PUSH) + 72 (signature + sighash) + 1*4 (script len)</span>
- <span class="comment">// On the witness itself, we have to push once for the pk (33WU) and once for signature + sighash (72WU), for</span>
- <span class="comment">// a total of 105 WU.</span>
- <span class="comment">// Here, we push just once for simplicity, so we have to add an extra byte for the missing</span>
- <span class="comment">// OP_PUSH.</span>
- <span class="kw">const</span> <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">106</span>;
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_descriptor_checksum</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">checksum</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">descriptor_checksum</span>(<span class="ident">KeychainKind::External</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">checksum</span>.<span class="ident">len</span>(), <span class="number">8</span>);
+<span class="attr">#[cfg(test)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>test {
+ <span class="kw">use </span>bitcoin::{util::psbt, Network, PackedLockTime, Sequence};
+
+ <span class="kw">use </span><span class="kw">crate</span>::database::Database;
+ <span class="kw">use </span><span class="kw">crate</span>::types::KeychainKind;
+
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::signer::{SignOptions, SignerError};
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::AddressIndex::{LastUnused, New, Peek, Reset};
+
+ <span class="comment">// The satisfaction size of a P2WPKH is 112 WU =
+ // 1 (elements in witness) + 1 (OP_PUSH) + 33 (pk) + 1 (OP_PUSH) + 72 (signature + sighash) + 1*4 (script len)
+ // On the witness itself, we have to push once for the pk (33WU) and once for signature + sighash (72WU), for
+ // a total of 105 WU.
+ // Here, we push just once for simplicity, so we have to add an extra byte for the missing
+ // OP_PUSH.
+ </span><span class="kw">const </span>P2WPKH_FAKE_WITNESS_SIZE: usize = <span class="number">106</span>;
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_descriptor_checksum() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>checksum = wallet.descriptor_checksum(KeychainKind::External);
+ <span class="macro">assert_eq!</span>(checksum.len(), <span class="number">8</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">calc_checksum</span>(<span class="kw-2">&</span><span class="ident">wallet</span>.<span class="ident">descriptor</span>.<span class="ident">to_string</span>()).<span class="ident">unwrap</span>(),
- <span class="ident">checksum</span>
+ calc_checksum(<span class="kw-2">&</span>wallet.descriptor.to_string()).unwrap(),
+ checksum
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_db_checksum</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">descriptor</span>.<span class="ident">to_string</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_db_checksum() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>desc = wallet.descriptor.to_string();
- <span class="kw">let</span> <span class="ident">checksum</span> <span class="op">=</span> <span class="ident">calc_checksum_bytes_internal</span>(<span class="kw-2">&</span><span class="ident">desc</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">checksum_inception</span> <span class="op">=</span> <span class="ident">calc_checksum_bytes_internal</span>(<span class="kw-2">&</span><span class="ident">desc</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">checksum_invalid</span> <span class="op">=</span> [<span class="string">b'q'</span>; <span class="number">8</span>];
+ <span class="kw">let </span>checksum = calc_checksum_bytes_internal(<span class="kw-2">&</span>desc, <span class="bool-val">true</span>).unwrap();
+ <span class="kw">let </span>checksum_inception = calc_checksum_bytes_internal(<span class="kw-2">&</span>desc, <span class="bool-val">false</span>).unwrap();
+ <span class="kw">let </span>checksum_invalid = [<span class="string">b'q'</span>; <span class="number">8</span>];
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">checksum</span>)
- .<span class="ident">expect</span>(<span class="string">"failed to save actual checksum"</span>);
- <span class="ident">Wallet::db_checksum</span>(<span class="kw-2">&mut</span> <span class="ident">db</span>, <span class="kw-2">&</span><span class="ident">desc</span>, <span class="ident">KeychainKind::External</span>)
- .<span class="ident">expect</span>(<span class="string">"db that uses actual checksum should be supported"</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>db = MemoryDatabase::new();
+ db.check_descriptor_checksum(KeychainKind::External, checksum)
+ .expect(<span class="string">"failed to save actual checksum"</span>);
+ Wallet::db_checksum(<span class="kw-2">&mut </span>db, <span class="kw-2">&</span>desc, KeychainKind::External)
+ .expect(<span class="string">"db that uses actual checksum should be supported"</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">checksum_inception</span>)
- .<span class="ident">expect</span>(<span class="string">"failed to save checksum inception"</span>);
- <span class="ident">Wallet::db_checksum</span>(<span class="kw-2">&mut</span> <span class="ident">db</span>, <span class="kw-2">&</span><span class="ident">desc</span>, <span class="ident">KeychainKind::External</span>)
- .<span class="ident">expect</span>(<span class="string">"db that uses checksum inception should be supported"</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>db = MemoryDatabase::new();
+ db.check_descriptor_checksum(KeychainKind::External, checksum_inception)
+ .expect(<span class="string">"failed to save checksum inception"</span>);
+ Wallet::db_checksum(<span class="kw-2">&mut </span>db, <span class="kw-2">&</span>desc, KeychainKind::External)
+ .expect(<span class="string">"db that uses checksum inception should be supported"</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="ident">db</span>.<span class="ident">check_descriptor_checksum</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">checksum_invalid</span>)
- .<span class="ident">expect</span>(<span class="string">"failed to save invalid checksum"</span>);
- <span class="ident">Wallet::db_checksum</span>(<span class="kw-2">&mut</span> <span class="ident">db</span>, <span class="kw-2">&</span><span class="ident">desc</span>, <span class="ident">KeychainKind::External</span>)
- .<span class="ident">expect_err</span>(<span class="string">"db that uses invalid checksum should fail"</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>db = MemoryDatabase::new();
+ db.check_descriptor_checksum(KeychainKind::External, checksum_invalid)
+ .expect(<span class="string">"failed to save invalid checksum"</span>);
+ Wallet::db_checksum(<span class="kw-2">&mut </span>db, <span class="kw-2">&</span>desc, KeychainKind::External)
+ .expect_err(<span class="string">"db that uses invalid checksum should fail"</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_get_funded_wallet_balance</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="macro">assert_eq!</span>(<span class="ident">wallet</span>.<span class="ident">get_balance</span>().<span class="ident">unwrap</span>().<span class="ident">confirmed</span>, <span class="number">50000</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_get_funded_wallet_balance() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="macro">assert_eq!</span>(wallet.get_balance().unwrap().confirmed, <span class="number">50000</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_cache_addresses_fixed</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_cache_addresses_fixed() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(
<span class="string">"wpkh(L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6)"</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Testnet</span>,
- <span class="ident">db</span>,
+ Network::Testnet,
+ db,
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1qj08ys4ct2hzzc2hcz6h2hgrvlmsjynaw43s835"</span>
- );
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1qj08ys4ct2hzzc2hcz6h2hgrvlmsjynaw43s835"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1qj08ys4ct2hzzc2hcz6h2hgrvlmsjynaw43s835"</span>
- );
-
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::External</span>, <span class="number">0</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">is_some</span>());
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::Internal</span>, <span class="number">0</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">is_none</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_cache_addresses</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1qj08ys4ct2hzzc2hcz6h2hgrvlmsjynaw43s835"
+ </span>);
+
+ <span class="macro">assert!</span>(wallet
+ .database
+ .borrow_mut()
+ .get_script_pubkey_from_path(KeychainKind::External, <span class="number">0</span>)
+ .unwrap()
+ .is_some());
+ <span class="macro">assert!</span>(wallet
+ .database
+ .borrow_mut()
+ .get_script_pubkey_from_path(KeychainKind::Internal, <span class="number">0</span>)
+ .unwrap()
+ .is_none());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_cache_addresses() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>, <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
-
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">CACHE_ADDR_BATCH_SIZE</span> <span class="op">-</span> <span class="number">1</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">is_some</span>());
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">CACHE_ADDR_BATCH_SIZE</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">is_none</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_cache_addresses_refill</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>, <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
+
+ <span class="macro">assert!</span>(wallet
+ .database
+ .borrow_mut()
+ .get_script_pubkey_from_path(KeychainKind::External, CACHE_ADDR_BATCH_SIZE - <span class="number">1</span>)
+ .unwrap()
+ .is_some());
+ <span class="macro">assert!</span>(wallet
+ .database
+ .borrow_mut()
+ .get_script_pubkey_from_path(KeychainKind::External, CACHE_ADDR_BATCH_SIZE)
+ .unwrap()
+ .is_none());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_cache_addresses_refill() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>, <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">CACHE_ADDR_BATCH_SIZE</span> <span class="op">-</span> <span class="number">1</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">is_some</span>());
-
- <span class="kw">for</span> <span class="kw">_</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">CACHE_ADDR_BATCH_SIZE</span> {
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
+ <span class="macro">assert!</span>(wallet
+ .database
+ .borrow_mut()
+ .get_script_pubkey_from_path(KeychainKind::External, CACHE_ADDR_BATCH_SIZE - <span class="number">1</span>)
+ .unwrap()
+ .is_some());
+
+ <span class="kw">for _ in </span><span class="number">0</span>..CACHE_ADDR_BATCH_SIZE {
+ wallet.get_address(New).unwrap();
}
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">get_script_pubkey_from_path</span>(<span class="ident">KeychainKind::External</span>, <span class="ident">CACHE_ADDR_BATCH_SIZE</span> <span class="op">*</span> <span class="number">2</span> <span class="op">-</span> <span class="number">1</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">is_some</span>());
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_wpkh</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_single_sig_csv</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="comment">// and(pk(Alice),older(6))</span>
- <span class="string">"wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),older(6)))"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_a_or_b_plus_csv</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="comment">// or(pk(Alice),and(pk(Bob),older(144)))</span>
- <span class="string">"wsh(or_d(pk(cRjo6jqfVNP33HhSS76UhXETZsGTZYx8FMFvR9kpbtCSV1PmdZdu),and_v(v:pk(cMnkdebixpXMPfkcNEjjGin7s94hiehAH4mLbYkZoh9KSiNNmqC8),older(144))))"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_single_sig_cltv</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="comment">// and(pk(Alice),after(100000))</span>
- <span class="string">"wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(100000)))"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_single_sig</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG)"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_with_taptree</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55,{pk(cPZzKuNmpuUjD1e8jUU4PVzy2b5LngbSip8mBsxf4e7rSFZVb4Uh),pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642)})"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_with_taptree_both_priv</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55,{pk(cPZzKuNmpuUjD1e8jUU4PVzy2b5LngbSip8mBsxf4e7rSFZVb4Uh),pk(cNaQCDwmmh4dS9LzCgVtyy1e1xjCJ21GUDHe9K98nzb689JvinGV)})"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_repeated_key</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55,{and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(100)),and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(200))})"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_single_sig_xprv</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(tprv8ZgxMBicQKsPdDArR4xSAECuVxeX1jwwSXR4ApKbkYgZiziDc4LdBy2WvJeGDfUSE4UT4hHhbgEwbdq8ajjUHiKDegkwrNU6V55CxcxonVN/*)"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_with_taptree_xprv</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG,{pk(tprv8ZgxMBicQKsPdDArR4xSAECuVxeX1jwwSXR4ApKbkYgZiziDc4LdBy2WvJeGDfUSE4UT4hHhbgEwbdq8ajjUHiKDegkwrNU6V55CxcxonVN/*),pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642)})"</span>
- }
-
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_test_tr_dup_keys</span>() -> <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span> {
- <span class="string">"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG,{pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642),pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642)})"</span>
- }
-
- <span class="macro">macro_rules!</span> <span class="ident">assert_fee_rate</span> {
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">psbt</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fees</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fee_rate</span>:<span class="ident">expr</span> $( ,@<span class="ident">dust_change</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">dust_change</span>:<span class="ident">expr</span> )<span class="op">*</span> )<span class="op">*</span> $( ,@<span class="ident">add_signature</span> $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">add_signature</span>:<span class="ident">expr</span> )<span class="op">*</span> )<span class="op">*</span> ) => ({
- <span class="kw">let</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">psbt</span>.<span class="ident">clone</span>();
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_mut</span>)]</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">psbt</span>.<span class="ident">clone</span>().<span class="ident">extract_tx</span>();
+ <span class="macro">assert!</span>(wallet
+ .database
+ .borrow_mut()
+ .get_script_pubkey_from_path(KeychainKind::External, CACHE_ADDR_BATCH_SIZE * <span class="number">2 </span>- <span class="number">1</span>)
+ .unwrap()
+ .is_some());
+ }
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_wpkh() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_single_sig_csv() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="comment">// and(pk(Alice),older(6))
+ </span><span class="string">"wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),older(6)))"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_a_or_b_plus_csv() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="comment">// or(pk(Alice),and(pk(Bob),older(144)))
+ </span><span class="string">"wsh(or_d(pk(cRjo6jqfVNP33HhSS76UhXETZsGTZYx8FMFvR9kpbtCSV1PmdZdu),and_v(v:pk(cMnkdebixpXMPfkcNEjjGin7s94hiehAH4mLbYkZoh9KSiNNmqC8),older(144))))"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_single_sig_cltv() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="comment">// and(pk(Alice),after(100000))
+ </span><span class="string">"wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(100000)))"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_single_sig() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG)"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_with_taptree() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55,{pk(cPZzKuNmpuUjD1e8jUU4PVzy2b5LngbSip8mBsxf4e7rSFZVb4Uh),pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642)})"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_with_taptree_both_priv() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55,{pk(cPZzKuNmpuUjD1e8jUU4PVzy2b5LngbSip8mBsxf4e7rSFZVb4Uh),pk(cNaQCDwmmh4dS9LzCgVtyy1e1xjCJ21GUDHe9K98nzb689JvinGV)})"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_repeated_key() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55,{and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(100)),and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(200))})"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_single_sig_xprv() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(tprv8ZgxMBicQKsPdDArR4xSAECuVxeX1jwwSXR4ApKbkYgZiziDc4LdBy2WvJeGDfUSE4UT4hHhbgEwbdq8ajjUHiKDegkwrNU6V55CxcxonVN/*)"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_with_taptree_xprv() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG,{pk(tprv8ZgxMBicQKsPdDArR4xSAECuVxeX1jwwSXR4ApKbkYgZiziDc4LdBy2WvJeGDfUSE4UT4hHhbgEwbdq8ajjUHiKDegkwrNU6V55CxcxonVN/*),pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642)})"
+ </span>}
+
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_test_tr_dup_keys() -> <span class="kw-2">&</span><span class="lifetime">'static </span>str {
+ <span class="string">"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG,{pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642),pk(8aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642)})"
+ </span>}
+
+ <span class="macro">macro_rules! </span>assert_fee_rate {
+ (<span class="macro-nonterminal">$psbt</span>:expr, <span class="macro-nonterminal">$fees</span>:expr, <span class="macro-nonterminal">$fee_rate</span>:expr $( ,@dust_change $( <span class="macro-nonterminal">$dust_change</span>:expr )* )* $( ,@add_signature $( <span class="macro-nonterminal">$add_signature</span>:expr )* )* ) => ({
+ <span class="kw">let </span>psbt = <span class="macro-nonterminal">$psbt</span>.clone();
+ <span class="attr">#[allow(unused_mut)]
+ </span><span class="kw">let </span><span class="kw-2">mut </span>tx = <span class="macro-nonterminal">$psbt</span>.clone().extract_tx();
$(
- $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">add_signature</span> )<span class="op">*</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- }
- )<span class="op">*</span>
-
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_mut</span>)]</span>
- <span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_assignments</span>)]</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">dust_change</span> <span class="op">=</span> <span class="bool-val">false</span>;
+ $( <span class="macro-nonterminal">$add_signature </span>)*
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>}
+ )*
+
+ <span class="attr">#[allow(unused_mut)]
+ #[allow(unused_assignments)]
+ </span><span class="kw">let </span><span class="kw-2">mut </span>dust_change = <span class="bool-val">false</span>;
$(
- $( <span class="macro-nonterminal">$</span><span class="macro-nonterminal">dust_change</span> )<span class="op">*</span>
- <span class="ident">dust_change</span> <span class="op">=</span> <span class="bool-val">true</span>;
- )<span class="op">*</span>
-
- <span class="kw">let</span> <span class="ident">fee_amount</span> <span class="op">=</span> <span class="ident">psbt</span>
- .<span class="ident">inputs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">i</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">i</span>.<span class="ident">witness_utxo</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>().<span class="ident">value</span>)
- <span class="op">-</span> <span class="ident">psbt</span>
- .<span class="ident">unsigned_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">o</span><span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">o</span>.<span class="ident">value</span>);
-
- <span class="macro">assert_eq!</span>(<span class="ident">fee_amount</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fees</span>);
-
- <span class="kw">let</span> <span class="ident">tx_fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_wu</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">fees</span>, <span class="ident">tx</span>.<span class="ident">weight</span>());
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">fee_rate</span>;
-
- <span class="kw">if</span> <span class="op">!</span><span class="ident">dust_change</span> {
- <span class="macro">assert!</span>(<span class="ident">tx_fee_rate</span> <span class="op">></span><span class="op">=</span> <span class="ident">fee_rate</span> <span class="op">&&</span> (<span class="ident">tx_fee_rate</span> <span class="op">-</span> <span class="ident">fee_rate</span>).<span class="ident">as_sat_per_vb</span>().<span class="ident">abs</span>() <span class="op"><</span> <span class="number">0.5</span>, <span class="string">"Expected fee rate of {:?}, the tx has {:?}"</span>, <span class="ident">fee_rate</span>, <span class="ident">tx_fee_rate</span>);
- } <span class="kw">else</span> {
- <span class="macro">assert!</span>(<span class="ident">tx_fee_rate</span> <span class="op">></span><span class="op">=</span> <span class="ident">fee_rate</span>, <span class="string">"Expected fee rate of at least {:?}, the tx has {:?}"</span>, <span class="ident">fee_rate</span>, <span class="ident">tx_fee_rate</span>);
+ $( <span class="macro-nonterminal">$dust_change </span>)*
+ dust_change = <span class="bool-val">true</span>;
+ )*
+
+ <span class="kw">let </span>fee_amount = psbt
+ .inputs
+ .iter()
+ .fold(<span class="number">0</span>, |acc, i| acc + i.witness_utxo.as_ref().unwrap().value)
+ - psbt
+ .unsigned_tx
+ .output
+ .iter()
+ .fold(<span class="number">0</span>, |acc, o| acc + o.value);
+
+ <span class="macro">assert_eq!</span>(fee_amount, <span class="macro-nonterminal">$fees</span>);
+
+ <span class="kw">let </span>tx_fee_rate = FeeRate::from_wu(<span class="macro-nonterminal">$fees</span>, tx.weight());
+ <span class="kw">let </span>fee_rate = <span class="macro-nonterminal">$fee_rate</span>;
+
+ <span class="kw">if </span>!dust_change {
+ <span class="macro">assert!</span>(tx_fee_rate >= fee_rate && (tx_fee_rate - fee_rate).as_sat_per_vb().abs() < <span class="number">0.5</span>, <span class="string">"Expected fee rate of {:?}, the tx has {:?}"</span>, fee_rate, tx_fee_rate);
+ } <span class="kw">else </span>{
+ <span class="macro">assert!</span>(tx_fee_rate >= fee_rate, <span class="string">"Expected fee rate of at least {:?}, the tx has {:?}"</span>, fee_rate, tx_fee_rate);
}
});
}
- <span class="macro">macro_rules!</span> <span class="ident">from_str</span> {
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span>:<span class="ident">ty</span>) => {{
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
- <span class="op"><</span><span class="macro-nonterminal">$</span><span class="macro-nonterminal">t</span><span class="op">></span><span class="ident">::from_str</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>).<span class="ident">unwrap</span>()
+ <span class="macro">macro_rules! </span>from_str {
+ (<span class="macro-nonterminal">$e</span>:expr, <span class="macro-nonterminal">$t</span>:ty) => {{
+ <span class="kw">use </span>std::str::FromStr;
+ <<span class="macro-nonterminal">$t</span>>::from_str(<span class="macro-nonterminal">$e</span>).unwrap()
}};
- (<span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>:<span class="ident">expr</span>) => {
- <span class="macro">from_str!</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">e</span>, <span class="kw">_</span>)
+ (<span class="macro-nonterminal">$e</span>:expr) => {
+ <span class="macro">from_str!</span>(<span class="macro-nonterminal">$e</span>, <span class="kw">_</span>)
};
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"NoRecipients"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_empty_recipients</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="ident">wallet</span>.<span class="ident">build_tx</span>().<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"NoUtxosSelected"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_manually_selected_empty_utxos</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">manually_selected_only</span>();
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"Invalid version `0`"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_version_0</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">version</span>(<span class="number">0</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(
- <span class="ident">expected</span> <span class="op">=</span> <span class="string">"TxBuilder requested version `1`, but at least `2` is needed to use OP_CSV"</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_version_1_csv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_csv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">version</span>(<span class="number">1</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_version</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">version</span>(<span class="number">42</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">version</span>, <span class="number">42</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_default_locktime</span>() {
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">get_test_wpkh</span>()));
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"NoRecipients"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_empty_recipients() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ wallet.build_tx().finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"NoUtxosSelected"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_manually_selected_empty_utxos() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .manually_selected_only();
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"Invalid version `0`"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_version_0() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .version(<span class="number">0</span>);
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(
+ expected = <span class="string">"TxBuilder requested version `1`, but at least `2` is needed to use OP_CSV"
+ </span>)]
+ </span><span class="kw">fn </span>test_create_tx_version_1_csv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_csv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .version(<span class="number">1</span>);
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_custom_version() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .version(<span class="number">42</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.version, <span class="number">42</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_default_locktime() {
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (get_test_wpkh()));
+ <span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">MemoryDatabase::new</span>()),
+ Network::Regtest,
+ AnyDatabase::Memory(MemoryDatabase::new()),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">tx_meta</span> <span class="op">=</span> <span class="macro">testutils!</span> {
- @<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">50_000</span> )
+ <span class="kw">let </span>tx_meta = <span class="macro">testutils! </span>{
+ @tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">50_000 </span>)
};
- <span class="comment">// Add the transaction to our db, but do not sync the db.</span>
- <span class="macro">crate::populate_test_db!</span>(<span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(), <span class="ident">tx_meta</span>, <span class="prelude-val">None</span>);
-
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// Since we never synced the wallet we don't have a last_sync_height</span>
- <span class="comment">// we could use to try to prevent fee sniping. We default to 0.</span>
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">lock_time</span>, <span class="ident">PackedLockTime</span>(<span class="number">0</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_fee_sniping_locktime_provided_height</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> <span class="ident">sync_time</span> <span class="op">=</span> <span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">24</span>,
- <span class="ident">timestamp</span>: <span class="number">0</span>,
+ <span class="comment">// Add the transaction to our db, but do not sync the db.
+ </span><span class="macro">crate::populate_test_db!</span>(wallet.database.borrow_mut(), tx_meta, <span class="prelude-val">None</span>);
+
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// Since we never synced the wallet we don't have a last_sync_height
+ // we could use to try to prevent fee sniping. We default to 0.
+ </span><span class="macro">assert_eq!</span>(psbt.unsigned_tx.lock_time, PackedLockTime(<span class="number">0</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_fee_sniping_locktime_provided_height() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>sync_time = SyncTime {
+ block_time: BlockTime {
+ height: <span class="number">24</span>,
+ timestamp: <span class="number">0</span>,
},
};
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_sync_time</span>(<span class="ident">sync_time</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">current_height</span> <span class="op">=</span> <span class="number">25</span>;
- <span class="ident">builder</span>.<span class="ident">current_height</span>(<span class="ident">current_height</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// current_height will override the last sync height</span>
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">lock_time</span>, <span class="ident">PackedLockTime</span>(<span class="ident">current_height</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_fee_sniping_locktime_last_sync</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> <span class="ident">sync_time</span> <span class="op">=</span> <span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="number">25</span>,
- <span class="ident">timestamp</span>: <span class="number">0</span>,
+ wallet
+ .database
+ .borrow_mut()
+ .set_sync_time(sync_time)
+ .unwrap();
+ <span class="kw">let </span>current_height = <span class="number">25</span>;
+ builder.current_height(current_height);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// current_height will override the last sync height
+ </span><span class="macro">assert_eq!</span>(psbt.unsigned_tx.lock_time, PackedLockTime(current_height));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_fee_sniping_locktime_last_sync() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>sync_time = SyncTime {
+ block_time: BlockTime {
+ height: <span class="number">25</span>,
+ timestamp: <span class="number">0</span>,
},
};
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_sync_time</span>(<span class="ident">sync_time</span>.<span class="ident">clone</span>())
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// If there's no current_height we're left with using the last sync height</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">lock_time</span>,
- <span class="ident">PackedLockTime</span>(<span class="ident">sync_time</span>.<span class="ident">block_time</span>.<span class="ident">height</span>)
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_default_locktime_cltv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_cltv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">lock_time</span>, <span class="ident">PackedLockTime</span>(<span class="number">100_000</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_locktime</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">current_height</span>(<span class="number">630_001</span>)
- .<span class="ident">nlocktime</span>(<span class="ident">LockTime::from_height</span>(<span class="number">630_000</span>).<span class="ident">unwrap</span>());
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// When we explicitly specify a nlocktime</span>
- <span class="comment">// we don't try any fee sniping prevention trick</span>
- <span class="comment">// (we ignore the current_height)</span>
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">lock_time</span>, <span class="ident">PackedLockTime</span>(<span class="number">630_000</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_locktime_compatible_with_cltv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_cltv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">nlocktime</span>(<span class="ident">LockTime::from_height</span>(<span class="number">630_000</span>).<span class="ident">unwrap</span>());
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">lock_time</span>, <span class="ident">PackedLockTime</span>(<span class="number">630_000</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(
- <span class="ident">expected</span> <span class="op">=</span> <span class="string">"TxBuilder requested timelock of `Blocks(Height(50000))`, but at least `Blocks(Height(100000))` is required to spend from this script"</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_locktime_incompatible_with_cltv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_cltv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">nlocktime</span>(<span class="ident">LockTime::from_height</span>(<span class="number">50000</span>).<span class="ident">unwrap</span>());
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_no_rbf_csv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_csv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">6</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_with_default_rbf_csv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_csv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="comment">// When CSV is enabled it takes precedence over the rbf value (unless forced by the user).</span>
- <span class="comment">// It will be set to the OP_CSV value, in this case 6</span>
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">6</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(
- <span class="ident">expected</span> <span class="op">=</span> <span class="string">"Cannot enable RBF with nSequence `Sequence(3)` given a required OP_CSV of `Sequence(6)`"</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_with_custom_rbf_csv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_csv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf_with_sequence</span>(<span class="ident">Sequence</span>(<span class="number">3</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_no_rbf_cltv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_cltv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">0xFFFFFFFE</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"Cannot enable RBF with a nSequence >= 0xFFFFFFFE"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_invalid_rbf_sequence</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf_with_sequence</span>(<span class="ident">Sequence</span>(<span class="number">0xFFFFFFFE</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_rbf_sequence</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf_with_sequence</span>(<span class="ident">Sequence</span>(<span class="number">0xDEADBEEF</span>));
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">0xDEADBEEF</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_default_sequence</span>() {
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">get_test_wpkh</span>()));
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
+ wallet
+ .database
+ .borrow_mut()
+ .set_sync_time(sync_time.clone())
+ .unwrap();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// If there's no current_height we're left with using the last sync height
+ </span><span class="macro">assert_eq!</span>(
+ psbt.unsigned_tx.lock_time,
+ PackedLockTime(sync_time.block_time.height)
+ );
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_default_locktime_cltv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_cltv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.lock_time, PackedLockTime(<span class="number">100_000</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_custom_locktime() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .current_height(<span class="number">630_001</span>)
+ .nlocktime(LockTime::from_height(<span class="number">630_000</span>).unwrap());
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// When we explicitly specify a nlocktime
+ // we don't try any fee sniping prevention trick
+ // (we ignore the current_height)
+ </span><span class="macro">assert_eq!</span>(psbt.unsigned_tx.lock_time, PackedLockTime(<span class="number">630_000</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_custom_locktime_compatible_with_cltv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_cltv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .nlocktime(LockTime::from_height(<span class="number">630_000</span>).unwrap());
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.lock_time, PackedLockTime(<span class="number">630_000</span>));
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(
+ expected = <span class="string">"TxBuilder requested timelock of `Blocks(Height(50000))`, but at least `Blocks(Height(100000))` is required to spend from this script"
+ </span>)]
+ </span><span class="kw">fn </span>test_create_tx_custom_locktime_incompatible_with_cltv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_cltv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .nlocktime(LockTime::from_height(<span class="number">50000</span>).unwrap());
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_no_rbf_csv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_csv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">6</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_with_default_rbf_csv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_csv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ <span class="comment">// When CSV is enabled it takes precedence over the rbf value (unless forced by the user).
+ // It will be set to the OP_CSV value, in this case 6
+ </span><span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">6</span>));
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(
+ expected = <span class="string">"Cannot enable RBF with nSequence `Sequence(3)` given a required OP_CSV of `Sequence(6)`"
+ </span>)]
+ </span><span class="kw">fn </span>test_create_tx_with_custom_rbf_csv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_csv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf_with_sequence(Sequence(<span class="number">3</span>));
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_no_rbf_cltv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_cltv());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">0xFFFFFFFE</span>));
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"Cannot enable RBF with a nSequence >= 0xFFFFFFFE"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_invalid_rbf_sequence() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf_with_sequence(Sequence(<span class="number">0xFFFFFFFE</span>));
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_custom_rbf_sequence() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf_with_sequence(Sequence(<span class="number">0xDEADBEEF</span>));
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">0xDEADBEEF</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_default_sequence() {
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (get_test_wpkh()));
+ <span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">MemoryDatabase::new</span>()),
+ Network::Regtest,
+ AnyDatabase::Memory(MemoryDatabase::new()),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">tx_meta</span> <span class="op">=</span> <span class="macro">testutils!</span> {
- @<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">50_000</span> )
+ <span class="kw">let </span>tx_meta = <span class="macro">testutils! </span>{
+ @tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">50_000 </span>)
};
- <span class="comment">// Add the transaction to our db, but do not sync the db. Unsynced db</span>
- <span class="comment">// should trigger the default sequence value for a new transaction as 0xFFFFFFFF</span>
- <span class="macro">crate::populate_test_db!</span>(<span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(), <span class="ident">tx_meta</span>, <span class="prelude-val">None</span>);
-
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">0xFFFFFFFF</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(
- <span class="ident">expected</span> <span class="op">=</span> <span class="string">"The `change_policy` can be set only if the wallet has a change_descriptor"</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_change_policy_no_internal</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">do_not_spend_change</span>();
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_drain_wallet_and_drain_to</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="comment">// Add the transaction to our db, but do not sync the db. Unsynced db
+ // should trigger the default sequence value for a new transaction as 0xFFFFFFFF
+ </span><span class="macro">crate::populate_test_db!</span>(wallet.database.borrow_mut(), tx_meta, <span class="prelude-val">None</span>);
+
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">0xFFFFFFFF</span>));
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(
+ expected = <span class="string">"The `change_policy` can be set only if the wallet has a change_descriptor"
+ </span>)]
+ </span><span class="kw">fn </span>test_create_tx_change_policy_no_internal() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .do_not_spend_change();
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_drain_wallet_and_drain_to() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>,
- <span class="number">50_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_drain_wallet_and_drain_to_and_with_recipient</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">drain_addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">20_000</span>)
- .<span class="ident">drain_to</span>(<span class="ident">drain_addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">outputs</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>;
-
- <span class="macro">assert_eq!</span>(<span class="ident">outputs</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="kw">let</span> <span class="ident">main_output</span> <span class="op">=</span> <span class="ident">outputs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">drain_output</span> <span class="op">=</span> <span class="ident">outputs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">drain_addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">main_output</span>.<span class="ident">value</span>, <span class="number">20_000</span>,);
- <span class="macro">assert_eq!</span>(<span class="ident">drain_output</span>.<span class="ident">value</span>, <span class="number">30_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_drain_to_and_utxos</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">get_available_utxos</span>()
- .<span class="ident">unwrap</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">u</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">u</span>.<span class="ident">outpoint</span>)
- .<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">add_utxos</span>(<span class="kw-2">&</span><span class="ident">utxos</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ psbt.unsigned_tx.output[<span class="number">0</span>].value,
+ <span class="number">50_000 </span>- details.fee.unwrap_or(<span class="number">0</span>)
+ );
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_drain_wallet_and_drain_to_and_with_recipient() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt"</span>).unwrap();
+ <span class="kw">let </span>drain_addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">20_000</span>)
+ .drain_to(drain_addr.script_pubkey())
+ .drain_wallet();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+ <span class="kw">let </span>outputs = psbt.unsigned_tx.output;
+
+ <span class="macro">assert_eq!</span>(outputs.len(), <span class="number">2</span>);
+ <span class="kw">let </span>main_output = outputs
+ .iter()
+ .find(|x| x.script_pubkey == addr.script_pubkey())
+ .unwrap();
+ <span class="kw">let </span>drain_output = outputs
+ .iter()
+ .find(|x| x.script_pubkey == drain_addr.script_pubkey())
+ .unwrap();
+ <span class="macro">assert_eq!</span>(main_output.value, <span class="number">20_000</span>,);
+ <span class="macro">assert_eq!</span>(drain_output.value, <span class="number">30_000 </span>- details.fee.unwrap_or(<span class="number">0</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_drain_to_and_utxos() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span>utxos: Vec<<span class="kw">_</span>> = wallet
+ .get_available_utxos()
+ .unwrap()
+ .into_iter()
+ .map(|(u, <span class="kw">_</span>)| u.outpoint)
+ .collect();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .add_utxos(<span class="kw-2">&</span>utxos)
+ .unwrap();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>,
- <span class="number">50_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"NoRecipients"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_drain_to_no_drain_wallet_no_utxos</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">drain_addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">drain_addr</span>.<span class="ident">script_pubkey</span>());
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_default_fee_rate</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::default</span>(), @<span class="ident">add_signature</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_fee_rate</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>));
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>), @<span class="ident">add_signature</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_absolute_fee</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">fee_absolute</span>(<span class="number">100</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">100</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ psbt.unsigned_tx.output[<span class="number">0</span>].value,
+ <span class="number">50_000 </span>- details.fee.unwrap_or(<span class="number">0</span>)
+ );
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"NoRecipients"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_drain_to_no_drain_wallet_no_utxos() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>drain_addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(drain_addr.script_pubkey());
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_default_fee_rate() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::default(), @add_signature);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_custom_fee_rate() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>));
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">5.0</span>), @add_signature);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_absolute_fee() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .fee_absolute(<span class="number">100</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">100</span>);
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>,
- <span class="number">50_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ psbt.unsigned_tx.output[<span class="number">0</span>].value,
+ <span class="number">50_000 </span>- details.fee.unwrap_or(<span class="number">0</span>)
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_absolute_zero_fee</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">fee_absolute</span>(<span class="number">0</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_absolute_zero_fee() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .fee_absolute(<span class="number">0</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">0</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">0</span>);
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>,
- <span class="number">50_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_absolute_high_fee</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">fee_absolute</span>(<span class="number">60_000</span>);
- <span class="kw">let</span> (<span class="ident">_psbt</span>, <span class="ident">_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_add_change</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">super</span>::tx_builder::TxOrdering</span>;
-
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">ordering</span>(<span class="ident">TxOrdering::Untouched</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>, <span class="number">25_000</span>);
+ psbt.unsigned_tx.output[<span class="number">0</span>].value,
+ <span class="number">50_000 </span>- details.fee.unwrap_or(<span class="number">0</span>)
+ );
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_absolute_high_fee() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .fee_absolute(<span class="number">60_000</span>);
+ <span class="kw">let </span>(_psbt, _details) = builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_add_change() {
+ <span class="kw">use </span><span class="kw">super</span>::tx_builder::TxOrdering;
+
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .ordering(TxOrdering::Untouched);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output[<span class="number">0</span>].value, <span class="number">25_000</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">1</span>].<span class="ident">value</span>,
- <span class="number">25_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_skip_change_dust</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">49_800</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>, <span class="number">49_800</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">200</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_drain_to_dust_amount</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="comment">// very high fee rate, so that the only output would be below dust</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">453.0</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_ordering_respected</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>)
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">10_000</span>)
- .<span class="ident">ordering</span>(<span class="ident"><span class="kw">super</span>::tx_builder::TxOrdering::Bip69Lexicographic</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">3</span>);
+ psbt.unsigned_tx.output[<span class="number">1</span>].value,
+ <span class="number">25_000 </span>- details.fee.unwrap_or(<span class="number">0</span>)
+ );
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_skip_change_dust() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">49_800</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output[<span class="number">0</span>].value, <span class="number">49_800</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">200</span>);
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_drain_to_dust_amount() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="comment">// very high fee rate, so that the only output would be below dust
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">453.0</span>));
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_ordering_respected() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">30_000</span>)
+ .add_recipient(addr.script_pubkey(), <span class="number">10_000</span>)
+ .ordering(<span class="kw">super</span>::tx_builder::TxOrdering::Bip69Lexicographic);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output.len(), <span class="number">3</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>,
- <span class="number">10_000</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ psbt.unsigned_tx.output[<span class="number">0</span>].value,
+ <span class="number">10_000 </span>- details.fee.unwrap_or(<span class="number">0</span>)
);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">1</span>].<span class="ident">value</span>, <span class="number">10_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="number">2</span>].<span class="ident">value</span>, <span class="number">30_000</span>);
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output[<span class="number">1</span>].value, <span class="number">10_000</span>);
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.output[<span class="number">2</span>].value, <span class="number">30_000</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_default_sighash</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_default_sighash() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">30_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">sighash_type</span>, <span class="prelude-val">None</span>);
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].sighash_type, <span class="prelude-val">None</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_custom_sighash</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>)
- .<span class="ident">sighash</span>(<span class="ident">bitcoin::EcdsaSighashType::Single</span>.<span class="ident">into</span>());
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_custom_sighash() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">30_000</span>)
+ .sighash(bitcoin::EcdsaSighashType::Single.into());
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">sighash_type</span>,
- <span class="prelude-val">Some</span>(<span class="ident">bitcoin::EcdsaSighashType::Single</span>.<span class="ident">into</span>())
+ psbt.inputs[<span class="number">0</span>].sighash_type,
+ <span class="prelude-val">Some</span>(bitcoin::EcdsaSighashType::Single.into())
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_input_hd_keypaths</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>::{<span class="ident">DerivationPath</span>, <span class="ident">Fingerprint</span>};
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_input_hd_keypaths() {
+ <span class="kw">use </span>bitcoin::util::bip32::{DerivationPath, Fingerprint};
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh([d34db33f/44'/0'/0']tpubDEnoLuPdBep9bzw5LoGYpsxUQYheRQ9gcgrJhJEcdKFB9cWQRyYmkCyRoTqeD4tJYiVVgt6A3rN6rWn9RYhR9sBsGxji29LYWHuKKbdb1ev/0/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh([d34db33f/44'/0'/0']tpubDEnoLuPdBep9bzw5LoGYpsxUQYheRQ9gcgrJhJEcdKFB9cWQRyYmkCyRoTqeD4tJYiVVgt6A3rN6rWn9RYhR9sBsGxji29LYWHuKKbdb1ev/0/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">bip32_derivation</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].bip32_derivation.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">bip32_derivation</span>.<span class="ident">values</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>(),
+ psbt.inputs[<span class="number">0</span>].bip32_derivation.values().next().unwrap(),
<span class="kw-2">&</span>(
- <span class="ident">Fingerprint::from_str</span>(<span class="string">"d34db33f"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/0/0"</span>).<span class="ident">unwrap</span>()
+ Fingerprint::from_str(<span class="string">"d34db33f"</span>).unwrap(),
+ DerivationPath::from_str(<span class="string">"m/44'/0'/0'/0/0"</span>).unwrap()
)
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_output_hd_keypaths</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>::{<span class="ident">DerivationPath</span>, <span class="ident">Fingerprint</span>};
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_output_hd_keypaths() {
+ <span class="kw">use </span>bitcoin::util::bip32::{DerivationPath, Fingerprint};
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh([d34db33f/44'/0'/0']tpubDEnoLuPdBep9bzw5LoGYpsxUQYheRQ9gcgrJhJEcdKFB9cWQRyYmkCyRoTqeD4tJYiVVgt6A3rN6rWn9RYhR9sBsGxji29LYWHuKKbdb1ev/0/*)"</span>);
- <span class="comment">// cache some addresses</span>
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh([d34db33f/44'/0'/0']tpubDEnoLuPdBep9bzw5LoGYpsxUQYheRQ9gcgrJhJEcdKFB9cWQRyYmkCyRoTqeD4tJYiVVgt6A3rN6rWn9RYhR9sBsGxji29LYWHuKKbdb1ev/0/*)"</span>);
+ <span class="comment">// cache some addresses
+ </span>wallet.get_address(New).unwrap();
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">5</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = <span class="macro">testutils!</span>(@external descriptors, <span class="number">5</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">outputs</span>[<span class="number">0</span>].<span class="ident">bip32_derivation</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(psbt.outputs[<span class="number">0</span>].bip32_derivation.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">outputs</span>[<span class="number">0</span>].<span class="ident">bip32_derivation</span>.<span class="ident">values</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>(),
+ psbt.outputs[<span class="number">0</span>].bip32_derivation.values().next().unwrap(),
<span class="kw-2">&</span>(
- <span class="ident">Fingerprint::from_str</span>(<span class="string">"d34db33f"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">DerivationPath::from_str</span>(<span class="string">"m/44'/0'/0'/0/5"</span>).<span class="ident">unwrap</span>()
+ Fingerprint::from_str(<span class="string">"d34db33f"</span>).unwrap(),
+ DerivationPath::from_str(<span class="string">"m/44'/0'/0'/0/5"</span>).unwrap()
)
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_set_redeem_script_p2sh</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_set_redeem_script_p2sh() {
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"sh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"sh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">redeem_script</span>,
- <span class="prelude-val">Some</span>(<span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
- <span class="string">"21032b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3ac"</span>
- )
- .<span class="ident">unwrap</span>()
+ psbt.inputs[<span class="number">0</span>].redeem_script,
+ <span class="prelude-val">Some</span>(Script::from(
+ Vec::<u8>::from_hex(
+ <span class="string">"21032b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3ac"
+ </span>)
+ .unwrap()
))
);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_script</span>, <span class="prelude-val">None</span>);
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].witness_script, <span class="prelude-val">None</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_set_witness_script_p2wsh</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_set_witness_script_p2wsh() {
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">redeem_script</span>, <span class="prelude-val">None</span>);
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].redeem_script, <span class="prelude-val">None</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_script</span>,
- <span class="prelude-val">Some</span>(<span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
- <span class="string">"21032b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3ac"</span>
- )
- .<span class="ident">unwrap</span>()
+ psbt.inputs[<span class="number">0</span>].witness_script,
+ <span class="prelude-val">Some</span>(Script::from(
+ Vec::<u8>::from_hex(
+ <span class="string">"21032b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3ac"
+ </span>)
+ .unwrap()
))
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_set_redeem_witness_script_p2wsh_p2sh</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_set_redeem_witness_script_p2wsh_p2sh() {
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"sh(wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"sh(wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::from</span>(
- <span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(
+ <span class="kw">let </span>script = Script::from(
+ Vec::<u8>::from_hex(
<span class="string">"21032b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3ac"</span>,
)
- .<span class="ident">unwrap</span>(),
+ .unwrap(),
);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">redeem_script</span>, <span class="prelude-val">Some</span>(<span class="ident">script</span>.<span class="ident">to_v0_p2wsh</span>()));
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_script</span>, <span class="prelude-val">Some</span>(<span class="ident">script</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_non_witness_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"sh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span>.<span class="ident">is_some</span>());
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span>.<span class="ident">is_none</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_only_witness_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">only_witness_utxo</span>()
- .<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span>.<span class="ident">is_none</span>());
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span>.<span class="ident">is_some</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_shwpkh_has_witness_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"sh(wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span>.<span class="ident">is_some</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_both_non_witness_utxo_and_witness_utxo_default</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span>.<span class="ident">is_some</span>());
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span>.<span class="ident">is_some</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_add_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">small_output_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].redeem_script, <span class="prelude-val">Some</span>(script.to_v0_p2wsh()));
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].witness_script, <span class="prelude-val">Some</span>(script));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_non_witness_utxo() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"sh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].non_witness_utxo.is_some());
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].witness_utxo.is_none());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_only_witness_utxo() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .only_witness_utxo()
+ .drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].non_witness_utxo.is_none());
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].witness_utxo.is_some());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_shwpkh_has_witness_utxo() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"sh(wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].witness_utxo.is_some());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_both_non_witness_utxo_and_witness_utxo_default() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"wsh(pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].non_witness_utxo.is_some());
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>].witness_utxo.is_some());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_add_utxo() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>small_output_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>)
- .<span class="ident">add_utxo</span>(<span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">small_output_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">30_000</span>)
+ .add_utxo(OutPoint {
+ txid: small_output_txid,
+ vout: <span class="number">0</span>,
})
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ .unwrap();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(),
+ psbt.unsigned_tx.input.len(),
<span class="number">2</span>,
- <span class="string">"should add an additional input since 25_000 < 30_000"</span>
- );
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="number">75_000</span>, <span class="string">"total should be sum of both inputs"</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_manually_selected_insufficient</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">small_output_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ <span class="string">"should add an additional input since 25_000 < 30_000"
+ </span>);
+ <span class="macro">assert_eq!</span>(details.sent, <span class="number">75_000</span>, <span class="string">"total should be sum of both inputs"</span>);
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_manually_selected_insufficient() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>small_output_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>)
- .<span class="ident">add_utxo</span>(<span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">small_output_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">30_000</span>)
+ .add_utxo(OutPoint {
+ txid: small_output_txid,
+ vout: <span class="number">0</span>,
})
- .<span class="ident">unwrap</span>()
- .<span class="ident">manually_selected_only</span>();
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ .unwrap()
+ .manually_selected_only();
+ builder.finish().unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"SpendingPolicyRequired(External)"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_policy_path_required</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_a_or_b_plus_csv</span>());
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"SpendingPolicyRequired(External)"</span>)]
+ </span><span class="kw">fn </span>test_create_tx_policy_path_required() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_a_or_b_plus_csv());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">30_000</span>);
+ builder.finish().unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_policy_path_no_csv</span>() {
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">get_test_wpkh</span>()));
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_policy_path_no_csv() {
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (get_test_wpkh()));
+ <span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">MemoryDatabase::new</span>()),
+ Network::Regtest,
+ AnyDatabase::Memory(MemoryDatabase::new()),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">tx_meta</span> <span class="op">=</span> <span class="macro">testutils!</span> {
- @<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">50_000</span> )
+ <span class="kw">let </span>tx_meta = <span class="macro">testutils! </span>{
+ @tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">50_000 </span>)
};
- <span class="comment">// Add the transaction to our db, but do not sync the db. Unsynced db</span>
- <span class="comment">// should trigger the default sequence value for a new transaction as 0xFFFFFFFF</span>
- <span class="macro">crate::populate_test_db!</span>(<span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(), <span class="ident">tx_meta</span>, <span class="prelude-val">None</span>);
-
- <span class="kw">let</span> <span class="ident">external_policy</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">policies</span>(<span class="ident">KeychainKind::External</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">root_id</span> <span class="op">=</span> <span class="ident">external_policy</span>.<span class="ident">id</span>;
- <span class="comment">// child #0 is just the key "A"</span>
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="macro">vec!</span>[(<span class="ident">root_id</span>, <span class="macro">vec!</span>[<span class="number">0</span>])].<span class="ident">into_iter</span>().<span class="ident">collect</span>();
-
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>)
- .<span class="ident">policy_path</span>(<span class="ident">path</span>, <span class="ident">KeychainKind::External</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">0xFFFFFFFF</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_policy_path_use_csv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_a_or_b_plus_csv</span>());
-
- <span class="kw">let</span> <span class="ident">external_policy</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">policies</span>(<span class="ident">KeychainKind::External</span>).<span class="ident">unwrap</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">root_id</span> <span class="op">=</span> <span class="ident">external_policy</span>.<span class="ident">id</span>;
- <span class="comment">// child #1 is or(pk(B),older(144))</span>
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="macro">vec!</span>[(<span class="ident">root_id</span>, <span class="macro">vec!</span>[<span class="number">1</span>])].<span class="ident">into_iter</span>().<span class="ident">collect</span>();
-
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">30_000</span>)
- .<span class="ident">policy_path</span>(<span class="ident">path</span>, <span class="ident">KeychainKind::External</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">sequence</span>, <span class="ident">Sequence</span>(<span class="number">144</span>));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_global_xpubs_with_origin</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
-
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh([73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">add_global_xpubs</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bip32::Fingerprint::from_hex</span>(<span class="string">"73756c7f"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="string">"m/48'/0'/0'/2'"</span>).<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">xpub</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">xpub</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span>(<span class="ident">fingerprint</span>, <span class="ident">path</span>)));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_add_foreign_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet1</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> (<span class="ident">wallet2</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(cVbZ8ovhye9AoAHFsqobCf7LxbXDAECy9Kb8TZdfsDYMZGBUyCnm)"</span>);
-
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">wallet2</span>.<span class="ident">list_unspent</span>().<span class="ident">unwrap</span>().<span class="ident">remove</span>(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">foreign_utxo_satisfaction</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">psbt::Input</span> {
- <span class="ident">witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">utxo</span>.<span class="ident">txout</span>.<span class="ident">clone</span>()),
- ..<span class="ident">Default::default</span>()
+ <span class="comment">// Add the transaction to our db, but do not sync the db. Unsynced db
+ // should trigger the default sequence value for a new transaction as 0xFFFFFFFF
+ </span><span class="macro">crate::populate_test_db!</span>(wallet.database.borrow_mut(), tx_meta, <span class="prelude-val">None</span>);
+
+ <span class="kw">let </span>external_policy = wallet.policies(KeychainKind::External).unwrap().unwrap();
+ <span class="kw">let </span>root_id = external_policy.id;
+ <span class="comment">// child #0 is just the key "A"
+ </span><span class="kw">let </span>path = <span class="macro">vec!</span>[(root_id, <span class="macro">vec!</span>[<span class="number">0</span>])].into_iter().collect();
+
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">30_000</span>)
+ .policy_path(path, KeychainKind::External);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">0xFFFFFFFF</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_policy_path_use_csv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_a_or_b_plus_csv());
+
+ <span class="kw">let </span>external_policy = wallet.policies(KeychainKind::External).unwrap().unwrap();
+ <span class="kw">let </span>root_id = external_policy.id;
+ <span class="comment">// child #1 is or(pk(B),older(144))
+ </span><span class="kw">let </span>path = <span class="macro">vec!</span>[(root_id, <span class="macro">vec!</span>[<span class="number">1</span>])].into_iter().collect();
+
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">30_000</span>)
+ .policy_path(path, KeychainKind::External);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.unsigned_tx.input[<span class="number">0</span>].sequence, Sequence(<span class="number">144</span>));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_global_xpubs_with_origin() {
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
+ <span class="kw">use </span>bitcoin::util::bip32;
+
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh([73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .add_global_xpubs();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>key = bip32::ExtendedPubKey::from_str(<span class="string">"tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3"</span>).unwrap();
+ <span class="kw">let </span>fingerprint = bip32::Fingerprint::from_hex(<span class="string">"73756c7f"</span>).unwrap();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(<span class="string">"m/48'/0'/0'/2'"</span>).unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.xpub.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(psbt.xpub.get(<span class="kw-2">&</span>key), <span class="prelude-val">Some</span>(<span class="kw-2">&</span>(fingerprint, path)));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_add_foreign_utxo() {
+ <span class="kw">let </span>(wallet1, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>(wallet2, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"wpkh(cVbZ8ovhye9AoAHFsqobCf7LxbXDAECy9Kb8TZdfsDYMZGBUyCnm)"</span>);
+
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span>utxo = wallet2.list_unspent().unwrap().remove(<span class="number">0</span>);
+ <span class="kw">let </span>foreign_utxo_satisfaction = wallet2
+ .get_descriptor_for_keychain(KeychainKind::External)
+ .max_satisfaction_weight()
+ .unwrap();
+
+ <span class="kw">let </span>psbt_input = psbt::Input {
+ witness_utxo: <span class="prelude-val">Some</span>(utxo.txout.clone()),
+ ..Default::default()
};
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet1</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">60_000</span>)
- .<span class="ident">only_witness_utxo</span>()
- .<span class="ident">add_foreign_utxo</span>(<span class="ident">utxo</span>.<span class="ident">outpoint</span>, <span class="ident">psbt_input</span>, <span class="ident">foreign_utxo_satisfaction</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet1.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">60_000</span>)
+ .only_witness_utxo()
+ .add_foreign_utxo(utxo.outpoint, psbt_input, foreign_utxo_satisfaction)
+ .unwrap();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, details) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">details</span>.<span class="ident">sent</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">received</span>,
- <span class="number">10_000</span> <span class="op">+</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>),
- <span class="string">"we should have only net spent ~10_000"</span>
- );
+ details.sent - details.received,
+ <span class="number">10_000 </span>+ details.fee.unwrap_or(<span class="number">0</span>),
+ <span class="string">"we should have only net spent ~10_000"
+ </span>);
<span class="macro">assert!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>
- .<span class="ident">input</span>
- .<span class="ident">iter</span>()
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> <span class="ident">input</span>.<span class="ident">previous_output</span> <span class="op">==</span> <span class="ident">utxo</span>.<span class="ident">outpoint</span>),
- <span class="string">"foreign_utxo should be in there"</span>
- );
-
- <span class="kw">let</span> <span class="ident">finished</span> <span class="op">=</span> <span class="ident">wallet1</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ psbt.unsigned_tx
+ .input
+ .iter()
+ .any(|input| input.previous_output == utxo.outpoint),
+ <span class="string">"foreign_utxo should be in there"
+ </span>);
+
+ <span class="kw">let </span>finished = wallet1
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ trust_witness_utxo: <span class="bool-val">true</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="op">!</span><span class="ident">finished</span>,
- <span class="string">"only one of the inputs should have been signed so far"</span>
- );
-
- <span class="kw">let</span> <span class="ident">finished</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ !finished,
+ <span class="string">"only one of the inputs should have been signed so far"
+ </span>);
+
+ <span class="kw">let </span>finished = wallet2
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ trust_witness_utxo: <span class="bool-val">true</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finished</span>, <span class="string">"all the inputs should have been signed now"</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"Generic(\"Foreign utxo missing witness_utxo or non_witness_utxo\")"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_add_foreign_utxo_invalid_psbt_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">list_unspent</span>().<span class="ident">unwrap</span>()[<span class="number">0</span>].<span class="ident">outpoint</span>;
- <span class="kw">let</span> <span class="ident">foreign_utxo_satisfaction</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_foreign_utxo</span>(<span class="ident">outpoint</span>, <span class="ident">psbt::Input::default</span>(), <span class="ident">foreign_utxo_satisfaction</span>)
- .<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_add_foreign_utxo_where_outpoint_doesnt_match_psbt_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet1</span>, <span class="kw">_</span>, <span class="ident">txid1</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> (<span class="ident">wallet2</span>, <span class="kw">_</span>, <span class="ident">txid2</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(cVbZ8ovhye9AoAHFsqobCf7LxbXDAECy9Kb8TZdfsDYMZGBUyCnm)"</span>);
-
- <span class="kw">let</span> <span class="ident">utxo2</span> <span class="op">=</span> <span class="ident">wallet2</span>.<span class="ident">list_unspent</span>().<span class="ident">unwrap</span>().<span class="ident">remove</span>(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">tx1</span> <span class="op">=</span> <span class="ident">wallet1</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">txid1</span>, <span class="bool-val">true</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>()
- .<span class="ident">transaction</span>
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tx2</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">txid2</span>, <span class="bool-val">true</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>()
- .<span class="ident">transaction</span>
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">satisfaction_weight</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet1</span>.<span class="ident">build_tx</span>();
+ .unwrap();
+ <span class="macro">assert!</span>(finished, <span class="string">"all the inputs should have been signed now"</span>);
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"Generic(\"Foreign utxo missing witness_utxo or non_witness_utxo\")"</span>)]
+ </span><span class="kw">fn </span>test_add_foreign_utxo_invalid_psbt_input() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ <span class="kw">let </span>outpoint = wallet.list_unspent().unwrap()[<span class="number">0</span>].outpoint;
+ <span class="kw">let </span>foreign_utxo_satisfaction = wallet
+ .get_descriptor_for_keychain(KeychainKind::External)
+ .max_satisfaction_weight()
+ .unwrap();
+ builder
+ .add_foreign_utxo(outpoint, psbt::Input::default(), foreign_utxo_satisfaction)
+ .unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_add_foreign_utxo_where_outpoint_doesnt_match_psbt_input() {
+ <span class="kw">let </span>(wallet1, <span class="kw">_</span>, txid1) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>(wallet2, <span class="kw">_</span>, txid2) =
+ get_funded_wallet(<span class="string">"wpkh(cVbZ8ovhye9AoAHFsqobCf7LxbXDAECy9Kb8TZdfsDYMZGBUyCnm)"</span>);
+
+ <span class="kw">let </span>utxo2 = wallet2.list_unspent().unwrap().remove(<span class="number">0</span>);
+ <span class="kw">let </span>tx1 = wallet1
+ .database
+ .borrow()
+ .get_tx(<span class="kw-2">&</span>txid1, <span class="bool-val">true</span>)
+ .unwrap()
+ .unwrap()
+ .transaction
+ .unwrap();
+ <span class="kw">let </span>tx2 = wallet2
+ .database
+ .borrow()
+ .get_tx(<span class="kw-2">&</span>txid2, <span class="bool-val">true</span>)
+ .unwrap()
+ .unwrap()
+ .transaction
+ .unwrap();
+
+ <span class="kw">let </span>satisfaction_weight = wallet2
+ .get_descriptor_for_keychain(KeychainKind::External)
+ .max_satisfaction_weight()
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet1.build_tx();
<span class="macro">assert!</span>(
- <span class="ident">builder</span>
- .<span class="ident">add_foreign_utxo</span>(
- <span class="ident">utxo2</span>.<span class="ident">outpoint</span>,
- <span class="ident">psbt::Input</span> {
- <span class="ident">non_witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">tx1</span>),
- ..<span class="ident">Default::default</span>()
+ builder
+ .add_foreign_utxo(
+ utxo2.outpoint,
+ psbt::Input {
+ non_witness_utxo: <span class="prelude-val">Some</span>(tx1),
+ ..Default::default()
},
- <span class="ident">satisfaction_weight</span>
+ satisfaction_weight
)
- .<span class="ident">is_err</span>(),
- <span class="string">"should fail when outpoint doesn't match psbt_input"</span>
- );
+ .is_err(),
+ <span class="string">"should fail when outpoint doesn't match psbt_input"
+ </span>);
<span class="macro">assert!</span>(
- <span class="ident">builder</span>
- .<span class="ident">add_foreign_utxo</span>(
- <span class="ident">utxo2</span>.<span class="ident">outpoint</span>,
- <span class="ident">psbt::Input</span> {
- <span class="ident">non_witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">tx2</span>),
- ..<span class="ident">Default::default</span>()
+ builder
+ .add_foreign_utxo(
+ utxo2.outpoint,
+ psbt::Input {
+ non_witness_utxo: <span class="prelude-val">Some</span>(tx2),
+ ..Default::default()
},
- <span class="ident">satisfaction_weight</span>
+ satisfaction_weight
)
- .<span class="ident">is_ok</span>(),
- <span class="string">"shoulld be ok when outpoint does match psbt_input"</span>
- );
+ .is_ok(),
+ <span class="string">"shoulld be ok when outpoint does match psbt_input"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_add_foreign_utxo_only_witness_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet1</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> (<span class="ident">wallet2</span>, <span class="kw">_</span>, <span class="ident">txid2</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(cVbZ8ovhye9AoAHFsqobCf7LxbXDAECy9Kb8TZdfsDYMZGBUyCnm)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">utxo2</span> <span class="op">=</span> <span class="ident">wallet2</span>.<span class="ident">list_unspent</span>().<span class="ident">unwrap</span>().<span class="ident">remove</span>(<span class="number">0</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_add_foreign_utxo_only_witness_utxo() {
+ <span class="kw">let </span>(wallet1, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>(wallet2, <span class="kw">_</span>, txid2) =
+ get_funded_wallet(<span class="string">"wpkh(cVbZ8ovhye9AoAHFsqobCf7LxbXDAECy9Kb8TZdfsDYMZGBUyCnm)"</span>);
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span>utxo2 = wallet2.list_unspent().unwrap().remove(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">satisfaction_weight</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>satisfaction_weight = wallet2
+ .get_descriptor_for_keychain(KeychainKind::External)
+ .max_satisfaction_weight()
+ .unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet1</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">60_000</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet1.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">60_000</span>);
{
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">clone</span>();
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">psbt::Input</span> {
- <span class="ident">witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">utxo2</span>.<span class="ident">txout</span>.<span class="ident">clone</span>()),
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = builder.clone();
+ <span class="kw">let </span>psbt_input = psbt::Input {
+ witness_utxo: <span class="prelude-val">Some</span>(utxo2.txout.clone()),
+ ..Default::default()
};
- <span class="ident">builder</span>
- .<span class="ident">add_foreign_utxo</span>(<span class="ident">utxo2</span>.<span class="ident">outpoint</span>, <span class="ident">psbt_input</span>, <span class="ident">satisfaction_weight</span>)
- .<span class="ident">unwrap</span>();
+ builder
+ .add_foreign_utxo(utxo2.outpoint, psbt_input, satisfaction_weight)
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">is_err</span>(),
- <span class="string">"psbt_input with witness_utxo should fail with only witness_utxo"</span>
- );
+ builder.finish().is_err(),
+ <span class="string">"psbt_input with witness_utxo should fail with only witness_utxo"
+ </span>);
}
{
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">clone</span>();
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">psbt::Input</span> {
- <span class="ident">witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">utxo2</span>.<span class="ident">txout</span>.<span class="ident">clone</span>()),
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = builder.clone();
+ <span class="kw">let </span>psbt_input = psbt::Input {
+ witness_utxo: <span class="prelude-val">Some</span>(utxo2.txout.clone()),
+ ..Default::default()
};
- <span class="ident">builder</span>
- .<span class="ident">only_witness_utxo</span>()
- .<span class="ident">add_foreign_utxo</span>(<span class="ident">utxo2</span>.<span class="ident">outpoint</span>, <span class="ident">psbt_input</span>, <span class="ident">satisfaction_weight</span>)
- .<span class="ident">unwrap</span>();
+ builder
+ .only_witness_utxo()
+ .add_foreign_utxo(utxo2.outpoint, psbt_input, satisfaction_weight)
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">is_ok</span>(),
- <span class="string">"psbt_input with just witness_utxo should succeed when `only_witness_utxo` is enabled"</span>
- );
+ builder.finish().is_ok(),
+ <span class="string">"psbt_input with just witness_utxo should succeed when `only_witness_utxo` is enabled"
+ </span>);
}
{
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">clone</span>();
- <span class="kw">let</span> <span class="ident">tx2</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow</span>()
- .<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">txid2</span>, <span class="bool-val">true</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">unwrap</span>()
- .<span class="ident">transaction</span>
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">psbt::Input</span> {
- <span class="ident">non_witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">tx2</span>),
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = builder.clone();
+ <span class="kw">let </span>tx2 = wallet2
+ .database
+ .borrow()
+ .get_tx(<span class="kw-2">&</span>txid2, <span class="bool-val">true</span>)
+ .unwrap()
+ .unwrap()
+ .transaction
+ .unwrap();
+ <span class="kw">let </span>psbt_input = psbt::Input {
+ non_witness_utxo: <span class="prelude-val">Some</span>(tx2),
+ ..Default::default()
};
- <span class="ident">builder</span>
- .<span class="ident">add_foreign_utxo</span>(<span class="ident">utxo2</span>.<span class="ident">outpoint</span>, <span class="ident">psbt_input</span>, <span class="ident">satisfaction_weight</span>)
- .<span class="ident">unwrap</span>();
+ builder
+ .add_foreign_utxo(utxo2.outpoint, psbt_input, satisfaction_weight)
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">is_ok</span>(),
- <span class="string">"psbt_input with non_witness_utxo should succeed by default"</span>
- );
+ builder.finish().is_ok(),
+ <span class="string">"psbt_input with non_witness_utxo should succeed by default"
+ </span>);
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_get_psbt_input</span>() {
- <span class="comment">// this should grab a known good utxo and set the input</span>
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">for</span> <span class="ident">utxo</span> <span class="kw">in</span> <span class="ident">wallet</span>.<span class="ident">list_unspent</span>().<span class="ident">unwrap</span>() {
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_psbt_input</span>(<span class="ident">utxo</span>, <span class="prelude-val">None</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">psbt_input</span>.<span class="ident">witness_utxo</span>.<span class="ident">is_some</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">psbt_input</span>.<span class="ident">non_witness_utxo</span>.<span class="ident">is_some</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_get_psbt_input() {
+ <span class="comment">// this should grab a known good utxo and set the input
+ </span><span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">for </span>utxo <span class="kw">in </span>wallet.list_unspent().unwrap() {
+ <span class="kw">let </span>psbt_input = wallet.get_psbt_input(utxo, <span class="prelude-val">None</span>, <span class="bool-val">false</span>).unwrap();
+ <span class="macro">assert!</span>(psbt_input.witness_utxo.is_some() || psbt_input.non_witness_utxo.is_some());
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(
- <span class="ident">expected</span> <span class="op">=</span> <span class="string">"MissingKeyOrigin(\"tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3\")"</span>
- )]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_global_xpubs_origin_missing</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">add_global_xpubs</span>();
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_tx_global_xpubs_master_without_origin</span>() {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
-
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL/0/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">add_global_xpubs</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPubKey::from_str</span>(<span class="string">"tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">bip32::Fingerprint::from_hex</span>(<span class="string">"997a323b"</span>).<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">xpub</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="attr">#[test]
+ #[should_panic(
+ expected = <span class="string">"MissingKeyOrigin(\"tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3\")"
+ </span>)]
+ </span><span class="kw">fn </span>test_create_tx_global_xpubs_origin_missing() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .add_global_xpubs();
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_tx_global_xpubs_master_without_origin() {
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
+ <span class="kw">use </span>bitcoin::util::bip32;
+
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL/0/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .add_global_xpubs();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>key = bip32::ExtendedPubKey::from_str(<span class="string">"tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL"</span>).unwrap();
+ <span class="kw">let </span>fingerprint = bip32::Fingerprint::from_hex(<span class="string">"997a323b"</span>).unwrap();
+
+ <span class="macro">assert_eq!</span>(psbt.xpub.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">xpub</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">key</span>),
- <span class="prelude-val">Some</span>(<span class="kw-2">&</span>(<span class="ident">fingerprint</span>, <span class="ident">bip32::DerivationPath::default</span>()))
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"IrreplaceableTransaction"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_irreplaceable_tx</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the utxos, we know they can't be used anyways</span>
- <span class="ident">details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">details</span>).<span class="ident">unwrap</span>();
-
- <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>().<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"TransactionConfirmed"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_confirmed_tx</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the utxos, we know they can't be used anyways</span>
- <span class="ident">details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">details</span>.<span class="ident">confirmation_time</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">BlockTime</span> {
- <span class="ident">timestamp</span>: <span class="number">12345678</span>,
- <span class="ident">height</span>: <span class="number">42</span>,
+ psbt.xpub.get(<span class="kw-2">&</span>key),
+ <span class="prelude-val">Some</span>(<span class="kw-2">&</span>(fingerprint, bip32::DerivationPath::default()))
+ );
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"IrreplaceableTransaction"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_irreplaceable_tx() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>details) = builder.finish().unwrap();
+
+ <span class="kw">let </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the utxos, we know they can't be used anyways
+ </span>details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet.database.borrow_mut().set_tx(<span class="kw-2">&</span>details).unwrap();
+
+ wallet.build_fee_bump(txid).unwrap().finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"TransactionConfirmed"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_confirmed_tx() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>details) = builder.finish().unwrap();
+
+ <span class="kw">let </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the utxos, we know they can't be used anyways
+ </span>details.transaction = <span class="prelude-val">Some</span>(tx);
+ details.confirmation_time = <span class="prelude-val">Some</span>(BlockTime {
+ timestamp: <span class="number">12345678</span>,
+ height: <span class="number">42</span>,
});
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">details</span>).<span class="ident">unwrap</span>();
-
- <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>().<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"FeeRateTooLow"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_low_fee_rate</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the utxos, we know they can't be used anyways</span>
- <span class="ident">details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">details</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"FeeTooLow"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_low_abs</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the utxos, we know they can't be used anyways</span>
- <span class="ident">details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">details</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_absolute</span>(<span class="number">10</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"FeeTooLow"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_zero_abs</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the utxos, we know they can't be used anyways</span>
- <span class="ident">details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>().<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">details</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_absolute</span>(<span class="number">0</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_reduce_change</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ wallet.database.borrow_mut().set_tx(<span class="kw-2">&</span>details).unwrap();
+
+ wallet.build_fee_bump(txid).unwrap().finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"FeeRateTooLow"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_low_fee_rate() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>details) = builder.finish().unwrap();
+
+ <span class="kw">let </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the utxos, we know they can't be used anyways
+ </span>details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet.database.borrow_mut().set_tx(<span class="kw-2">&</span>details).unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_rate(FeeRate::from_sat_per_vb(<span class="number">1.0</span>));
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"FeeTooLow"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_low_abs() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>details) = builder.finish().unwrap();
+
+ <span class="kw">let </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the utxos, we know they can't be used anyways
+ </span>details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet.database.borrow_mut().set_tx(<span class="kw-2">&</span>details).unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_absolute(<span class="number">10</span>);
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"FeeTooLow"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_zero_abs() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>details) = builder.finish().unwrap();
+
+ <span class="kw">let </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the utxos, we know they can't be used anyways
+ </span>details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet.database.borrow_mut().set_tx(<span class="kw-2">&</span>details).unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_absolute(<span class="number">0</span>);
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_reduce_change() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">2.5</span>)).<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span>);
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_rate(FeeRate::from_sat_per_vb(<span class="number">2.5</span>)).enable_rbf();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent);
<span class="macro">assert_eq!</span>(
- <span class="ident">details</span>.<span class="ident">received</span> <span class="op">+</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>),
- <span class="ident">original_details</span>.<span class="ident">received</span> <span class="op">+</span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ details.received + details.fee.unwrap_or(<span class="number">0</span>),
+ original_details.received + original_details.fee.unwrap_or(<span class="number">0</span>)
);
- <span class="macro">assert!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">></span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>));
+ <span class="macro">assert!</span>(details.fee.unwrap_or(<span class="number">0</span>) > original_details.fee.unwrap_or(<span class="number">0</span>));
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">25_000</span>
- );
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">25_000
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">details</span>.<span class="ident">received</span>
- );
-
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">2.5</span>), @<span class="ident">add_signature</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_absolute_reduce_change</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ details.received
+ );
+
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">2.5</span>), @add_signature);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_absolute_reduce_change() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_absolute</span>(<span class="number">200</span>);
- <span class="ident">builder</span>.<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span>);
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_absolute(<span class="number">200</span>);
+ builder.enable_rbf();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent);
<span class="macro">assert_eq!</span>(
- <span class="ident">details</span>.<span class="ident">received</span> <span class="op">+</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>),
- <span class="ident">original_details</span>.<span class="ident">received</span> <span class="op">+</span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ details.received + details.fee.unwrap_or(<span class="number">0</span>),
+ original_details.received + original_details.fee.unwrap_or(<span class="number">0</span>)
);
<span class="macro">assert!</span>(
- <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">></span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>),
+ details.fee.unwrap_or(<span class="number">0</span>) > original_details.fee.unwrap_or(<span class="number">0</span>),
<span class="string">"{} > {}"</span>,
- <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>),
- <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ details.fee.unwrap_or(<span class="number">0</span>),
+ original_details.fee.unwrap_or(<span class="number">0</span>)
);
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">25_000</span>
- );
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">25_000
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">details</span>.<span class="ident">received</span>
- );
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">200</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_reduce_single_recipient</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ details.received
+ );
+
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">200</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_reduce_single_recipient() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">2.5</span>))
- .<span class="ident">allow_shrinking</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span>);
- <span class="macro">assert!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">></span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>));
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span> <span class="op">+</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">details</span>.<span class="ident">sent</span>);
-
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">2.5</span>), @<span class="ident">add_signature</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_absolute_reduce_single_recipient</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">2.5</span>))
+ .allow_shrinking(addr.script_pubkey())
+ .unwrap();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent);
+ <span class="macro">assert!</span>(details.fee.unwrap_or(<span class="number">0</span>) > original_details.fee.unwrap_or(<span class="number">0</span>));
+
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(tx.output[<span class="number">0</span>].value + details.fee.unwrap_or(<span class="number">0</span>), details.sent);
+
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">2.5</span>), @add_signature);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_absolute_reduce_single_recipient() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">allow_shrinking</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">fee_absolute</span>(<span class="number">300</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span>);
- <span class="macro">assert!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">></span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>));
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span> <span class="op">+</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">details</span>.<span class="ident">sent</span>);
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">300</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_drain_wallet</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="comment">// receive an extra tx so that our wallet has two utxos.</span>
- <span class="kw">let</span> <span class="ident">incoming_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .allow_shrinking(addr.script_pubkey())
+ .unwrap()
+ .fee_absolute(<span class="number">300</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent);
+ <span class="macro">assert!</span>(details.fee.unwrap_or(<span class="number">0</span>) > original_details.fee.unwrap_or(<span class="number">0</span>));
+
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(tx.output[<span class="number">0</span>].value + details.fee.unwrap_or(<span class="number">0</span>), details.sent);
+
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">300</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_drain_wallet() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="comment">// receive an extra tx so that our wallet has two utxos.
+ </span><span class="kw">let </span>incoming_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">incoming_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ <span class="kw">let </span>outpoint = OutPoint {
+ txid: incoming_txid,
+ vout: <span class="number">0</span>,
};
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">add_utxo</span>(<span class="ident">outpoint</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">manually_selected_only</span>()
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .add_utxo(outpoint)
+ .unwrap()
+ .manually_selected_only()
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">original_details</span>.<span class="ident">sent</span>, <span class="number">25_000</span>);
-
- <span class="comment">// for the new feerate, it should be enough to reduce the output, but since we specify</span>
- <span class="comment">// `drain_wallet` we expect to spend everything</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">allow_shrinking</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>));
- <span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="number">75_000</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_remove_output_manually_selected_only</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="comment">// receive an extra tx so that our wallet has two utxos. then we manually pick only one of</span>
- <span class="comment">// them, and make sure that `bump_fee` doesn't try to add more. This fails because we've</span>
- <span class="comment">// told the wallet it's not allowed to add more inputs AND it can't reduce the value of the</span>
- <span class="comment">// existing output. In other words, bump_fee + manually_selected_only is always an error</span>
- <span class="comment">// unless you've also set "allow_shrinking" OR there is a change output.</span>
- <span class="kw">let</span> <span class="ident">incoming_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+ <span class="macro">assert_eq!</span>(original_details.sent, <span class="number">25_000</span>);
+
+ <span class="comment">// for the new feerate, it should be enough to reduce the output, but since we specify
+ // `drain_wallet` we expect to spend everything
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .drain_wallet()
+ .allow_shrinking(addr.script_pubkey())
+ .unwrap()
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>));
+ <span class="kw">let </span>(<span class="kw">_</span>, details) = builder.finish().unwrap();
+ <span class="macro">assert_eq!</span>(details.sent, <span class="number">75_000</span>);
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_remove_output_manually_selected_only() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="comment">// receive an extra tx so that our wallet has two utxos. then we manually pick only one of
+ // them, and make sure that `bump_fee` doesn't try to add more. This fails because we've
+ // told the wallet it's not allowed to add more inputs AND it can't reduce the value of the
+ // existing output. In other words, bump_fee + manually_selected_only is always an error
+ // unless you've also set "allow_shrinking" OR there is a change output.
+ </span><span class="kw">let </span>incoming_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">outpoint</span> <span class="op">=</span> <span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">incoming_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ <span class="kw">let </span>outpoint = OutPoint {
+ txid: incoming_txid,
+ vout: <span class="number">0</span>,
};
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">add_utxo</span>(<span class="ident">outpoint</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">manually_selected_only</span>()
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .add_utxo(outpoint)
+ .unwrap()
+ .manually_selected_only()
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">original_details</span>.<span class="ident">sent</span>, <span class="number">25_000</span>);
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">manually_selected_only</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">255.0</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_add_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+ <span class="macro">assert_eq!</span>(original_details.sent, <span class="number">25_000</span>);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .manually_selected_only()
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">255.0</span>));
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_add_input() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
<span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">50.0</span>));
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">+</span> <span class="number">25_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">+</span> <span class="ident">details</span>.<span class="ident">received</span>, <span class="number">30_000</span>);
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_rate(FeeRate::from_sat_per_vb(<span class="number">50.0</span>));
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent + <span class="number">25_000</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>) + details.received, <span class="number">30_000</span>);
+
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">45_000</span>
- );
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">45_000
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">details</span>.<span class="ident">received</span>
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ details.received
);
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">50.0</span>), @<span class="ident">add_signature</span>);
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">50.0</span>), @add_signature);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_absolute_add_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_absolute_add_input() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
<span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_absolute</span>(<span class="number">6_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">+</span> <span class="number">25_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">+</span> <span class="ident">details</span>.<span class="ident">received</span>, <span class="number">30_000</span>);
-
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_absolute(<span class="number">6_000</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent + <span class="number">25_000</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>) + details.received, <span class="number">30_000</span>);
+
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">45_000</span>
- );
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">45_000
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">details</span>.<span class="ident">received</span>
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ details.received
);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">6_000</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">6_000</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_no_change_add_input_and_change</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">incoming_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_no_change_add_input_and_change() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>incoming_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="comment">// initially make a tx without change by using `drain_to`</span>
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">add_utxo</span>(<span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">incoming_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ <span class="comment">// initially make a tx without change by using `drain_to`
+ </span><span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .add_utxo(OutPoint {
+ txid: incoming_txid,
+ vout: <span class="number">0</span>,
})
- .<span class="ident">unwrap</span>()
- .<span class="ident">manually_selected_only</span>()
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ .unwrap()
+ .manually_selected_only()
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="comment">// now bump the fees without using `allow_shrinking`. the wallet should add an</span>
- <span class="comment">// extra input and a change output, and leave the original output untouched</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">50.0</span>));
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">original_send_all_amount</span> <span class="op">=</span> <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">-</span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">+</span> <span class="number">50_000</span>);
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="comment">// now bump the fees without using `allow_shrinking`. the wallet should add an
+ // extra input and a change output, and leave the original output untouched
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_rate(FeeRate::from_sat_per_vb(<span class="number">50.0</span>));
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
+
+ <span class="kw">let </span>original_send_all_amount = original_details.sent - original_details.fee.unwrap_or(<span class="number">0</span>);
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent + <span class="number">50_000</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">details</span>.<span class="ident">received</span>,
- <span class="number">75_000</span> <span class="op">-</span> <span class="ident">original_send_all_amount</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ details.received,
+ <span class="number">75_000 </span>- original_send_all_amount - details.fee.unwrap_or(<span class="number">0</span>)
);
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">original_send_all_amount</span>
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ original_send_all_amount
);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">75_000</span> <span class="op">-</span> <span class="ident">original_send_all_amount</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">75_000 </span>- original_send_all_amount - details.fee.unwrap_or(<span class="number">0</span>)
);
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">50.0</span>), @<span class="ident">add_signature</span>);
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">50.0</span>), @add_signature);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_add_input_change_dust</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_add_input_change_dust() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
<span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="kw">let</span> <span class="ident">original_tx_weight</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">weight</span>();
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="comment">// We set a fee high enough that during rbf we are forced to add</span>
- <span class="comment">// a new input and also that we have to remove the change</span>
- <span class="comment">// that we had previously</span>
-
- <span class="comment">// We calculate the new weight as:</span>
- <span class="comment">// original weight</span>
- <span class="comment">// + extra input weight: 160 WU = (32 (prevout) + 4 (vout) + 4 (nsequence)) * 4</span>
- <span class="comment">// + input satisfaction weight: 112 WU = 106 (witness) + 2 (witness len) + (1 (script len)) * 4</span>
- <span class="comment">// - change output weight: 124 WU = (8 (value) + 1 (script len) + 22 (script)) * 4</span>
- <span class="kw">let</span> <span class="ident">new_tx_weight</span> <span class="op">=</span> <span class="ident">original_tx_weight</span> <span class="op">+</span> <span class="number">160</span> <span class="op">+</span> <span class="number">112</span> <span class="op">-</span> <span class="number">124</span>;
- <span class="comment">// two inputs (50k, 25k) and one output (45k) - epsilon</span>
- <span class="comment">// We use epsilon here to avoid asking for a slightly too high feerate</span>
- <span class="kw">let</span> <span class="ident">fee_abs</span> <span class="op">=</span> <span class="number">50_000</span> <span class="op">+</span> <span class="number">25_000</span> <span class="op">-</span> <span class="number">45_000</span> <span class="op">-</span> <span class="number">10</span>;
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_wu</span>(<span class="ident">fee_abs</span>, <span class="ident">new_tx_weight</span>));
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>original_tx_weight = tx.weight();
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ <span class="comment">// We set a fee high enough that during rbf we are forced to add
+ // a new input and also that we have to remove the change
+ // that we had previously
+
+ // We calculate the new weight as:
+ // original weight
+ // + extra input weight: 160 WU = (32 (prevout) + 4 (vout) + 4 (nsequence)) * 4
+ // + input satisfaction weight: 112 WU = 106 (witness) + 2 (witness len) + (1 (script len)) * 4
+ // - change output weight: 124 WU = (8 (value) + 1 (script len) + 22 (script)) * 4
+ </span><span class="kw">let </span>new_tx_weight = original_tx_weight + <span class="number">160 </span>+ <span class="number">112 </span>- <span class="number">124</span>;
+ <span class="comment">// two inputs (50k, 25k) and one output (45k) - epsilon
+ // We use epsilon here to avoid asking for a slightly too high feerate
+ </span><span class="kw">let </span>fee_abs = <span class="number">50_000 </span>+ <span class="number">25_000 </span>- <span class="number">45_000 </span>- <span class="number">10</span>;
+ builder.fee_rate(FeeRate::from_wu(fee_abs, new_tx_weight));
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">original_details</span>.<span class="ident">received</span>,
- <span class="number">5_000</span> <span class="op">-</span> <span class="ident">original_details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>)
+ original_details.received,
+ <span class="number">5_000 </span>- original_details.fee.unwrap_or(<span class="number">0</span>)
);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">+</span> <span class="number">25_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">30_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">received</span>, <span class="number">0</span>);
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent + <span class="number">25_000</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">30_000</span>);
+ <span class="macro">assert_eq!</span>(details.received, <span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">1</span>);
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">45_000</span>
- );
-
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">140.0</span>), @<span class="ident">dust_change</span>, @<span class="ident">add_signature</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_force_add_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">incoming_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">45_000
+ </span>);
+
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">140.0</span>), @dust_change, @add_signature);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_force_add_input() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>incoming_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="comment">// the new fee_rate is low enough that just reducing the change would be fine, but we force</span>
- <span class="comment">// the addition of an extra input with `add_utxo()`</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_utxo</span>(<span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">incoming_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="comment">// the new fee_rate is low enough that just reducing the change would be fine, but we force
+ // the addition of an extra input with `add_utxo()`
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .add_utxo(OutPoint {
+ txid: incoming_txid,
+ vout: <span class="number">0</span>,
})
- .<span class="ident">unwrap</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>));
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ .unwrap()
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">5.0</span>));
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">+</span> <span class="number">25_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">+</span> <span class="ident">details</span>.<span class="ident">received</span>, <span class="number">30_000</span>);
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent + <span class="number">25_000</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>) + details.received, <span class="number">30_000</span>);
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">45_000</span>
- );
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">45_000
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">details</span>.<span class="ident">received</span>
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ details.received
);
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">5.0</span>), @<span class="ident">add_signature</span>);
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), FeeRate::from_sat_per_vb(<span class="number">5.0</span>), @add_signature);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_absolute_force_add_input</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">incoming_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_absolute_force_add_input() {
+ <span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>incoming_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="comment">// skip saving the new utxos, we know they can't be used anyways</span>
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="comment">// skip saving the new utxos, we know they can't be used anyways
+ </span><span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="comment">// the new fee_rate is low enough that just reducing the change would be fine, but we force</span>
- <span class="comment">// the addition of an extra input with `add_utxo()`</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_utxo</span>(<span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">incoming_txid</span>,
- <span class="ident">vout</span>: <span class="number">0</span>,
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="comment">// the new fee_rate is low enough that just reducing the change would be fine, but we force
+ // the addition of an extra input with `add_utxo()`
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .add_utxo(OutPoint {
+ txid: incoming_txid,
+ vout: <span class="number">0</span>,
})
- .<span class="ident">unwrap</span>()
- .<span class="ident">fee_absolute</span>(<span class="number">250</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ .unwrap()
+ .fee_absolute(<span class="number">250</span>);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">sent</span>, <span class="ident">original_details</span>.<span class="ident">sent</span> <span class="op">+</span> <span class="number">25_000</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>) <span class="op">+</span> <span class="ident">details</span>.<span class="ident">received</span>, <span class="number">30_000</span>);
+ <span class="macro">assert_eq!</span>(details.sent, original_details.sent + <span class="number">25_000</span>);
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>) + details.received, <span class="number">30_000</span>);
- <span class="kw">let</span> <span class="ident">tx</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>;
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="kw">let </span>tx = <span class="kw-2">&</span>psbt.unsigned_tx;
+ <span class="macro">assert_eq!</span>(tx.input.len(), <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(tx.output.len(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">==</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="number">45_000</span>
- );
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey == addr.script_pubkey())
+ .unwrap()
+ .value,
+ <span class="number">45_000
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">find</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> <span class="ident">txout</span>.<span class="ident">script_pubkey</span> <span class="op">!</span><span class="op">=</span> <span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>()
- .<span class="ident">value</span>,
- <span class="ident">details</span>.<span class="ident">received</span>
- );
-
- <span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">250</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_unconfirmed_inputs_only</span>() {
- <span class="comment">// We try to bump the fee, but:</span>
- <span class="comment">// - We can't reduce the change, as we have no change</span>
- <span class="comment">// - All our UTXOs are unconfirmed</span>
- <span class="comment">// So, we fail with "InsufficientFunds", as per RBF rule 2:</span>
- <span class="comment">// The replacement transaction may only include an unconfirmed input</span>
- <span class="comment">// if that input was included in one of the original transactions.</span>
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="comment">// Now we receive one transaction with 0 confirmations. We won't be able to use that for</span>
- <span class="comment">// fee bumping, as it's still unconfirmed!</span>
- <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">0</span>)),
+ tx.output
+ .iter()
+ .find(|txout| txout.script_pubkey != addr.script_pubkey())
+ .unwrap()
+ .value,
+ details.received
+ );
+
+ <span class="macro">assert_eq!</span>(details.fee.unwrap_or(<span class="number">0</span>), <span class="number">250</span>);
+ }
+
+ <span class="attr">#[test]
+ #[should_panic(expected = <span class="string">"InsufficientFunds"</span>)]
+ </span><span class="kw">fn </span>test_bump_fee_unconfirmed_inputs_only() {
+ <span class="comment">// We try to bump the fee, but:
+ // - We can't reduce the change, as we have no change
+ // - All our UTXOs are unconfirmed
+ // So, we fail with "InsufficientFunds", as per RBF rule 2:
+ // The replacement transaction may only include an unconfirmed input
+ // if that input was included in one of the original transactions.
+ </span><span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_wallet()
+ .drain_to(addr.script_pubkey())
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="comment">// Now we receive one transaction with 0 confirmations. We won't be able to use that for
+ // fee bumping, as it's still unconfirmed!
+ </span><span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">0</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">25.0</span>));
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_bump_fee_unconfirmed_input</span>() {
- <span class="comment">// We create a tx draining the wallet and spending one confirmed</span>
- <span class="comment">// and one unconfirmed UTXO. We check that we can fee bump normally</span>
- <span class="comment">// (BIP125 rule 2 only apply to newly added unconfirmed input, you can</span>
- <span class="comment">// always fee bump with an unconfirmed input if it was included in the</span>
- <span class="comment">// original transaction)</span>
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="comment">// We receive a tx with 0 confirmations, which will be used as an input</span>
- <span class="comment">// in the drain tx.</span>
- <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">0</span>)),
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder.fee_rate(FeeRate::from_sat_per_vb(<span class="number">25.0</span>));
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_bump_fee_unconfirmed_input() {
+ <span class="comment">// We create a tx draining the wallet and spending one confirmed
+ // and one unconfirmed UTXO. We check that we can fee bump normally
+ // (BIP125 rule 2 only apply to newly added unconfirmed input, you can
+ // always fee bump with an unconfirmed input if it was included in the
+ // original transaction)
+ </span><span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="comment">// We receive a tx with 0 confirmations, which will be used as an input
+ // in the drain tx.
+ </span><span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">0</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">enable_rbf</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
- <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
- <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="ident">P2WPKH_FAKE_WITNESS_SIZE</span>]); <span class="comment">// fake signature</span>
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_wallet()
+ .drain_to(addr.script_pubkey())
+ .enable_rbf();
+ <span class="kw">let </span>(psbt, <span class="kw-2">mut </span>original_details) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = psbt.extract_tx();
+ <span class="kw">let </span>txid = tx.txid();
+ <span class="kw">for </span>txin <span class="kw">in </span><span class="kw-2">&mut </span>tx.input {
+ txin.witness.push([<span class="number">0x00</span>; P2WPKH_FAKE_WITNESS_SIZE]); <span class="comment">// fake signature
+ </span>wallet
+ .database
+ .borrow_mut()
+ .del_utxo(<span class="kw-2">&</span>txin.previous_output)
+ .unwrap();
}
- <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
- <span class="ident">builder</span>
- .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">15.0</span>))
- .<span class="ident">allow_shrinking</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">unwrap</span>();
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_amount_negative_drain_val</span>() {
- <span class="comment">// While building the transaction, bdk would calculate the drain_value</span>
- <span class="comment">// as</span>
- <span class="comment">// current_delta - fee_amount - drain_fee</span>
- <span class="comment">// using saturating_sub, meaning that if the result would end up negative,</span>
- <span class="comment">// it'll remain to zero instead.</span>
- <span class="comment">// This caused a bug in master where we would calculate the wrong fee</span>
- <span class="comment">// for a transaction.</span>
- <span class="comment">// See https://github.com/bitcoindevkit/bdk/issues/660</span>
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">send_to</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">2.01</span>);
- <span class="kw">let</span> <span class="ident">incoming_txid</span> <span class="op">=</span> <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">8859</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ original_details.transaction = <span class="prelude-val">Some</span>(tx);
+ wallet
+ .database
+ .borrow_mut()
+ .set_tx(<span class="kw-2">&</span>original_details)
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_fee_bump(txid).unwrap();
+ builder
+ .fee_rate(FeeRate::from_sat_per_vb(<span class="number">15.0</span>))
+ .allow_shrinking(addr.script_pubkey())
+ .unwrap();
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_amount_negative_drain_val() {
+ <span class="comment">// While building the transaction, bdk would calculate the drain_value
+ // as
+ // current_delta - fee_amount - drain_fee
+ // using saturating_sub, meaning that if the result would end up negative,
+ // it'll remain to zero instead.
+ // This caused a bug in master where we would calculate the wrong fee
+ // for a transaction.
+ // See https://github.com/bitcoindevkit/bdk/issues/660
+ </span><span class="kw">let </span>(wallet, descriptors, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>send_to = Address::from_str(<span class="string">"tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt"</span>).unwrap();
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">2.01</span>);
+ <span class="kw">let </span>incoming_txid = <span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">8859 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">send_to</span>.<span class="ident">script_pubkey</span>(), <span class="number">8630</span>)
- .<span class="ident">add_utxo</span>(<span class="ident">OutPoint::new</span>(<span class="ident">incoming_txid</span>, <span class="number">0</span>))
- .<span class="ident">unwrap</span>()
- .<span class="ident">enable_rbf</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">fee_rate</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(send_to.script_pubkey(), <span class="number">8630</span>)
+ .add_utxo(OutPoint::new(incoming_txid, <span class="number">0</span>))
+ .unwrap()
+ .enable_rbf()
+ .fee_rate(fee_rate);
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">1</span>);
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">fee_rate</span>, @<span class="ident">add_signature</span>);
+ <span class="macro">assert!</span>(psbt.inputs.len() == <span class="number">1</span>);
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), fee_rate, @add_signature);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_single_xprv</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_single_xprv() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="kw">let </span>extracted = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(extracted.input[<span class="number">0</span>].witness.len(), <span class="number">2</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_single_xprv_with_master_fingerprint_and_path</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh([d34db33f/84h/1h/0h]tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
-
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_single_xprv_bip44_path</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/44'/0'/0'/0/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
-
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_single_xprv_sh_wpkh</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"sh(wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
-
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_single_wif</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span>
- <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
-
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_single_xprv_no_hd_keypaths</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">bip32_derivation</span>.<span class="ident">clear</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">bip32_derivation</span>.<span class="ident">len</span>(), <span class="number">0</span>);
-
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
-
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">len</span>(), <span class="number">2</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_include_output_redeem_witness_script</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"sh(wsh(multi(1,cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW,cRjo6jqfVNP33HhSS76UhXETZsGTZYx8FMFvR9kpbtCSV1PmdZdu)))"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">include_output_redeem_witness_script</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// p2sh-p2wsh transaction should contain both witness and redeem scripts</span>
- <span class="macro">assert!</span>(<span class="ident">psbt</span>
- .<span class="ident">outputs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">output</span><span class="op">|</span> <span class="ident">output</span>.<span class="ident">redeem_script</span>.<span class="ident">is_some</span>() <span class="op">&&</span> <span class="ident">output</span>.<span class="ident">witness_script</span>.<span class="ident">is_some</span>()));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_signing_only_one_of_multiple_inputs</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>)
- .<span class="ident">include_output_redeem_witness_script</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="comment">// add another input to the psbt that is at least passable.</span>
- <span class="kw">let</span> <span class="ident">dud_input</span> <span class="op">=</span> <span class="ident">bitcoin::util::psbt::Input</span> {
- <span class="ident">witness_utxo</span>: <span class="prelude-val">Some</span>(<span class="ident">TxOut</span> {
- <span class="ident">value</span>: <span class="number">100_000</span>,
- <span class="ident">script_pubkey</span>: <span class="ident">miniscript::Descriptor</span>::<span class="op"><</span><span class="ident">bitcoin::PublicKey</span><span class="op">></span><span class="ident">::from_str</span>(
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_single_xprv_with_master_fingerprint_and_path() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh([d34db33f/84h/1h/0h]tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
+
+ <span class="kw">let </span>extracted = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(extracted.input[<span class="number">0</span>].witness.len(), <span class="number">2</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_single_xprv_bip44_path() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/44'/0'/0'/0/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
+
+ <span class="kw">let </span>extracted = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(extracted.input[<span class="number">0</span>].witness.len(), <span class="number">2</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_single_xprv_sh_wpkh() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"sh(wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*))"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
+
+ <span class="kw">let </span>extracted = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(extracted.input[<span class="number">0</span>].witness.len(), <span class="number">2</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_single_wif() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) =
+ get_funded_wallet(<span class="string">"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
+
+ <span class="kw">let </span>extracted = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(extracted.input[<span class="number">0</span>].witness.len(), <span class="number">2</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_single_xprv_no_hd_keypaths() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ psbt.inputs[<span class="number">0</span>].bip32_derivation.clear();
+ <span class="macro">assert_eq!</span>(psbt.inputs[<span class="number">0</span>].bip32_derivation.len(), <span class="number">0</span>);
+
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
+
+ <span class="kw">let </span>extracted = psbt.extract_tx();
+ <span class="macro">assert_eq!</span>(extracted.input[<span class="number">0</span>].witness.len(), <span class="number">2</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_include_output_redeem_witness_script() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"sh(wsh(multi(1,cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW,cRjo6jqfVNP33HhSS76UhXETZsGTZYx8FMFvR9kpbtCSV1PmdZdu)))"</span>);
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .include_output_redeem_witness_script();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// p2sh-p2wsh transaction should contain both witness and redeem scripts
+ </span><span class="macro">assert!</span>(psbt
+ .outputs
+ .iter()
+ .any(|output| output.redeem_script.is_some() && output.witness_script.is_some()));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_signing_only_one_of_multiple_inputs() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">45_000</span>)
+ .include_output_redeem_witness_script();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="comment">// add another input to the psbt that is at least passable.
+ </span><span class="kw">let </span>dud_input = bitcoin::util::psbt::Input {
+ witness_utxo: <span class="prelude-val">Some</span>(TxOut {
+ value: <span class="number">100_000</span>,
+ script_pubkey: miniscript::Descriptor::<bitcoin::PublicKey>::from_str(
<span class="string">"wpkh(025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee6357)"</span>,
)
- .<span class="ident">unwrap</span>()
- .<span class="ident">script_pubkey</span>(),
+ .unwrap()
+ .script_pubkey(),
}),
- ..<span class="ident">Default::default</span>()
+ ..Default::default()
};
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">push</span>(<span class="ident">dud_input</span>);
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">push</span>(<span class="ident">bitcoin::TxIn::default</span>());
- <span class="kw">let</span> <span class="ident">is_final</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ psbt.inputs.push(dud_input);
+ psbt.unsigned_tx.input.push(bitcoin::TxIn::default());
+ <span class="kw">let </span>is_final = wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ trust_witness_utxo: <span class="bool-val">true</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="op">!</span><span class="ident">is_final</span>,
- <span class="string">"shouldn't be final since we can't sign one of the inputs"</span>
- );
+ !is_final,
+ <span class="string">"shouldn't be final since we can't sign one of the inputs"
+ </span>);
<span class="macro">assert!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">final_script_witness</span>.<span class="ident">is_some</span>(),
- <span class="string">"should finalized input it signed"</span>
- )
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_remove_partial_sigs_after_finalize_sign_option</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
-
- <span class="kw">for</span> <span class="ident">remove_partial_sigs</span> <span class="kw">in</span> <span class="kw-2">&</span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>] {
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>().<span class="number">0</span>;
-
- <span class="macro">assert!</span>(<span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">remove_partial_sigs</span>: <span class="kw-2">*</span><span class="ident">remove_partial_sigs</span>,
- ..<span class="ident">Default::default</span>()
+ psbt.inputs[<span class="number">0</span>].final_script_witness.is_some(),
+ <span class="string">"should finalized input it signed"
+ </span>)
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_remove_partial_sigs_after_finalize_sign_option() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+
+ <span class="kw">for </span>remove_partial_sigs <span class="kw">in </span><span class="kw-2">&</span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>] {
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span><span class="kw-2">mut </span>psbt = builder.finish().unwrap().<span class="number">0</span>;
+
+ <span class="macro">assert!</span>(wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ remove_partial_sigs: <span class="kw-2">*</span>remove_partial_sigs,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>());
+ .unwrap());
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">for_each</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="kw-2">*</span><span class="ident">remove_partial_sigs</span> {
- <span class="macro">assert!</span>(<span class="ident">input</span>.<span class="ident">partial_sigs</span>.<span class="ident">is_empty</span>())
- } <span class="kw">else</span> {
- <span class="macro">assert!</span>(<span class="op">!</span><span class="ident">input</span>.<span class="ident">partial_sigs</span>.<span class="ident">is_empty</span>())
+ psbt.inputs.iter().for_each(|input| {
+ <span class="kw">if </span><span class="kw-2">*</span>remove_partial_sigs {
+ <span class="macro">assert!</span>(input.partial_sigs.is_empty())
+ } <span class="kw">else </span>{
+ <span class="macro">assert!</span>(!input.partial_sigs.is_empty())
}
});
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_try_finalize_sign_option</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_try_finalize_sign_option() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">for</span> <span class="ident">try_finalize</span> <span class="kw">in</span> <span class="kw-2">&</span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>] {
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">psbt</span> <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>().<span class="number">0</span>;
+ <span class="kw">for </span>try_finalize <span class="kw">in </span><span class="kw-2">&</span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>] {
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span><span class="kw-2">mut </span>psbt = builder.finish().unwrap().<span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">try_finalize</span>: <span class="kw-2">*</span><span class="ident">try_finalize</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span>finalized = wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ try_finalize: <span class="kw-2">*</span>try_finalize,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
-
- <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">for_each</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> {
- <span class="kw">if</span> <span class="kw-2">*</span><span class="ident">try_finalize</span> {
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
- <span class="macro">assert!</span>(<span class="ident">input</span>.<span class="ident">final_script_sig</span>.<span class="ident">is_some</span>());
- <span class="macro">assert!</span>(<span class="ident">input</span>.<span class="ident">final_script_witness</span>.<span class="ident">is_some</span>());
- } <span class="kw">else</span> {
- <span class="macro">assert!</span>(<span class="op">!</span><span class="ident">finalized</span>);
- <span class="macro">assert!</span>(<span class="ident">input</span>.<span class="ident">final_script_sig</span>.<span class="ident">is_none</span>());
- <span class="macro">assert!</span>(<span class="ident">input</span>.<span class="ident">final_script_witness</span>.<span class="ident">is_none</span>());
+ .unwrap();
+
+ psbt.inputs.iter().for_each(|input| {
+ <span class="kw">if </span><span class="kw-2">*</span>try_finalize {
+ <span class="macro">assert!</span>(finalized);
+ <span class="macro">assert!</span>(input.final_script_sig.is_some());
+ <span class="macro">assert!</span>(input.final_script_witness.is_some());
+ } <span class="kw">else </span>{
+ <span class="macro">assert!</span>(!finalized);
+ <span class="macro">assert!</span>(input.final_script_sig.is_none());
+ <span class="macro">assert!</span>(input.final_script_witness.is_none());
}
});
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sign_nonstandard_sighash</span>() {
- <span class="kw">let</span> <span class="ident">sighash</span> <span class="op">=</span> <span class="ident">EcdsaSighashType::NonePlusAnyoneCanPay</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sign_nonstandard_sighash() {
+ <span class="kw">let </span>sighash = EcdsaSighashType::NonePlusAnyoneCanPay;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">sighash</span>(<span class="ident">sighash</span>.<span class="ident">into</span>())
- .<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .sighash(sighash.into())
+ .drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>());
+ <span class="kw">let </span>result = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default());
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">is_err</span>(),
- <span class="string">"Signing should have failed because the TX uses non-standard sighashes"</span>
- );
+ result.is_err(),
+ <span class="string">"Signing should have failed because the TX uses non-standard sighashes"
+ </span>);
<span class="macro">assert!</span>(
<span class="macro">matches!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::Signer</span>(<span class="ident">SignerError::NonStandardSighash</span>)
+ result.unwrap_err(),
+ Error::Signer(SignerError::NonStandardSighash)
),
- <span class="string">"Signing failed with the wrong error type"</span>
- );
-
- <span class="comment">// try again after opting-in</span>
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">allow_all_sighashes</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="string">"Signing failed with the wrong error type"
+ </span>);
+
+ <span class="comment">// try again after opting-in
+ </span><span class="kw">let </span>result = wallet.sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ allow_all_sighashes: <span class="bool-val">true</span>,
+ ..Default::default()
},
);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_ok</span>(), <span class="string">"Signing should have worked"</span>);
+ <span class="macro">assert!</span>(result.is_ok(), <span class="string">"Signing should have worked"</span>);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap</span>(),
- <span class="string">"Should finalize the input since we can produce signatures"</span>
- );
+ result.unwrap(),
+ <span class="string">"Should finalize the input since we can produce signatures"
+ </span>);
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
+ <span class="kw">let </span>extracted = psbt.extract_tx();
<span class="macro">assert_eq!</span>(
- <span class="kw-2">*</span><span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">to_vec</span>()[<span class="number">0</span>].<span class="ident">last</span>().<span class="ident">unwrap</span>(),
- <span class="ident">sighash</span>.<span class="ident">to_u32</span>() <span class="kw">as</span> <span class="ident">u8</span>,
- <span class="string">"The signature should have been made with the right sighash"</span>
- );
+ <span class="kw-2">*</span>extracted.input[<span class="number">0</span>].witness.to_vec()[<span class="number">0</span>].last().unwrap(),
+ sighash.to_u32() <span class="kw">as </span>u8,
+ <span class="string">"The signature should have been made with the right sighash"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_unused_address</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
- <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_unused_address() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
+ <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">LastUnused</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
+ wallet.get_address(LastUnused).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">LastUnused</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
+ wallet.get_address(LastUnused).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_next_unused_address</span>() {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>;
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">descriptor</span>));
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_next_unused_address() {
+ <span class="kw">let </span>descriptor = <span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>;
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (descriptor));
+ <span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Testnet</span>,
- <span class="ident">MemoryDatabase::new</span>(),
+ Network::Testnet,
+ MemoryDatabase::new(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">LastUnused</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
-
- <span class="comment">// use the above address</span>
- <span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
+ wallet.get_address(LastUnused).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
+
+ <span class="comment">// use the above address
+ </span><span class="macro">crate::populate_test_db!</span>(
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="number">100</span>),
);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">LastUnused</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ wallet.get_address(LastUnused).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_peek_address_at_index</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
- <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_peek_address_at_index() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
+ <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">1</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ wallet.get_address(Peek(<span class="number">1</span>)).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">0</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
-
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">2</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>
- );
-
- <span class="comment">// current new address is not affected</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
-
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_peek_address_at_index_not_derivable</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/1)"</span>,
- <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
+ wallet.get_address(Peek(<span class="number">0</span>)).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">1</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ wallet.get_address(Peek(<span class="number">2</span>)).unwrap().to_string(),
+ <span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"
+ </span>);
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">0</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ <span class="comment">// current new address is not affected
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">2</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_reset_address_index</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
- <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
-
- <span class="comment">// new index 0</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>
- );
-
- <span class="comment">// new index 1</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_peek_address_at_index_not_derivable() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/1)"</span>,
+ <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
- <span class="comment">// new index 2</span>
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>
- );
+ wallet.get_address(Peek(<span class="number">1</span>)).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
- <span class="comment">// reset index 1 again</span>
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Reset</span>(<span class="number">1</span>)).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>
- );
+ wallet.get_address(Peek(<span class="number">0</span>)).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
- <span class="comment">// new index 2 again</span>
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>().<span class="ident">to_string</span>(),
- <span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_returns_index_and_address</span>() {
- <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
- <span class="prelude-val">None</span>, <span class="ident">Network::Testnet</span>, <span class="ident">db</span>).<span class="ident">unwrap</span>();
-
- <span class="comment">// new index 0</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">0</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ wallet.get_address(Peek(<span class="number">2</span>)).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_reset_address_index() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
+ <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
+
+ <span class="comment">// new index 0
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"
+ </span>);
+
+ <span class="comment">// new index 1
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
+
+ <span class="comment">// new index 2
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"
+ </span>);
+
+ <span class="comment">// reset index 1 again
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(Reset(<span class="number">1</span>)).unwrap().to_string(),
+ <span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"
+ </span>);
+
+ <span class="comment">// new index 2 again
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap().to_string(),
+ <span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"
+ </span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_returns_index_and_address() {
+ <span class="kw">let </span>db = MemoryDatabase::new();
+ <span class="kw">let </span>wallet = Wallet::new(<span class="string">"wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)"</span>,
+ <span class="prelude-val">None</span>, Network::Testnet, db).unwrap();
+
+ <span class="comment">// new index 0
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap(),
+ AddressInfo {
+ index: <span class="number">0</span>,
+ address: Address::from_str(<span class="string">"tb1q6yn66vajcctph75pvylgkksgpp6nq04ppwct9a"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
- <span class="comment">// new index 1</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">1</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ <span class="comment">// new index 1
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap(),
+ AddressInfo {
+ index: <span class="number">1</span>,
+ address: Address::from_str(<span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
- <span class="comment">// peek index 25</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Peek</span>(<span class="number">25</span>)).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">25</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"tb1qsp7qu0knx3sl6536dzs0703u2w2ag6ppl9d0c2"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ <span class="comment">// peek index 25
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(Peek(<span class="number">25</span>)).unwrap(),
+ AddressInfo {
+ index: <span class="number">25</span>,
+ address: Address::from_str(<span class="string">"tb1qsp7qu0knx3sl6536dzs0703u2w2ag6ppl9d0c2"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
- <span class="comment">// new index 2</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">2</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ <span class="comment">// new index 2
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap(),
+ AddressInfo {
+ index: <span class="number">2</span>,
+ address: Address::from_str(<span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
- <span class="comment">// reset index 1 again</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">Reset</span>(<span class="number">1</span>)).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">1</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ <span class="comment">// reset index 1 again
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(Reset(<span class="number">1</span>)).unwrap(),
+ AddressInfo {
+ index: <span class="number">1</span>,
+ address: Address::from_str(<span class="string">"tb1q4er7kxx6sssz3q7qp7zsqsdx4erceahhax77d7"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
- <span class="comment">// new index 2 again</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">2</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ <span class="comment">// new index 2 again
+ </span><span class="macro">assert_eq!</span>(
+ wallet.get_address(New).unwrap(),
+ AddressInfo {
+ index: <span class="number">2</span>,
+ address: Address::from_str(<span class="string">"tb1qzntf2mqex4ehwkjlfdyy3ewdlk08qkvkvrz7x2"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_sending_to_bip350_bech32m_address</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span>
- <span class="ident">Address::from_str</span>(<span class="string">"tb1pqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesf3hn0c"</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">45_000</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_get_address</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::template::Bip84</span>;
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip84</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::External</span>),
- <span class="prelude-val">Some</span>(<span class="ident">Bip84</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::Internal</span>)),
- <span class="ident">Network::Regtest</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_sending_to_bip350_bech32m_address() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>addr =
+ Address::from_str(<span class="string">"tb1pqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesf3hn0c"</span>)
+ .unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">45_000</span>);
+ builder.finish().unwrap();
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_get_address() {
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::template::Bip84;
+ <span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="kw">let </span>wallet = Wallet::new(
+ Bip84(key, KeychainKind::External),
+ <span class="prelude-val">Some</span>(Bip84(key, KeychainKind::Internal)),
+ Network::Regtest,
+ MemoryDatabase::default(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">0</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"bcrt1qrhgaqu0zvf5q2d0gwwz04w0dh0cuehhqvzpp4w"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
+ wallet.get_address(AddressIndex::New).unwrap(),
+ AddressInfo {
+ index: <span class="number">0</span>,
+ address: Address::from_str(<span class="string">"bcrt1qrhgaqu0zvf5q2d0gwwz04w0dh0cuehhqvzpp4w"</span>).unwrap(),
+ keychain: KeychainKind::External,
}
);
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_internal_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">0</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"bcrt1q0ue3s5y935tw7v3gmnh36c5zzsaw4n9c9smq79"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::Internal</span>,
+ wallet.get_internal_address(AddressIndex::New).unwrap(),
+ AddressInfo {
+ index: <span class="number">0</span>,
+ address: Address::from_str(<span class="string">"bcrt1q0ue3s5y935tw7v3gmnh36c5zzsaw4n9c9smq79"</span>).unwrap(),
+ keychain: KeychainKind::Internal,
}
);
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip84</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::External</span>),
+ <span class="kw">let </span>wallet = Wallet::new(
+ Bip84(key, KeychainKind::External),
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ Network::Regtest,
+ MemoryDatabase::default(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">wallet</span>.<span class="ident">get_internal_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>(),
- <span class="ident">AddressInfo</span> {
- <span class="ident">index</span>: <span class="number">0</span>,
- <span class="ident">address</span>: <span class="ident">Address::from_str</span>(<span class="string">"bcrt1qrhgaqu0zvf5q2d0gwwz04w0dh0cuehhqvzpp4w"</span>).<span class="ident">unwrap</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::Internal</span>,
+ wallet.get_internal_address(AddressIndex::New).unwrap(),
+ AddressInfo {
+ index: <span class="number">0</span>,
+ address: Address::from_str(<span class="string">"bcrt1qrhgaqu0zvf5q2d0gwwz04w0dh0cuehhqvzpp4w"</span>).unwrap(),
+ keychain: KeychainKind::Internal,
},
- <span class="string">"when there's no internal descriptor it should just use external"</span>
- );
+ <span class="string">"when there's no internal descriptor it should just use external"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_get_address_no_reuse_single_descriptor</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::template::Bip84</span>;
- <span class="kw">use</span> <span class="ident">std::collections::HashSet</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_get_address_no_reuse_single_descriptor() {
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::template::Bip84;
+ <span class="kw">use </span>std::collections::HashSet;
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">bitcoin::util::bip32::ExtendedPrivKey::from_str</span>(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">Bip84</span>(<span class="ident">key</span>, <span class="ident">KeychainKind::External</span>),
+ <span class="kw">let </span>key = bitcoin::util::bip32::ExtendedPrivKey::from_str(<span class="string">"tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy"</span>).unwrap();
+ <span class="kw">let </span>wallet = Wallet::new(
+ Bip84(key, KeychainKind::External),
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">MemoryDatabase::default</span>(),
+ Network::Regtest,
+ MemoryDatabase::default(),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">used_set</span> <span class="op">=</span> <span class="ident">HashSet::new</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>used_set = HashSet::new();
- (<span class="number">0</span>..<span class="number">3</span>).<span class="ident">for_each</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> {
- <span class="kw">let</span> <span class="ident">external_addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>().<span class="ident">address</span>;
- <span class="macro">assert!</span>(<span class="ident">used_set</span>.<span class="ident">insert</span>(<span class="ident">external_addr</span>));
+ (<span class="number">0</span>..<span class="number">3</span>).for_each(|<span class="kw">_</span>| {
+ <span class="kw">let </span>external_addr = wallet.get_address(AddressIndex::New).unwrap().address;
+ <span class="macro">assert!</span>(used_set.insert(external_addr));
- <span class="kw">let</span> <span class="ident">internal_addr</span> <span class="op">=</span> <span class="ident">wallet</span>
- .<span class="ident">get_internal_address</span>(<span class="ident">AddressIndex::New</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">address</span>;
- <span class="macro">assert!</span>(<span class="ident">used_set</span>.<span class="ident">insert</span>(<span class="ident">internal_addr</span>));
+ <span class="kw">let </span>internal_addr = wallet
+ .get_internal_address(AddressIndex::New)
+ .unwrap()
+ .address;
+ <span class="macro">assert!</span>(used_set.insert(internal_addr));
});
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_psbt_populate_tap_key_origins</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig_xprv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_psbt_populate_tap_key_origins() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig_xprv());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_key_origins</span>
- .<span class="ident">clone</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>(),
+ psbt.inputs[<span class="number">0</span>]
+ .tap_key_origins
+ .clone()
+ .into_iter()
+ .collect::<Vec<<span class="kw">_</span>>>(),
<span class="macro">vec!</span>[(
<span class="macro">from_str!</span>(<span class="string">"b96d3a3dc76a4fc74e976511b23aecb78e0754c23c0ed7a6513e18cbbc7178e9"</span>),
(<span class="macro">vec!</span>[], (<span class="macro">from_str!</span>(<span class="string">"f6a5cb8b"</span>), <span class="macro">from_str!</span>(<span class="string">"m/0"</span>)))
)],
- <span class="string">"Wrong input tap_key_origins"</span>
- );
+ <span class="string">"Wrong input tap_key_origins"
+ </span>);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">outputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_key_origins</span>
- .<span class="ident">clone</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>(),
+ psbt.outputs[<span class="number">0</span>]
+ .tap_key_origins
+ .clone()
+ .into_iter()
+ .collect::<Vec<<span class="kw">_</span>>>(),
<span class="macro">vec!</span>[(
<span class="macro">from_str!</span>(<span class="string">"e9b03068cf4a2621d4f81e68f6c4216e6bd260fe6edf6acc55c8d8ae5aeff0a8"</span>),
(<span class="macro">vec!</span>[], (<span class="macro">from_str!</span>(<span class="string">"f6a5cb8b"</span>), <span class="macro">from_str!</span>(<span class="string">"m/1"</span>)))
)],
- <span class="string">"Wrong output tap_key_origins"</span>
- );
+ <span class="string">"Wrong output tap_key_origins"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_psbt_populate_tap_key_origins_repeated_key</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_repeated_key</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_psbt_populate_tap_key_origins_repeated_key() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_repeated_key());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="macro">vec!</span>[(<span class="string">"e5mmg3xh"</span>.<span class="ident">to_string</span>(), <span class="macro">vec!</span>[<span class="number">0</span>])]
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>();
+ <span class="kw">let </span>path = <span class="macro">vec!</span>[(<span class="string">"e5mmg3xh"</span>.to_string(), <span class="macro">vec!</span>[<span class="number">0</span>])]
+ .into_iter()
+ .collect();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>)
- .<span class="ident">policy_path</span>(<span class="ident">path</span>, <span class="ident">KeychainKind::External</span>);
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">25_000</span>)
+ .policy_path(path, KeychainKind::External);
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">input_key_origins</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_key_origins</span>
- .<span class="ident">clone</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="ident">input_key_origins</span>.<span class="ident">sort</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>input_key_origins = psbt.inputs[<span class="number">0</span>]
+ .tap_key_origins
+ .clone()
+ .into_iter()
+ .collect::<Vec<<span class="kw">_</span>>>();
+ input_key_origins.sort();
<span class="macro">assert_eq!</span>(
- <span class="ident">input_key_origins</span>,
+ input_key_origins,
<span class="macro">vec!</span>[
(
<span class="macro">from_str!</span>(<span class="string">"b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55"</span>),
(
<span class="macro">vec!</span>[],
- (<span class="ident">FromStr::from_str</span>(<span class="string">"871fd295"</span>).<span class="ident">unwrap</span>(), <span class="macro">vec!</span>[].<span class="ident">into</span>())
+ (FromStr::from_str(<span class="string">"871fd295"</span>).unwrap(), <span class="macro">vec!</span>[].into())
)
),
(
(
<span class="macro">vec!</span>[
<span class="macro">from_str!</span>(
- <span class="string">"858ad7a7d7f270e2c490c4d6ba00c499e46b18fdd59ea3c2c47d20347110271e"</span>
- ),
+ <span class="string">"858ad7a7d7f270e2c490c4d6ba00c499e46b18fdd59ea3c2c47d20347110271e"
+ </span>),
<span class="macro">from_str!</span>(
- <span class="string">"f6e927ad4492c051fe325894a4f5f14538333b55a35f099876be42009ec8f903"</span>
- ),
+ <span class="string">"f6e927ad4492c051fe325894a4f5f14538333b55a35f099876be42009ec8f903"
+ </span>),
],
- (<span class="ident">FromStr::from_str</span>(<span class="string">"ece52657"</span>).<span class="ident">unwrap</span>(), <span class="macro">vec!</span>[].<span class="ident">into</span>())
+ (FromStr::from_str(<span class="string">"ece52657"</span>).unwrap(), <span class="macro">vec!</span>[].into())
)
)
],
- <span class="string">"Wrong input tap_key_origins"</span>
- );
+ <span class="string">"Wrong input tap_key_origins"
+ </span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">output_key_origins</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">outputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_key_origins</span>
- .<span class="ident">clone</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="ident">output_key_origins</span>.<span class="ident">sort</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>output_key_origins = psbt.outputs[<span class="number">0</span>]
+ .tap_key_origins
+ .clone()
+ .into_iter()
+ .collect::<Vec<<span class="kw">_</span>>>();
+ output_key_origins.sort();
<span class="macro">assert_eq!</span>(
- <span class="ident">input_key_origins</span>, <span class="ident">output_key_origins</span>,
- <span class="string">"Wrong output tap_key_origins"</span>
- );
+ input_key_origins, output_key_origins,
+ <span class="string">"Wrong output tap_key_origins"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_psbt_input_tap_tree</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin::psbt::serialize::Deserialize</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin::psbt::TapTree</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util::taproot</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_psbt_input_tap_tree() {
+ <span class="kw">use </span><span class="kw">crate</span>::bitcoin::psbt::serialize::Deserialize;
+ <span class="kw">use </span><span class="kw">crate</span>::bitcoin::psbt::TapTree;
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
+ <span class="kw">use </span>bitcoin::util::taproot;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::Peek</span>(<span class="number">0</span>)).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::Peek(<span class="number">0</span>)).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">tap_merkle_root</span>,
+ psbt.inputs[<span class="number">0</span>].tap_merkle_root,
<span class="prelude-val">Some</span>(
- <span class="ident">FromHex::from_hex</span>(
- <span class="string">"61f81509635053e52d9d1217545916167394490da2287aca4693606e43851986"</span>
- )
- .<span class="ident">unwrap</span>()
+ FromHex::from_hex(
+ <span class="string">"61f81509635053e52d9d1217545916167394490da2287aca4693606e43851986"
+ </span>)
+ .unwrap()
),
);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">tap_scripts</span>.<span class="ident">clone</span>().<span class="ident">into_iter</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>(),
+ psbt.inputs[<span class="number">0</span>].tap_scripts.clone().into_iter().collect::<Vec<<span class="kw">_</span>>>(),
<span class="macro">vec!</span>[
- (<span class="ident">taproot::ControlBlock::from_slice</span>(<span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"c0b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55b7ef769a745e625ed4b9a4982a4dc08274c59187e73e6f07171108f455081cb2"</span>).<span class="ident">unwrap</span>()).<span class="ident">unwrap</span>(), (<span class="macro">from_str!</span>(<span class="string">"208aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642ac"</span>), <span class="ident">taproot::LeafVersion::TapScript</span>)),
- (<span class="ident">taproot::ControlBlock::from_slice</span>(<span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"c0b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55b9a515f7be31a70186e3c5937ee4a70cc4b4e1efe876c1d38e408222ffc64834"</span>).<span class="ident">unwrap</span>()).<span class="ident">unwrap</span>(), (<span class="macro">from_str!</span>(<span class="string">"2051494dc22e24a32fe9dcfbd7e85faf345fa1df296fb49d156e859ef345201295ac"</span>), <span class="ident">taproot::LeafVersion::TapScript</span>)),
+ (taproot::ControlBlock::from_slice(<span class="kw-2">&</span>Vec::<u8>::from_hex(<span class="string">"c0b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55b7ef769a745e625ed4b9a4982a4dc08274c59187e73e6f07171108f455081cb2"</span>).unwrap()).unwrap(), (<span class="macro">from_str!</span>(<span class="string">"208aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642ac"</span>), taproot::LeafVersion::TapScript)),
+ (taproot::ControlBlock::from_slice(<span class="kw-2">&</span>Vec::<u8>::from_hex(<span class="string">"c0b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55b9a515f7be31a70186e3c5937ee4a70cc4b4e1efe876c1d38e408222ffc64834"</span>).unwrap()).unwrap(), (<span class="macro">from_str!</span>(<span class="string">"2051494dc22e24a32fe9dcfbd7e85faf345fa1df296fb49d156e859ef345201295ac"</span>), taproot::LeafVersion::TapScript)),
],
);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">tap_internal_key</span>,
+ psbt.inputs[<span class="number">0</span>].tap_internal_key,
<span class="prelude-val">Some</span>(<span class="macro">from_str!</span>(
- <span class="string">"b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55"</span>
- ))
+ <span class="string">"b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55"
+ </span>))
);
- <span class="comment">// Since we are creating an output to the same address as the input, assert that the</span>
- <span class="comment">// internal_key is the same</span>
- <span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">tap_internal_key</span>,
- <span class="ident">psbt</span>.<span class="ident">outputs</span>[<span class="number">0</span>].<span class="ident">tap_internal_key</span>
+ <span class="comment">// Since we are creating an output to the same address as the input, assert that the
+ // internal_key is the same
+ </span><span class="macro">assert_eq!</span>(
+ psbt.inputs[<span class="number">0</span>].tap_internal_key,
+ psbt.outputs[<span class="number">0</span>].tap_internal_key
);
<span class="macro">assert_eq!</span>(
- <span class="ident">psbt</span>.<span class="ident">outputs</span>[<span class="number">0</span>].<span class="ident">tap_tree</span>,
- <span class="prelude-val">Some</span>(<span class="ident">TapTree::deserialize</span>(<span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"01c022208aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642ac01c0222051494dc22e24a32fe9dcfbd7e85faf345fa1df296fb49d156e859ef345201295ac"</span>,).<span class="ident">unwrap</span>()).<span class="ident">unwrap</span>())
+ psbt.outputs[<span class="number">0</span>].tap_tree,
+ <span class="prelude-val">Some</span>(TapTree::deserialize(<span class="kw-2">&</span>Vec::<u8>::from_hex(<span class="string">"01c022208aee2b8120a5f157f1223f72b5e62b825831a27a9fdf427db7cc697494d4a642ac01c0222051494dc22e24a32fe9dcfbd7e85faf345fa1df296fb49d156e859ef345201295ac"</span>,).unwrap()).unwrap())
);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_sign_missing_witness_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">witness_utxo</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span>.<span class="ident">take</span>();
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">allow_all_sighashes</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_sign_missing_witness_utxo() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ <span class="kw">let </span>witness_utxo = psbt.inputs[<span class="number">0</span>].witness_utxo.take();
+
+ <span class="kw">let </span>result = wallet.sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ allow_all_sighashes: <span class="bool-val">true</span>,
+ ..Default::default()
},
);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">is_err</span>(),
- <span class="string">"Signing should have failed because the witness_utxo is missing"</span>
- );
+ result.is_err(),
+ <span class="string">"Signing should have failed because the witness_utxo is missing"
+ </span>);
<span class="macro">assert!</span>(
<span class="macro">matches!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::Signer</span>(<span class="ident">SignerError::MissingWitnessUtxo</span>)
+ result.unwrap_err(),
+ Error::Signer(SignerError::MissingWitnessUtxo)
),
- <span class="string">"Signing failed with the wrong error type"</span>
- );
+ <span class="string">"Signing failed with the wrong error type"
+ </span>);
- <span class="comment">// restore the witness_utxo</span>
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span> <span class="op">=</span> <span class="ident">witness_utxo</span>;
+ <span class="comment">// restore the witness_utxo
+ </span>psbt.inputs[<span class="number">0</span>].witness_utxo = witness_utxo;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">allow_all_sighashes</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span>result = wallet.sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ allow_all_sighashes: <span class="bool-val">true</span>,
+ ..Default::default()
},
);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_ok</span>(), <span class="string">"Signing should have worked"</span>);
+ <span class="macro">assert!</span>(result.is_ok(), <span class="string">"Signing should have worked"</span>);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap</span>(),
- <span class="string">"Should finalize the input since we can produce signatures"</span>
- );
+ result.unwrap(),
+ <span class="string">"Should finalize the input since we can produce signatures"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_sign_using_non_witness_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="ident">prev_txid</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_sign_using_non_witness_utxo() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, prev_txid) = get_funded_wallet(get_test_tr_single_sig());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span> <span class="op">=</span> <span class="prelude-val">None</span>;
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">database</span>().<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">prev_txid</span>).<span class="ident">unwrap</span>();
+ psbt.inputs[<span class="number">0</span>].witness_utxo = <span class="prelude-val">None</span>;
+ psbt.inputs[<span class="number">0</span>].non_witness_utxo = wallet.database().get_raw_tx(<span class="kw-2">&</span>prev_txid).unwrap();
<span class="macro">assert!</span>(
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">non_witness_utxo</span>.<span class="ident">is_some</span>(),
- <span class="string">"Previous tx should be present in the database"</span>
- );
+ psbt.inputs[<span class="number">0</span>].non_witness_utxo.is_some(),
+ <span class="string">"Previous tx should be present in the database"
+ </span>);
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>());
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_ok</span>(), <span class="string">"Signing should have worked"</span>);
+ <span class="kw">let </span>result = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default());
+ <span class="macro">assert!</span>(result.is_ok(), <span class="string">"Signing should have worked"</span>);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap</span>(),
- <span class="string">"Should finalize the input since we can produce signatures"</span>
- );
+ result.unwrap(),
+ <span class="string">"Should finalize the input since we can produce signatures"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_foreign_utxo</span>() {
- <span class="kw">let</span> (<span class="ident">wallet1</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
- <span class="kw">let</span> (<span class="ident">wallet2</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_foreign_utxo() {
+ <span class="kw">let </span>(wallet1, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_wpkh());
+ <span class="kw">let </span>(wallet2, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="ident">wallet2</span>.<span class="ident">list_unspent</span>().<span class="ident">unwrap</span>().<span class="ident">remove</span>(<span class="number">0</span>);
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="ident">wallet2</span>.<span class="ident">get_psbt_input</span>(<span class="ident">utxo</span>.<span class="ident">clone</span>(), <span class="prelude-val">None</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">foreign_utxo_satisfaction</span> <span class="op">=</span> <span class="ident">wallet2</span>
- .<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">KeychainKind::External</span>)
- .<span class="ident">max_satisfaction_weight</span>()
- .<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span>utxo = wallet2.list_unspent().unwrap().remove(<span class="number">0</span>);
+ <span class="kw">let </span>psbt_input = wallet2.get_psbt_input(utxo.clone(), <span class="prelude-val">None</span>, <span class="bool-val">false</span>).unwrap();
+ <span class="kw">let </span>foreign_utxo_satisfaction = wallet2
+ .get_descriptor_for_keychain(KeychainKind::External)
+ .max_satisfaction_weight()
+ .unwrap();
<span class="macro">assert!</span>(
- <span class="ident">psbt_input</span>.<span class="ident">non_witness_utxo</span>.<span class="ident">is_none</span>(),
- <span class="string">"`non_witness_utxo` should never be populated for taproot"</span>
- );
+ psbt_input.non_witness_utxo.is_none(),
+ <span class="string">"`non_witness_utxo` should never be populated for taproot"
+ </span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet1</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">60_000</span>)
- .<span class="ident">add_foreign_utxo</span>(<span class="ident">utxo</span>.<span class="ident">outpoint</span>, <span class="ident">psbt_input</span>, <span class="ident">foreign_utxo_satisfaction</span>)
- .<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet1.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), <span class="number">60_000</span>)
+ .add_foreign_utxo(utxo.outpoint, psbt_input, foreign_utxo_satisfaction)
+ .unwrap();
+ <span class="kw">let </span>(psbt, details) = builder.finish().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">details</span>.<span class="ident">sent</span> <span class="op">-</span> <span class="ident">details</span>.<span class="ident">received</span>,
- <span class="number">10_000</span> <span class="op">+</span> <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>),
- <span class="string">"we should have only net spent ~10_000"</span>
- );
+ details.sent - details.received,
+ <span class="number">10_000 </span>+ details.fee.unwrap_or(<span class="number">0</span>),
+ <span class="string">"we should have only net spent ~10_000"
+ </span>);
<span class="macro">assert!</span>(
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>
- .<span class="ident">input</span>
- .<span class="ident">iter</span>()
- .<span class="ident">any</span>(<span class="op">|</span><span class="ident">input</span><span class="op">|</span> <span class="ident">input</span>.<span class="ident">previous_output</span> <span class="op">==</span> <span class="ident">utxo</span>.<span class="ident">outpoint</span>),
- <span class="string">"foreign_utxo should be in there"</span>
- );
+ psbt.unsigned_tx
+ .input
+ .iter()
+ .any(|input| input.previous_output == utxo.outpoint),
+ <span class="string">"foreign_utxo should be in there"
+ </span>);
}
- <span class="kw">fn</span> <span class="ident">test_spend_from_wallet</span>(<span class="ident">wallet</span>: <span class="ident">Wallet</span><span class="op"><</span><span class="ident">AnyDatabase</span><span class="op">></span>) {
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="kw">fn </span>test_spend_from_wallet(wallet: Wallet<AnyDatabase>) {
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert!</span>(
- <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>(),
- <span class="string">"Unable to finalize tx"</span>
- );
+ wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap(),
+ <span class="string">"Unable to finalize tx"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_key_spend</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig</span>());
- <span class="ident">test_spend_from_wallet</span>(<span class="ident">wallet</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_key_spend() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig());
+ test_spend_from_wallet(wallet);
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig_xprv</span>());
- <span class="ident">test_spend_from_wallet</span>(<span class="ident">wallet</span>);
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig_xprv());
+ test_spend_from_wallet(wallet);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_no_key_spend</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree_both_priv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_no_key_spend() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert!</span>(
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">sign_with_tap_internal_key</span>: <span class="bool-val">false</span>,
- ..<span class="ident">Default::default</span>()
+ wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ sign_with_tap_internal_key: <span class="bool-val">false</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>(),
- <span class="string">"Unable to finalize tx"</span>
- );
+ .unwrap(),
+ <span class="string">"Unable to finalize tx"
+ </span>);
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">all</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">tap_key_sig</span>.<span class="ident">is_none</span>()));
+ <span class="macro">assert!</span>(psbt.inputs.iter().all(|i| i.tap_key_sig.is_none()));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_script_spend</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree</span>());
- <span class="ident">test_spend_from_wallet</span>(<span class="ident">wallet</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_script_spend() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree());
+ test_spend_from_wallet(wallet);
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree_xprv</span>());
- <span class="ident">test_spend_from_wallet</span>(<span class="ident">wallet</span>);
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree_xprv());
+ test_spend_from_wallet(wallet);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_script_spend_sign_all_leaves</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer::TapLeavesOptions</span>;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree_both_priv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_script_spend_sign_all_leaves() {
+ <span class="kw">use </span><span class="kw">crate</span>::signer::TapLeavesOptions;
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
<span class="macro">assert!</span>(
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">tap_leaves_options</span>: <span class="ident">TapLeavesOptions::All</span>,
- ..<span class="ident">Default::default</span>()
+ wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ tap_leaves_options: TapLeavesOptions::All,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>(),
- <span class="string">"Unable to finalize tx"</span>
- );
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>
- .<span class="ident">inputs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">all</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">tap_script_sigs</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="ident">i</span>.<span class="ident">tap_scripts</span>.<span class="ident">len</span>()));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_script_spend_sign_include_some_leaves</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer::TapLeavesOptions</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util::taproot::TapLeafHash</span>;
-
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree_both_priv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">script_leaves</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_scripts</span>
- .<span class="ident">clone</span>()
- .<span class="ident">values</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">script</span>, <span class="ident">version</span>)<span class="op">|</span> <span class="ident">TapLeafHash::from_script</span>(<span class="ident">script</span>, <span class="kw-2">*</span><span class="ident">version</span>))
- .<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="ident">included_script_leaves</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">script_leaves</span>.<span class="ident">pop</span>().<span class="ident">unwrap</span>()];
- <span class="kw">let</span> <span class="ident">excluded_script_leaves</span> <span class="op">=</span> <span class="ident">script_leaves</span>;
+ .unwrap(),
+ <span class="string">"Unable to finalize tx"
+ </span>);
+
+ <span class="macro">assert!</span>(psbt
+ .inputs
+ .iter()
+ .all(|i| i.tap_script_sigs.len() == i.tap_scripts.len()));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_script_spend_sign_include_some_leaves() {
+ <span class="kw">use </span><span class="kw">crate</span>::signer::TapLeavesOptions;
+ <span class="kw">use </span>bitcoin::util::taproot::TapLeafHash;
+
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>script_leaves: Vec<<span class="kw">_</span>> = psbt.inputs[<span class="number">0</span>]
+ .tap_scripts
+ .clone()
+ .values()
+ .map(|(script, version)| TapLeafHash::from_script(script, <span class="kw-2">*</span>version))
+ .collect();
+ <span class="kw">let </span>included_script_leaves = <span class="macro">vec!</span>[script_leaves.pop().unwrap()];
+ <span class="kw">let </span>excluded_script_leaves = script_leaves;
<span class="macro">assert!</span>(
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">tap_leaves_options</span>: <span class="ident">TapLeavesOptions::Include</span>(
- <span class="ident">included_script_leaves</span>.<span class="ident">clone</span>()
+ wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ tap_leaves_options: TapLeavesOptions::Include(
+ included_script_leaves.clone()
),
- ..<span class="ident">Default::default</span>()
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>(),
- <span class="string">"Unable to finalize tx"</span>
- );
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_script_sigs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">all</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">included_script_leaves</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">s</span>.<span class="number">0</span> .<span class="number">1</span>)
- <span class="op">&&</span> <span class="op">!</span><span class="ident">excluded_script_leaves</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">s</span>.<span class="number">0</span> .<span class="number">1</span>)));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_script_spend_sign_exclude_some_leaves</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer::TapLeavesOptions</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::util::taproot::TapLeafHash</span>;
-
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree_both_priv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">script_leaves</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_scripts</span>
- .<span class="ident">clone</span>()
- .<span class="ident">values</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">script</span>, <span class="ident">version</span>)<span class="op">|</span> <span class="ident">TapLeafHash::from_script</span>(<span class="ident">script</span>, <span class="kw-2">*</span><span class="ident">version</span>))
- .<span class="ident">collect</span>();
- <span class="kw">let</span> <span class="ident">included_script_leaves</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">script_leaves</span>.<span class="ident">pop</span>().<span class="ident">unwrap</span>()];
- <span class="kw">let</span> <span class="ident">excluded_script_leaves</span> <span class="op">=</span> <span class="ident">script_leaves</span>;
+ .unwrap(),
+ <span class="string">"Unable to finalize tx"
+ </span>);
+
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>]
+ .tap_script_sigs
+ .iter()
+ .all(|s| included_script_leaves.contains(<span class="kw-2">&</span>s.<span class="number">0 </span>.<span class="number">1</span>)
+ && !excluded_script_leaves.contains(<span class="kw-2">&</span>s.<span class="number">0 </span>.<span class="number">1</span>)));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_script_spend_sign_exclude_some_leaves() {
+ <span class="kw">use </span><span class="kw">crate</span>::signer::TapLeavesOptions;
+ <span class="kw">use </span>bitcoin::util::taproot::TapLeafHash;
+
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>script_leaves: Vec<<span class="kw">_</span>> = psbt.inputs[<span class="number">0</span>]
+ .tap_scripts
+ .clone()
+ .values()
+ .map(|(script, version)| TapLeafHash::from_script(script, <span class="kw-2">*</span>version))
+ .collect();
+ <span class="kw">let </span>included_script_leaves = <span class="macro">vec!</span>[script_leaves.pop().unwrap()];
+ <span class="kw">let </span>excluded_script_leaves = script_leaves;
<span class="macro">assert!</span>(
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">tap_leaves_options</span>: <span class="ident">TapLeavesOptions::Exclude</span>(
- <span class="ident">excluded_script_leaves</span>.<span class="ident">clone</span>()
+ wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ tap_leaves_options: TapLeavesOptions::Exclude(
+ excluded_script_leaves.clone()
),
- ..<span class="ident">Default::default</span>()
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>(),
- <span class="string">"Unable to finalize tx"</span>
- );
-
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>]
- .<span class="ident">tap_script_sigs</span>
- .<span class="ident">iter</span>()
- .<span class="ident">all</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">included_script_leaves</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">s</span>.<span class="number">0</span> .<span class="number">1</span>)
- <span class="op">&&</span> <span class="op">!</span><span class="ident">excluded_script_leaves</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">s</span>.<span class="number">0</span> .<span class="number">1</span>)));
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_script_spend_sign_no_leaves</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::signer::TapLeavesOptions</span>;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_with_taptree_both_priv</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">tap_leaves_options</span>: <span class="ident">TapLeavesOptions::None</span>,
- ..<span class="ident">Default::default</span>()
+ .unwrap(),
+ <span class="string">"Unable to finalize tx"
+ </span>);
+
+ <span class="macro">assert!</span>(psbt.inputs[<span class="number">0</span>]
+ .tap_script_sigs
+ .iter()
+ .all(|s| included_script_leaves.contains(<span class="kw-2">&</span>s.<span class="number">0 </span>.<span class="number">1</span>)
+ && !excluded_script_leaves.contains(<span class="kw-2">&</span>s.<span class="number">0 </span>.<span class="number">1</span>)));
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_script_spend_sign_no_leaves() {
+ <span class="kw">use </span><span class="kw">crate</span>::signer::TapLeavesOptions;
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ tap_leaves_options: TapLeavesOptions::None,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="macro">assert!</span>(<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">iter</span>().<span class="ident">all</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">tap_script_sigs</span>.<span class="ident">is_empty</span>()));
+ <span class="macro">assert!</span>(psbt.inputs.iter().all(|i| i.tap_script_sigs.is_empty()));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_sign_derive_index_from_psbt</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig_xprv</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_sign_derive_index_from_psbt() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig_xprv());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">AddressIndex::New</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = wallet.get_address(AddressIndex::New).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">25_000</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), <span class="number">25_000</span>);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="comment">// re-create the wallet with an empty db</span>
- <span class="kw">let</span> <span class="ident">wallet_empty</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="ident">get_test_tr_single_sig_xprv</span>(),
+ <span class="comment">// re-create the wallet with an empty db
+ </span><span class="kw">let </span>wallet_empty = Wallet::new(
+ get_test_tr_single_sig_xprv(),
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">MemoryDatabase::new</span>()),
+ Network::Regtest,
+ AnyDatabase::Memory(MemoryDatabase::new()),
)
- .<span class="ident">unwrap</span>();
-
- <span class="comment">// signing with an empty db means that we will only look at the psbt to infer the</span>
- <span class="comment">// derivation index</span>
+ .unwrap();
+
+ <span class="comment">// signing with an empty db means that we will only look at the psbt to infer the
+ // derivation index
+ </span><span class="macro">assert!</span>(
+ wallet_empty.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap(),
+ <span class="string">"Unable to finalize tx"
+ </span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_sign_explicit_sighash_all() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .sighash(SchnorrSighashType::All.into())
+ .drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
+
+ <span class="kw">let </span>result = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default());
<span class="macro">assert!</span>(
- <span class="ident">wallet_empty</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>(),
- <span class="string">"Unable to finalize tx"</span>
- );
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_sign_explicit_sighash_all</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">sighash</span>(<span class="ident">SchnorrSighashType::All</span>.<span class="ident">into</span>())
- .<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>());
- <span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">is_ok</span>(),
- <span class="string">"Signing should work because SIGHASH_ALL is safe"</span>
- )
+ result.is_ok(),
+ <span class="string">"Signing should work because SIGHASH_ALL is safe"
+ </span>)
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_sign_non_default_sighash</span>() {
- <span class="kw">let</span> <span class="ident">sighash</span> <span class="op">=</span> <span class="ident">SchnorrSighashType::NonePlusAnyoneCanPay</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_sign_non_default_sighash() {
+ <span class="kw">let </span>sighash = SchnorrSighashType::NonePlusAnyoneCanPay;
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_single_sig</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">sighash</span>(<span class="ident">sighash</span>.<span class="ident">into</span>())
- .<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_single_sig());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .sighash(sighash.into())
+ .drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="kw">let</span> <span class="ident">witness_utxo</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span>.<span class="ident">take</span>();
+ <span class="kw">let </span>witness_utxo = psbt.inputs[<span class="number">0</span>].witness_utxo.take();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>());
+ <span class="kw">let </span>result = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default());
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">is_err</span>(),
- <span class="string">"Signing should have failed because the TX uses non-standard sighashes"</span>
- );
+ result.is_err(),
+ <span class="string">"Signing should have failed because the TX uses non-standard sighashes"
+ </span>);
<span class="macro">assert!</span>(
<span class="macro">matches!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::Signer</span>(<span class="ident">SignerError::NonStandardSighash</span>)
+ result.unwrap_err(),
+ Error::Signer(SignerError::NonStandardSighash)
),
- <span class="string">"Signing failed with the wrong error type"</span>
- );
-
- <span class="comment">// try again after opting-in</span>
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">allow_all_sighashes</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="string">"Signing failed with the wrong error type"
+ </span>);
+
+ <span class="comment">// try again after opting-in
+ </span><span class="kw">let </span>result = wallet.sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ allow_all_sighashes: <span class="bool-val">true</span>,
+ ..Default::default()
},
);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">is_err</span>(),
- <span class="string">"Signing should have failed because the witness_utxo is missing"</span>
- );
+ result.is_err(),
+ <span class="string">"Signing should have failed because the witness_utxo is missing"
+ </span>);
<span class="macro">assert!</span>(
<span class="macro">matches!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::Signer</span>(<span class="ident">SignerError::MissingWitnessUtxo</span>)
+ result.unwrap_err(),
+ Error::Signer(SignerError::MissingWitnessUtxo)
),
- <span class="string">"Signing failed with the wrong error type"</span>
- );
+ <span class="string">"Signing failed with the wrong error type"
+ </span>);
- <span class="comment">// restore the witness_utxo</span>
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">witness_utxo</span> <span class="op">=</span> <span class="ident">witness_utxo</span>;
+ <span class="comment">// restore the witness_utxo
+ </span>psbt.inputs[<span class="number">0</span>].witness_utxo = witness_utxo;
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">allow_all_sighashes</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span>result = wallet.sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ allow_all_sighashes: <span class="bool-val">true</span>,
+ ..Default::default()
},
);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_ok</span>(), <span class="string">"Signing should have worked"</span>);
+ <span class="macro">assert!</span>(result.is_ok(), <span class="string">"Signing should have worked"</span>);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">unwrap</span>(),
- <span class="string">"Should finalize the input since we can produce signatures"</span>
- );
+ result.unwrap(),
+ <span class="string">"Should finalize the input since we can produce signatures"
+ </span>);
- <span class="kw">let</span> <span class="ident">extracted</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
+ <span class="kw">let </span>extracted = psbt.extract_tx();
<span class="macro">assert_eq!</span>(
- <span class="kw-2">*</span><span class="ident">extracted</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">witness</span>.<span class="ident">to_vec</span>()[<span class="number">0</span>].<span class="ident">last</span>().<span class="ident">unwrap</span>(),
- <span class="ident">sighash</span> <span class="kw">as</span> <span class="ident">u8</span>,
- <span class="string">"The signature should have been made with the right sighash"</span>
- );
+ <span class="kw-2">*</span>extracted.input[<span class="number">0</span>].witness.to_vec()[<span class="number">0</span>].last().unwrap(),
+ sighash <span class="kw">as </span>u8,
+ <span class="string">"The signature should have been made with the right sighash"
+ </span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_spend_coinbase</span>() {
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="macro">testutils!</span>(@<span class="ident">descriptors</span> (<span class="ident">get_test_wpkh</span>()));
- <span class="kw">let</span> <span class="ident">wallet</span> <span class="op">=</span> <span class="ident">Wallet::new</span>(
- <span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="number">0</span>,
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_spend_coinbase() {
+ <span class="kw">let </span>descriptors = <span class="macro">testutils!</span>(@descriptors (get_test_wpkh()));
+ <span class="kw">let </span>wallet = Wallet::new(
+ <span class="kw-2">&</span>descriptors.<span class="number">0</span>,
<span class="prelude-val">None</span>,
- <span class="ident">Network::Regtest</span>,
- <span class="ident">AnyDatabase::Memory</span>(<span class="ident">MemoryDatabase::new</span>()),
+ Network::Regtest,
+ AnyDatabase::Memory(MemoryDatabase::new()),
)
- .<span class="ident">unwrap</span>();
+ .unwrap();
- <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="number">5</span>;
+ <span class="kw">let </span>confirmation_time = <span class="number">5</span>;
<span class="macro">crate::populate_test_db!</span>(
- <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
- <span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>),
- (@<span class="ident">coinbase</span> <span class="bool-val">true</span>)
- );
- <span class="kw">let</span> <span class="ident">sync_time</span> <span class="op">=</span> <span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="ident">confirmation_time</span>,
- <span class="ident">timestamp</span>: <span class="number">0</span>,
+ wallet.database.borrow_mut(),
+ <span class="macro">testutils! </span>(@tx ( (@external descriptors, <span class="number">0</span>) => <span class="number">25_000 </span>) (@confirmations <span class="number">1</span>)),
+ <span class="prelude-val">Some</span>(confirmation_time),
+ (@coinbase <span class="bool-val">true</span>)
+ );
+ <span class="kw">let </span>sync_time = SyncTime {
+ block_time: BlockTime {
+ height: confirmation_time,
+ timestamp: <span class="number">0</span>,
},
};
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_sync_time</span>(<span class="ident">sync_time</span>)
- .<span class="ident">unwrap</span>();
+ wallet
+ .database
+ .borrow_mut()
+ .set_sync_time(sync_time)
+ .unwrap();
- <span class="kw">let</span> <span class="ident">not_yet_mature_time</span> <span class="op">=</span> <span class="ident">confirmation_time</span> <span class="op">+</span> <span class="ident">COINBASE_MATURITY</span> <span class="op">-</span> <span class="number">1</span>;
- <span class="kw">let</span> <span class="ident">maturity_time</span> <span class="op">=</span> <span class="ident">confirmation_time</span> <span class="op">+</span> <span class="ident">COINBASE_MATURITY</span>;
+ <span class="kw">let </span>not_yet_mature_time = confirmation_time + COINBASE_MATURITY - <span class="number">1</span>;
+ <span class="kw">let </span>maturity_time = confirmation_time + COINBASE_MATURITY;
- <span class="kw">let</span> <span class="ident">balance</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_balance</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>balance = wallet.get_balance().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">balance</span>,
- <span class="ident">Balance</span> {
- <span class="ident">immature</span>: <span class="number">25_000</span>,
- <span class="ident">trusted_pending</span>: <span class="number">0</span>,
- <span class="ident">untrusted_pending</span>: <span class="number">0</span>,
- <span class="ident">confirmed</span>: <span class="number">0</span>
- }
- );
-
- <span class="comment">// We try to create a transaction, only to notice that all</span>
- <span class="comment">// our funds are unspendable</span>
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="ident">balance</span>.<span class="ident">immature</span> <span class="op">/</span> <span class="number">2</span>)
- .<span class="ident">current_height</span>(<span class="ident">confirmation_time</span>);
+ balance,
+ Balance {
+ immature: <span class="number">25_000</span>,
+ trusted_pending: <span class="number">0</span>,
+ untrusted_pending: <span class="number">0</span>,
+ confirmed: <span class="number">0
+ </span>}
+ );
+
+ <span class="comment">// We try to create a transaction, only to notice that all
+ // our funds are unspendable
+ </span><span class="kw">let </span>addr = Address::from_str(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), balance.immature / <span class="number">2</span>)
+ .current_height(confirmation_time);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">needed</span>: <span class="kw">_</span>,
- <span class="ident">available</span>: <span class="number">0</span>
- }
+ builder.finish().unwrap_err(),
+ Error::InsufficientFunds {
+ needed: <span class="kw">_</span>,
+ available: <span class="number">0
+ </span>}
));
- <span class="comment">// Still unspendable...</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="ident">balance</span>.<span class="ident">immature</span> <span class="op">/</span> <span class="number">2</span>)
- .<span class="ident">current_height</span>(<span class="ident">not_yet_mature_time</span>);
+ <span class="comment">// Still unspendable...
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), balance.immature / <span class="number">2</span>)
+ .current_height(not_yet_mature_time);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::InsufficientFunds</span> {
- <span class="ident">needed</span>: <span class="kw">_</span>,
- <span class="ident">available</span>: <span class="number">0</span>
- }
+ builder.finish().unwrap_err(),
+ Error::InsufficientFunds {
+ needed: <span class="kw">_</span>,
+ available: <span class="number">0
+ </span>}
));
- <span class="comment">// ...Now the coinbase is mature :)</span>
- <span class="kw">let</span> <span class="ident">sync_time</span> <span class="op">=</span> <span class="ident">SyncTime</span> {
- <span class="ident">block_time</span>: <span class="ident">BlockTime</span> {
- <span class="ident">height</span>: <span class="ident">maturity_time</span>,
- <span class="ident">timestamp</span>: <span class="number">0</span>,
+ <span class="comment">// ...Now the coinbase is mature :)
+ </span><span class="kw">let </span>sync_time = SyncTime {
+ block_time: BlockTime {
+ height: maturity_time,
+ timestamp: <span class="number">0</span>,
},
};
- <span class="ident">wallet</span>
- .<span class="ident">database</span>
- .<span class="ident">borrow_mut</span>()
- .<span class="ident">set_sync_time</span>(<span class="ident">sync_time</span>)
- .<span class="ident">unwrap</span>();
+ wallet
+ .database
+ .borrow_mut()
+ .set_sync_time(sync_time)
+ .unwrap();
- <span class="kw">let</span> <span class="ident">balance</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_balance</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>balance = wallet.get_balance().unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">balance</span>,
- <span class="ident">Balance</span> {
- <span class="ident">immature</span>: <span class="number">0</span>,
- <span class="ident">trusted_pending</span>: <span class="number">0</span>,
- <span class="ident">untrusted_pending</span>: <span class="number">0</span>,
- <span class="ident">confirmed</span>: <span class="number">25_000</span>
- }
+ balance,
+ Balance {
+ immature: <span class="number">0</span>,
+ trusted_pending: <span class="number">0</span>,
+ untrusted_pending: <span class="number">0</span>,
+ confirmed: <span class="number">25_000
+ </span>}
);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="ident">balance</span>.<span class="ident">confirmed</span> <span class="op">/</span> <span class="number">2</span>)
- .<span class="ident">current_height</span>(<span class="ident">maturity_time</span>);
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .add_recipient(addr.script_pubkey(), balance.confirmed / <span class="number">2</span>)
+ .current_height(maturity_time);
+ builder.finish().unwrap();
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_allow_dust_limit</span>() {
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_single_sig_cltv</span>());
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_allow_dust_limit() {
+ <span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_single_sig_cltv());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
- <span class="ident">builder</span>.<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">0</span>);
+ builder.add_recipient(addr.script_pubkey(), <span class="number">0</span>);
<span class="macro">assert!</span>(<span class="macro">matches!</span>(
- <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap_err</span>(),
- <span class="ident">Error::OutputBelowDustLimit</span>(<span class="number">0</span>)
+ builder.finish().unwrap_err(),
+ Error::OutputBelowDustLimit(<span class="number">0</span>)
));
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
-
- <span class="ident">builder</span>
- .<span class="ident">allow_dust</span>(<span class="bool-val">true</span>)
- .<span class="ident">add_recipient</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>(), <span class="number">0</span>);
-
- <span class="macro">assert!</span>(<span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">is_ok</span>());
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_rate_sign_no_grinding_high_r</span>() {
- <span class="comment">// Our goal is to obtain a transaction with a signature with high-R (71 bytes</span>
- <span class="comment">// instead of 70). We then check that our fee rate and fee calculation is</span>
- <span class="comment">// alright.</span>
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="number">0</span>];
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">fee_rate</span>)
- .<span class="ident">add_data</span>(<span class="kw-2">&</span><span class="ident">data</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">op_return_vout</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">psbt</span>
- .<span class="ident">unsigned_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">iter</span>()
- .<span class="ident">enumerate</span>()
- .<span class="ident">find</span>(<span class="op">|</span>(<span class="ident">_n</span>, <span class="ident">i</span>)<span class="op">|</span> <span class="ident">i</span>.<span class="ident">script_pubkey</span>.<span class="ident">is_op_return</span>())
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">sig_len</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">0</span>;
- <span class="comment">// We try to sign many different times until we find a longer signature (71 bytes)</span>
- <span class="kw">while</span> <span class="ident">sig_len</span> <span class="op"><</span> <span class="number">71</span> {
- <span class="comment">// Changing the OP_RETURN data will make the signature change (but not the fee, until</span>
- <span class="comment">// data[0] is small enough)</span>
- <span class="ident">data</span>[<span class="number">0</span>] <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
- <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>[<span class="ident">op_return_vout</span>].<span class="ident">script_pubkey</span> <span class="op">=</span> <span class="ident">Script::new_op_return</span>(<span class="kw-2">&</span><span class="ident">data</span>);
- <span class="comment">// Clearing the previous signature</span>
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">partial_sigs</span>.<span class="ident">clear</span>();
- <span class="comment">// Signing</span>
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">remove_partial_sigs</span>: <span class="bool-val">false</span>,
- <span class="ident">try_finalize</span>: <span class="bool-val">false</span>,
- <span class="ident">allow_grinding</span>: <span class="bool-val">false</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+
+ builder
+ .allow_dust(<span class="bool-val">true</span>)
+ .add_recipient(addr.script_pubkey(), <span class="number">0</span>);
+
+ <span class="macro">assert!</span>(builder.finish().is_ok());
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_rate_sign_no_grinding_high_r() {
+ <span class="comment">// Our goal is to obtain a transaction with a signature with high-R (71 bytes
+ // instead of 70). We then check that our fee rate and fee calculation is
+ // alright.
+ </span><span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">1.0</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ <span class="kw">let </span><span class="kw-2">mut </span>data = <span class="macro">vec!</span>[<span class="number">0</span>];
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .fee_rate(fee_rate)
+ .add_data(<span class="kw-2">&</span>data);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, details) = builder.finish().unwrap();
+ <span class="kw">let </span>(op_return_vout, <span class="kw">_</span>) = psbt
+ .unsigned_tx
+ .output
+ .iter()
+ .enumerate()
+ .find(|(_n, i)| i.script_pubkey.is_op_return())
+ .unwrap();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>sig_len: usize = <span class="number">0</span>;
+ <span class="comment">// We try to sign many different times until we find a longer signature (71 bytes)
+ </span><span class="kw">while </span>sig_len < <span class="number">71 </span>{
+ <span class="comment">// Changing the OP_RETURN data will make the signature change (but not the fee, until
+ // data[0] is small enough)
+ </span>data[<span class="number">0</span>] += <span class="number">1</span>;
+ psbt.unsigned_tx.output[op_return_vout].script_pubkey = Script::new_op_return(<span class="kw-2">&</span>data);
+ <span class="comment">// Clearing the previous signature
+ </span>psbt.inputs[<span class="number">0</span>].partial_sigs.clear();
+ <span class="comment">// Signing
+ </span>wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ remove_partial_sigs: <span class="bool-val">false</span>,
+ try_finalize: <span class="bool-val">false</span>,
+ allow_grinding: <span class="bool-val">false</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
- <span class="comment">// We only have one key in the partial_sigs map, this is a trick to retrieve it</span>
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">partial_sigs</span>.<span class="ident">keys</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>();
- <span class="ident">sig_len</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">partial_sigs</span>[<span class="ident">key</span>].<span class="ident">sig</span>.<span class="ident">serialize_der</span>().<span class="ident">len</span>();
+ .unwrap();
+ <span class="comment">// We only have one key in the partial_sigs map, this is a trick to retrieve it
+ </span><span class="kw">let </span>key = psbt.inputs[<span class="number">0</span>].partial_sigs.keys().next().unwrap();
+ sig_len = psbt.inputs[<span class="number">0</span>].partial_sigs[key].sig.serialize_der().len();
}
- <span class="comment">// Actually finalizing the transaction...</span>
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">remove_partial_sigs</span>: <span class="bool-val">false</span>,
- <span class="ident">allow_grinding</span>: <span class="bool-val">false</span>,
- ..<span class="ident">Default::default</span>()
+ <span class="comment">// Actually finalizing the transaction...
+ </span>wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ remove_partial_sigs: <span class="bool-val">false</span>,
+ allow_grinding: <span class="bool-val">false</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
- <span class="comment">// ...and checking that everything is fine</span>
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">fee_rate</span>);
- }
-
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_fee_rate_sign_grinding_low_r</span>() {
- <span class="comment">// Our goal is to obtain a transaction with a signature with low-R (70 bytes)</span>
- <span class="comment">// by setting the `allow_grinding` signing option as true.</span>
- <span class="comment">// We then check that our fee rate and fee calculation is alright and that our</span>
- <span class="comment">// signature is 70 bytes.</span>
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">fee_rate</span> <span class="op">=</span> <span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">1.0</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>
- .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
- .<span class="ident">drain_wallet</span>()
- .<span class="ident">fee_rate</span>(<span class="ident">fee_rate</span>);
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
-
- <span class="ident">wallet</span>
- .<span class="ident">sign</span>(
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>,
- <span class="ident">SignOptions</span> {
- <span class="ident">remove_partial_sigs</span>: <span class="bool-val">false</span>,
- <span class="ident">allow_grinding</span>: <span class="bool-val">true</span>,
- ..<span class="ident">Default::default</span>()
+ .unwrap();
+ <span class="comment">// ...and checking that everything is fine
+ </span><span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), fee_rate);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_fee_rate_sign_grinding_low_r() {
+ <span class="comment">// Our goal is to obtain a transaction with a signature with low-R (70 bytes)
+ // by setting the `allow_grinding` signing option as true.
+ // We then check that our fee rate and fee calculation is alright and that our
+ // signature is 70 bytes.
+ </span><span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
+ <span class="kw">let </span>fee_rate = FeeRate::from_sat_per_vb(<span class="number">1.0</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder
+ .drain_to(addr.script_pubkey())
+ .drain_wallet()
+ .fee_rate(fee_rate);
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, details) = builder.finish().unwrap();
+
+ wallet
+ .sign(
+ <span class="kw-2">&mut </span>psbt,
+ SignOptions {
+ remove_partial_sigs: <span class="bool-val">false</span>,
+ allow_grinding: <span class="bool-val">true</span>,
+ ..Default::default()
},
)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">partial_sigs</span>.<span class="ident">keys</span>().<span class="ident">next</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">sig_len</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="number">0</span>].<span class="ident">partial_sigs</span>[<span class="ident">key</span>].<span class="ident">sig</span>.<span class="ident">serialize_der</span>().<span class="ident">len</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">sig_len</span>, <span class="number">70</span>);
- <span class="macro">assert_fee_rate!</span>(<span class="ident">psbt</span>, <span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="ident">fee_rate</span>);
- }
-
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"test-hardware-signer"</span>)]</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_create_signer</span>() {
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::wallet::hardwaresigner::HWISigner</span>;
- <span class="kw">use</span> <span class="ident">hwi::types::HWIChain</span>;
- <span class="kw">use</span> <span class="ident">hwi::HWIClient</span>;
-
- <span class="kw">let</span> <span class="ident">devices</span> <span class="op">=</span> <span class="ident">HWIClient::enumerate</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">device</span> <span class="op">=</span> <span class="ident">devices</span>.<span class="ident">first</span>().<span class="ident">expect</span>(<span class="string">"No devices found"</span>);
- <span class="kw">let</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">HWIClient::get_client</span>(<span class="ident">device</span>, <span class="bool-val">true</span>, <span class="ident">HWIChain::Regtest</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">descriptors</span> <span class="op">=</span> <span class="ident">client</span>.<span class="ident">get_descriptors</span>(<span class="prelude-val">None</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">custom_signer</span> <span class="op">=</span> <span class="ident">HWISigner::from_device</span>(<span class="ident">device</span>, <span class="ident">HWIChain::Regtest</span>).<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="kw-2">&</span><span class="ident">descriptors</span>.<span class="ident">internal</span>[<span class="number">0</span>]);
- <span class="ident">wallet</span>.<span class="ident">add_signer</span>(
- <span class="ident">KeychainKind::External</span>,
- <span class="ident">SignerOrdering</span>(<span class="number">200</span>),
- <span class="ident">Arc::new</span>(<span class="ident">custom_signer</span>),
+ .unwrap();
+
+ <span class="kw">let </span>key = psbt.inputs[<span class="number">0</span>].partial_sigs.keys().next().unwrap();
+ <span class="kw">let </span>sig_len = psbt.inputs[<span class="number">0</span>].partial_sigs[key].sig.serialize_der().len();
+ <span class="macro">assert_eq!</span>(sig_len, <span class="number">70</span>);
+ <span class="macro">assert_fee_rate!</span>(psbt, details.fee.unwrap_or(<span class="number">0</span>), fee_rate);
+ }
+
+ <span class="attr">#[cfg(feature = <span class="string">"test-hardware-signer"</span>)]
+ #[test]
+ </span><span class="kw">fn </span>test_create_signer() {
+ <span class="kw">use </span><span class="kw">crate</span>::wallet::hardwaresigner::HWISigner;
+ <span class="kw">use </span>hwi::types::HWIChain;
+ <span class="kw">use </span>hwi::HWIClient;
+
+ <span class="kw">let </span>devices = HWIClient::enumerate().unwrap();
+ <span class="kw">let </span>device = devices.first().expect(<span class="string">"No devices found"</span>);
+ <span class="kw">let </span>client = HWIClient::get_client(device, <span class="bool-val">true</span>, HWIChain::Regtest).unwrap();
+ <span class="kw">let </span>descriptors = client.get_descriptors(<span class="prelude-val">None</span>).unwrap();
+ <span class="kw">let </span>custom_signer = HWISigner::from_device(device, HWIChain::Regtest).unwrap();
+
+ <span class="kw">let </span>(<span class="kw-2">mut </span>wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(<span class="kw-2">&</span>descriptors.internal[<span class="number">0</span>]);
+ wallet.add_signer(
+ KeychainKind::External,
+ SignerOrdering(<span class="number">200</span>),
+ Arc::new(custom_signer),
);
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">LastUnused</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
- <span class="ident">builder</span>.<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>()).<span class="ident">drain_wallet</span>();
- <span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">psbt</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let </span>addr = wallet.get_address(LastUnused).unwrap();
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = wallet.build_tx();
+ builder.drain_to(addr.script_pubkey()).drain_wallet();
+ <span class="kw">let </span>(<span class="kw-2">mut </span>psbt, <span class="kw">_</span>) = builder.finish().unwrap();
- <span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">Default::default</span>()).<span class="ident">unwrap</span>();
- <span class="macro">assert!</span>(<span class="ident">finalized</span>);
+ <span class="kw">let </span>finalized = wallet.sign(<span class="kw-2">&mut </span>psbt, Default::default()).unwrap();
+ <span class="macro">assert!</span>(finalized);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_taproot_load_descriptor_duplicated_keys</span>() {
- <span class="comment">// Added after issue https://github.com/bitcoindevkit/bdk/issues/760</span>
- <span class="comment">//</span>
- <span class="comment">// Having the same key in multiple taproot leaves is safe and should be accepted by BDK</span>
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_taproot_load_descriptor_duplicated_keys() {
+ <span class="comment">// Added after issue https://github.com/bitcoindevkit/bdk/issues/760
+ //
+ // Having the same key in multiple taproot leaves is safe and should be accepted by BDK
- <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_tr_dup_keys</span>());
- <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">get_address</span>(<span class="ident">New</span>).<span class="ident">unwrap</span>();
+ </span><span class="kw">let </span>(wallet, <span class="kw">_</span>, <span class="kw">_</span>) = get_funded_wallet(get_test_tr_dup_keys());
+ <span class="kw">let </span>addr = wallet.get_address(New).unwrap();
<span class="macro">assert_eq!</span>(
- <span class="ident">addr</span>.<span class="ident">to_string</span>(),
- <span class="string">"bcrt1pvysh4nmh85ysrkpwtrr8q8gdadhgdejpy6f9v424a8v9htjxjhyqw9c5s5"</span>
- );
+ addr.to_string(),
+ <span class="string">"bcrt1pvysh4nmh85ysrkpwtrr8q8gdadhgdejpy6f9v424a8v9htjxjhyqw9c5s5"
+ </span>);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/signer.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>signer.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100"> 100</span>
-<span id="101"> 101</span>
-<span id="102"> 102</span>
-<span id="103"> 103</span>
-<span id="104"> 104</span>
-<span id="105"> 105</span>
-<span id="106"> 106</span>
-<span id="107"> 107</span>
-<span id="108"> 108</span>
-<span id="109"> 109</span>
-<span id="110"> 110</span>
-<span id="111"> 111</span>
-<span id="112"> 112</span>
-<span id="113"> 113</span>
-<span id="114"> 114</span>
-<span id="115"> 115</span>
-<span id="116"> 116</span>
-<span id="117"> 117</span>
-<span id="118"> 118</span>
-<span id="119"> 119</span>
-<span id="120"> 120</span>
-<span id="121"> 121</span>
-<span id="122"> 122</span>
-<span id="123"> 123</span>
-<span id="124"> 124</span>
-<span id="125"> 125</span>
-<span id="126"> 126</span>
-<span id="127"> 127</span>
-<span id="128"> 128</span>
-<span id="129"> 129</span>
-<span id="130"> 130</span>
-<span id="131"> 131</span>
-<span id="132"> 132</span>
-<span id="133"> 133</span>
-<span id="134"> 134</span>
-<span id="135"> 135</span>
-<span id="136"> 136</span>
-<span id="137"> 137</span>
-<span id="138"> 138</span>
-<span id="139"> 139</span>
-<span id="140"> 140</span>
-<span id="141"> 141</span>
-<span id="142"> 142</span>
-<span id="143"> 143</span>
-<span id="144"> 144</span>
-<span id="145"> 145</span>
-<span id="146"> 146</span>
-<span id="147"> 147</span>
-<span id="148"> 148</span>
-<span id="149"> 149</span>
-<span id="150"> 150</span>
-<span id="151"> 151</span>
-<span id="152"> 152</span>
-<span id="153"> 153</span>
-<span id="154"> 154</span>
-<span id="155"> 155</span>
-<span id="156"> 156</span>
-<span id="157"> 157</span>
-<span id="158"> 158</span>
-<span id="159"> 159</span>
-<span id="160"> 160</span>
-<span id="161"> 161</span>
-<span id="162"> 162</span>
-<span id="163"> 163</span>
-<span id="164"> 164</span>
-<span id="165"> 165</span>
-<span id="166"> 166</span>
-<span id="167"> 167</span>
-<span id="168"> 168</span>
-<span id="169"> 169</span>
-<span id="170"> 170</span>
-<span id="171"> 171</span>
-<span id="172"> 172</span>
-<span id="173"> 173</span>
-<span id="174"> 174</span>
-<span id="175"> 175</span>
-<span id="176"> 176</span>
-<span id="177"> 177</span>
-<span id="178"> 178</span>
-<span id="179"> 179</span>
-<span id="180"> 180</span>
-<span id="181"> 181</span>
-<span id="182"> 182</span>
-<span id="183"> 183</span>
-<span id="184"> 184</span>
-<span id="185"> 185</span>
-<span id="186"> 186</span>
-<span id="187"> 187</span>
-<span id="188"> 188</span>
-<span id="189"> 189</span>
-<span id="190"> 190</span>
-<span id="191"> 191</span>
-<span id="192"> 192</span>
-<span id="193"> 193</span>
-<span id="194"> 194</span>
-<span id="195"> 195</span>
-<span id="196"> 196</span>
-<span id="197"> 197</span>
-<span id="198"> 198</span>
-<span id="199"> 199</span>
-<span id="200"> 200</span>
-<span id="201"> 201</span>
-<span id="202"> 202</span>
-<span id="203"> 203</span>
-<span id="204"> 204</span>
-<span id="205"> 205</span>
-<span id="206"> 206</span>
-<span id="207"> 207</span>
-<span id="208"> 208</span>
-<span id="209"> 209</span>
-<span id="210"> 210</span>
-<span id="211"> 211</span>
-<span id="212"> 212</span>
-<span id="213"> 213</span>
-<span id="214"> 214</span>
-<span id="215"> 215</span>
-<span id="216"> 216</span>
-<span id="217"> 217</span>
-<span id="218"> 218</span>
-<span id="219"> 219</span>
-<span id="220"> 220</span>
-<span id="221"> 221</span>
-<span id="222"> 222</span>
-<span id="223"> 223</span>
-<span id="224"> 224</span>
-<span id="225"> 225</span>
-<span id="226"> 226</span>
-<span id="227"> 227</span>
-<span id="228"> 228</span>
-<span id="229"> 229</span>
-<span id="230"> 230</span>
-<span id="231"> 231</span>
-<span id="232"> 232</span>
-<span id="233"> 233</span>
-<span id="234"> 234</span>
-<span id="235"> 235</span>
-<span id="236"> 236</span>
-<span id="237"> 237</span>
-<span id="238"> 238</span>
-<span id="239"> 239</span>
-<span id="240"> 240</span>
-<span id="241"> 241</span>
-<span id="242"> 242</span>
-<span id="243"> 243</span>
-<span id="244"> 244</span>
-<span id="245"> 245</span>
-<span id="246"> 246</span>
-<span id="247"> 247</span>
-<span id="248"> 248</span>
-<span id="249"> 249</span>
-<span id="250"> 250</span>
-<span id="251"> 251</span>
-<span id="252"> 252</span>
-<span id="253"> 253</span>
-<span id="254"> 254</span>
-<span id="255"> 255</span>
-<span id="256"> 256</span>
-<span id="257"> 257</span>
-<span id="258"> 258</span>
-<span id="259"> 259</span>
-<span id="260"> 260</span>
-<span id="261"> 261</span>
-<span id="262"> 262</span>
-<span id="263"> 263</span>
-<span id="264"> 264</span>
-<span id="265"> 265</span>
-<span id="266"> 266</span>
-<span id="267"> 267</span>
-<span id="268"> 268</span>
-<span id="269"> 269</span>
-<span id="270"> 270</span>
-<span id="271"> 271</span>
-<span id="272"> 272</span>
-<span id="273"> 273</span>
-<span id="274"> 274</span>
-<span id="275"> 275</span>
-<span id="276"> 276</span>
-<span id="277"> 277</span>
-<span id="278"> 278</span>
-<span id="279"> 279</span>
-<span id="280"> 280</span>
-<span id="281"> 281</span>
-<span id="282"> 282</span>
-<span id="283"> 283</span>
-<span id="284"> 284</span>
-<span id="285"> 285</span>
-<span id="286"> 286</span>
-<span id="287"> 287</span>
-<span id="288"> 288</span>
-<span id="289"> 289</span>
-<span id="290"> 290</span>
-<span id="291"> 291</span>
-<span id="292"> 292</span>
-<span id="293"> 293</span>
-<span id="294"> 294</span>
-<span id="295"> 295</span>
-<span id="296"> 296</span>
-<span id="297"> 297</span>
-<span id="298"> 298</span>
-<span id="299"> 299</span>
-<span id="300"> 300</span>
-<span id="301"> 301</span>
-<span id="302"> 302</span>
-<span id="303"> 303</span>
-<span id="304"> 304</span>
-<span id="305"> 305</span>
-<span id="306"> 306</span>
-<span id="307"> 307</span>
-<span id="308"> 308</span>
-<span id="309"> 309</span>
-<span id="310"> 310</span>
-<span id="311"> 311</span>
-<span id="312"> 312</span>
-<span id="313"> 313</span>
-<span id="314"> 314</span>
-<span id="315"> 315</span>
-<span id="316"> 316</span>
-<span id="317"> 317</span>
-<span id="318"> 318</span>
-<span id="319"> 319</span>
-<span id="320"> 320</span>
-<span id="321"> 321</span>
-<span id="322"> 322</span>
-<span id="323"> 323</span>
-<span id="324"> 324</span>
-<span id="325"> 325</span>
-<span id="326"> 326</span>
-<span id="327"> 327</span>
-<span id="328"> 328</span>
-<span id="329"> 329</span>
-<span id="330"> 330</span>
-<span id="331"> 331</span>
-<span id="332"> 332</span>
-<span id="333"> 333</span>
-<span id="334"> 334</span>
-<span id="335"> 335</span>
-<span id="336"> 336</span>
-<span id="337"> 337</span>
-<span id="338"> 338</span>
-<span id="339"> 339</span>
-<span id="340"> 340</span>
-<span id="341"> 341</span>
-<span id="342"> 342</span>
-<span id="343"> 343</span>
-<span id="344"> 344</span>
-<span id="345"> 345</span>
-<span id="346"> 346</span>
-<span id="347"> 347</span>
-<span id="348"> 348</span>
-<span id="349"> 349</span>
-<span id="350"> 350</span>
-<span id="351"> 351</span>
-<span id="352"> 352</span>
-<span id="353"> 353</span>
-<span id="354"> 354</span>
-<span id="355"> 355</span>
-<span id="356"> 356</span>
-<span id="357"> 357</span>
-<span id="358"> 358</span>
-<span id="359"> 359</span>
-<span id="360"> 360</span>
-<span id="361"> 361</span>
-<span id="362"> 362</span>
-<span id="363"> 363</span>
-<span id="364"> 364</span>
-<span id="365"> 365</span>
-<span id="366"> 366</span>
-<span id="367"> 367</span>
-<span id="368"> 368</span>
-<span id="369"> 369</span>
-<span id="370"> 370</span>
-<span id="371"> 371</span>
-<span id="372"> 372</span>
-<span id="373"> 373</span>
-<span id="374"> 374</span>
-<span id="375"> 375</span>
-<span id="376"> 376</span>
-<span id="377"> 377</span>
-<span id="378"> 378</span>
-<span id="379"> 379</span>
-<span id="380"> 380</span>
-<span id="381"> 381</span>
-<span id="382"> 382</span>
-<span id="383"> 383</span>
-<span id="384"> 384</span>
-<span id="385"> 385</span>
-<span id="386"> 386</span>
-<span id="387"> 387</span>
-<span id="388"> 388</span>
-<span id="389"> 389</span>
-<span id="390"> 390</span>
-<span id="391"> 391</span>
-<span id="392"> 392</span>
-<span id="393"> 393</span>
-<span id="394"> 394</span>
-<span id="395"> 395</span>
-<span id="396"> 396</span>
-<span id="397"> 397</span>
-<span id="398"> 398</span>
-<span id="399"> 399</span>
-<span id="400"> 400</span>
-<span id="401"> 401</span>
-<span id="402"> 402</span>
-<span id="403"> 403</span>
-<span id="404"> 404</span>
-<span id="405"> 405</span>
-<span id="406"> 406</span>
-<span id="407"> 407</span>
-<span id="408"> 408</span>
-<span id="409"> 409</span>
-<span id="410"> 410</span>
-<span id="411"> 411</span>
-<span id="412"> 412</span>
-<span id="413"> 413</span>
-<span id="414"> 414</span>
-<span id="415"> 415</span>
-<span id="416"> 416</span>
-<span id="417"> 417</span>
-<span id="418"> 418</span>
-<span id="419"> 419</span>
-<span id="420"> 420</span>
-<span id="421"> 421</span>
-<span id="422"> 422</span>
-<span id="423"> 423</span>
-<span id="424"> 424</span>
-<span id="425"> 425</span>
-<span id="426"> 426</span>
-<span id="427"> 427</span>
-<span id="428"> 428</span>
-<span id="429"> 429</span>
-<span id="430"> 430</span>
-<span id="431"> 431</span>
-<span id="432"> 432</span>
-<span id="433"> 433</span>
-<span id="434"> 434</span>
-<span id="435"> 435</span>
-<span id="436"> 436</span>
-<span id="437"> 437</span>
-<span id="438"> 438</span>
-<span id="439"> 439</span>
-<span id="440"> 440</span>
-<span id="441"> 441</span>
-<span id="442"> 442</span>
-<span id="443"> 443</span>
-<span id="444"> 444</span>
-<span id="445"> 445</span>
-<span id="446"> 446</span>
-<span id="447"> 447</span>
-<span id="448"> 448</span>
-<span id="449"> 449</span>
-<span id="450"> 450</span>
-<span id="451"> 451</span>
-<span id="452"> 452</span>
-<span id="453"> 453</span>
-<span id="454"> 454</span>
-<span id="455"> 455</span>
-<span id="456"> 456</span>
-<span id="457"> 457</span>
-<span id="458"> 458</span>
-<span id="459"> 459</span>
-<span id="460"> 460</span>
-<span id="461"> 461</span>
-<span id="462"> 462</span>
-<span id="463"> 463</span>
-<span id="464"> 464</span>
-<span id="465"> 465</span>
-<span id="466"> 466</span>
-<span id="467"> 467</span>
-<span id="468"> 468</span>
-<span id="469"> 469</span>
-<span id="470"> 470</span>
-<span id="471"> 471</span>
-<span id="472"> 472</span>
-<span id="473"> 473</span>
-<span id="474"> 474</span>
-<span id="475"> 475</span>
-<span id="476"> 476</span>
-<span id="477"> 477</span>
-<span id="478"> 478</span>
-<span id="479"> 479</span>
-<span id="480"> 480</span>
-<span id="481"> 481</span>
-<span id="482"> 482</span>
-<span id="483"> 483</span>
-<span id="484"> 484</span>
-<span id="485"> 485</span>
-<span id="486"> 486</span>
-<span id="487"> 487</span>
-<span id="488"> 488</span>
-<span id="489"> 489</span>
-<span id="490"> 490</span>
-<span id="491"> 491</span>
-<span id="492"> 492</span>
-<span id="493"> 493</span>
-<span id="494"> 494</span>
-<span id="495"> 495</span>
-<span id="496"> 496</span>
-<span id="497"> 497</span>
-<span id="498"> 498</span>
-<span id="499"> 499</span>
-<span id="500"> 500</span>
-<span id="501"> 501</span>
-<span id="502"> 502</span>
-<span id="503"> 503</span>
-<span id="504"> 504</span>
-<span id="505"> 505</span>
-<span id="506"> 506</span>
-<span id="507"> 507</span>
-<span id="508"> 508</span>
-<span id="509"> 509</span>
-<span id="510"> 510</span>
-<span id="511"> 511</span>
-<span id="512"> 512</span>
-<span id="513"> 513</span>
-<span id="514"> 514</span>
-<span id="515"> 515</span>
-<span id="516"> 516</span>
-<span id="517"> 517</span>
-<span id="518"> 518</span>
-<span id="519"> 519</span>
-<span id="520"> 520</span>
-<span id="521"> 521</span>
-<span id="522"> 522</span>
-<span id="523"> 523</span>
-<span id="524"> 524</span>
-<span id="525"> 525</span>
-<span id="526"> 526</span>
-<span id="527"> 527</span>
-<span id="528"> 528</span>
-<span id="529"> 529</span>
-<span id="530"> 530</span>
-<span id="531"> 531</span>
-<span id="532"> 532</span>
-<span id="533"> 533</span>
-<span id="534"> 534</span>
-<span id="535"> 535</span>
-<span id="536"> 536</span>
-<span id="537"> 537</span>
-<span id="538"> 538</span>
-<span id="539"> 539</span>
-<span id="540"> 540</span>
-<span id="541"> 541</span>
-<span id="542"> 542</span>
-<span id="543"> 543</span>
-<span id="544"> 544</span>
-<span id="545"> 545</span>
-<span id="546"> 546</span>
-<span id="547"> 547</span>
-<span id="548"> 548</span>
-<span id="549"> 549</span>
-<span id="550"> 550</span>
-<span id="551"> 551</span>
-<span id="552"> 552</span>
-<span id="553"> 553</span>
-<span id="554"> 554</span>
-<span id="555"> 555</span>
-<span id="556"> 556</span>
-<span id="557"> 557</span>
-<span id="558"> 558</span>
-<span id="559"> 559</span>
-<span id="560"> 560</span>
-<span id="561"> 561</span>
-<span id="562"> 562</span>
-<span id="563"> 563</span>
-<span id="564"> 564</span>
-<span id="565"> 565</span>
-<span id="566"> 566</span>
-<span id="567"> 567</span>
-<span id="568"> 568</span>
-<span id="569"> 569</span>
-<span id="570"> 570</span>
-<span id="571"> 571</span>
-<span id="572"> 572</span>
-<span id="573"> 573</span>
-<span id="574"> 574</span>
-<span id="575"> 575</span>
-<span id="576"> 576</span>
-<span id="577"> 577</span>
-<span id="578"> 578</span>
-<span id="579"> 579</span>
-<span id="580"> 580</span>
-<span id="581"> 581</span>
-<span id="582"> 582</span>
-<span id="583"> 583</span>
-<span id="584"> 584</span>
-<span id="585"> 585</span>
-<span id="586"> 586</span>
-<span id="587"> 587</span>
-<span id="588"> 588</span>
-<span id="589"> 589</span>
-<span id="590"> 590</span>
-<span id="591"> 591</span>
-<span id="592"> 592</span>
-<span id="593"> 593</span>
-<span id="594"> 594</span>
-<span id="595"> 595</span>
-<span id="596"> 596</span>
-<span id="597"> 597</span>
-<span id="598"> 598</span>
-<span id="599"> 599</span>
-<span id="600"> 600</span>
-<span id="601"> 601</span>
-<span id="602"> 602</span>
-<span id="603"> 603</span>
-<span id="604"> 604</span>
-<span id="605"> 605</span>
-<span id="606"> 606</span>
-<span id="607"> 607</span>
-<span id="608"> 608</span>
-<span id="609"> 609</span>
-<span id="610"> 610</span>
-<span id="611"> 611</span>
-<span id="612"> 612</span>
-<span id="613"> 613</span>
-<span id="614"> 614</span>
-<span id="615"> 615</span>
-<span id="616"> 616</span>
-<span id="617"> 617</span>
-<span id="618"> 618</span>
-<span id="619"> 619</span>
-<span id="620"> 620</span>
-<span id="621"> 621</span>
-<span id="622"> 622</span>
-<span id="623"> 623</span>
-<span id="624"> 624</span>
-<span id="625"> 625</span>
-<span id="626"> 626</span>
-<span id="627"> 627</span>
-<span id="628"> 628</span>
-<span id="629"> 629</span>
-<span id="630"> 630</span>
-<span id="631"> 631</span>
-<span id="632"> 632</span>
-<span id="633"> 633</span>
-<span id="634"> 634</span>
-<span id="635"> 635</span>
-<span id="636"> 636</span>
-<span id="637"> 637</span>
-<span id="638"> 638</span>
-<span id="639"> 639</span>
-<span id="640"> 640</span>
-<span id="641"> 641</span>
-<span id="642"> 642</span>
-<span id="643"> 643</span>
-<span id="644"> 644</span>
-<span id="645"> 645</span>
-<span id="646"> 646</span>
-<span id="647"> 647</span>
-<span id="648"> 648</span>
-<span id="649"> 649</span>
-<span id="650"> 650</span>
-<span id="651"> 651</span>
-<span id="652"> 652</span>
-<span id="653"> 653</span>
-<span id="654"> 654</span>
-<span id="655"> 655</span>
-<span id="656"> 656</span>
-<span id="657"> 657</span>
-<span id="658"> 658</span>
-<span id="659"> 659</span>
-<span id="660"> 660</span>
-<span id="661"> 661</span>
-<span id="662"> 662</span>
-<span id="663"> 663</span>
-<span id="664"> 664</span>
-<span id="665"> 665</span>
-<span id="666"> 666</span>
-<span id="667"> 667</span>
-<span id="668"> 668</span>
-<span id="669"> 669</span>
-<span id="670"> 670</span>
-<span id="671"> 671</span>
-<span id="672"> 672</span>
-<span id="673"> 673</span>
-<span id="674"> 674</span>
-<span id="675"> 675</span>
-<span id="676"> 676</span>
-<span id="677"> 677</span>
-<span id="678"> 678</span>
-<span id="679"> 679</span>
-<span id="680"> 680</span>
-<span id="681"> 681</span>
-<span id="682"> 682</span>
-<span id="683"> 683</span>
-<span id="684"> 684</span>
-<span id="685"> 685</span>
-<span id="686"> 686</span>
-<span id="687"> 687</span>
-<span id="688"> 688</span>
-<span id="689"> 689</span>
-<span id="690"> 690</span>
-<span id="691"> 691</span>
-<span id="692"> 692</span>
-<span id="693"> 693</span>
-<span id="694"> 694</span>
-<span id="695"> 695</span>
-<span id="696"> 696</span>
-<span id="697"> 697</span>
-<span id="698"> 698</span>
-<span id="699"> 699</span>
-<span id="700"> 700</span>
-<span id="701"> 701</span>
-<span id="702"> 702</span>
-<span id="703"> 703</span>
-<span id="704"> 704</span>
-<span id="705"> 705</span>
-<span id="706"> 706</span>
-<span id="707"> 707</span>
-<span id="708"> 708</span>
-<span id="709"> 709</span>
-<span id="710"> 710</span>
-<span id="711"> 711</span>
-<span id="712"> 712</span>
-<span id="713"> 713</span>
-<span id="714"> 714</span>
-<span id="715"> 715</span>
-<span id="716"> 716</span>
-<span id="717"> 717</span>
-<span id="718"> 718</span>
-<span id="719"> 719</span>
-<span id="720"> 720</span>
-<span id="721"> 721</span>
-<span id="722"> 722</span>
-<span id="723"> 723</span>
-<span id="724"> 724</span>
-<span id="725"> 725</span>
-<span id="726"> 726</span>
-<span id="727"> 727</span>
-<span id="728"> 728</span>
-<span id="729"> 729</span>
-<span id="730"> 730</span>
-<span id="731"> 731</span>
-<span id="732"> 732</span>
-<span id="733"> 733</span>
-<span id="734"> 734</span>
-<span id="735"> 735</span>
-<span id="736"> 736</span>
-<span id="737"> 737</span>
-<span id="738"> 738</span>
-<span id="739"> 739</span>
-<span id="740"> 740</span>
-<span id="741"> 741</span>
-<span id="742"> 742</span>
-<span id="743"> 743</span>
-<span id="744"> 744</span>
-<span id="745"> 745</span>
-<span id="746"> 746</span>
-<span id="747"> 747</span>
-<span id="748"> 748</span>
-<span id="749"> 749</span>
-<span id="750"> 750</span>
-<span id="751"> 751</span>
-<span id="752"> 752</span>
-<span id="753"> 753</span>
-<span id="754"> 754</span>
-<span id="755"> 755</span>
-<span id="756"> 756</span>
-<span id="757"> 757</span>
-<span id="758"> 758</span>
-<span id="759"> 759</span>
-<span id="760"> 760</span>
-<span id="761"> 761</span>
-<span id="762"> 762</span>
-<span id="763"> 763</span>
-<span id="764"> 764</span>
-<span id="765"> 765</span>
-<span id="766"> 766</span>
-<span id="767"> 767</span>
-<span id="768"> 768</span>
-<span id="769"> 769</span>
-<span id="770"> 770</span>
-<span id="771"> 771</span>
-<span id="772"> 772</span>
-<span id="773"> 773</span>
-<span id="774"> 774</span>
-<span id="775"> 775</span>
-<span id="776"> 776</span>
-<span id="777"> 777</span>
-<span id="778"> 778</span>
-<span id="779"> 779</span>
-<span id="780"> 780</span>
-<span id="781"> 781</span>
-<span id="782"> 782</span>
-<span id="783"> 783</span>
-<span id="784"> 784</span>
-<span id="785"> 785</span>
-<span id="786"> 786</span>
-<span id="787"> 787</span>
-<span id="788"> 788</span>
-<span id="789"> 789</span>
-<span id="790"> 790</span>
-<span id="791"> 791</span>
-<span id="792"> 792</span>
-<span id="793"> 793</span>
-<span id="794"> 794</span>
-<span id="795"> 795</span>
-<span id="796"> 796</span>
-<span id="797"> 797</span>
-<span id="798"> 798</span>
-<span id="799"> 799</span>
-<span id="800"> 800</span>
-<span id="801"> 801</span>
-<span id="802"> 802</span>
-<span id="803"> 803</span>
-<span id="804"> 804</span>
-<span id="805"> 805</span>
-<span id="806"> 806</span>
-<span id="807"> 807</span>
-<span id="808"> 808</span>
-<span id="809"> 809</span>
-<span id="810"> 810</span>
-<span id="811"> 811</span>
-<span id="812"> 812</span>
-<span id="813"> 813</span>
-<span id="814"> 814</span>
-<span id="815"> 815</span>
-<span id="816"> 816</span>
-<span id="817"> 817</span>
-<span id="818"> 818</span>
-<span id="819"> 819</span>
-<span id="820"> 820</span>
-<span id="821"> 821</span>
-<span id="822"> 822</span>
-<span id="823"> 823</span>
-<span id="824"> 824</span>
-<span id="825"> 825</span>
-<span id="826"> 826</span>
-<span id="827"> 827</span>
-<span id="828"> 828</span>
-<span id="829"> 829</span>
-<span id="830"> 830</span>
-<span id="831"> 831</span>
-<span id="832"> 832</span>
-<span id="833"> 833</span>
-<span id="834"> 834</span>
-<span id="835"> 835</span>
-<span id="836"> 836</span>
-<span id="837"> 837</span>
-<span id="838"> 838</span>
-<span id="839"> 839</span>
-<span id="840"> 840</span>
-<span id="841"> 841</span>
-<span id="842"> 842</span>
-<span id="843"> 843</span>
-<span id="844"> 844</span>
-<span id="845"> 845</span>
-<span id="846"> 846</span>
-<span id="847"> 847</span>
-<span id="848"> 848</span>
-<span id="849"> 849</span>
-<span id="850"> 850</span>
-<span id="851"> 851</span>
-<span id="852"> 852</span>
-<span id="853"> 853</span>
-<span id="854"> 854</span>
-<span id="855"> 855</span>
-<span id="856"> 856</span>
-<span id="857"> 857</span>
-<span id="858"> 858</span>
-<span id="859"> 859</span>
-<span id="860"> 860</span>
-<span id="861"> 861</span>
-<span id="862"> 862</span>
-<span id="863"> 863</span>
-<span id="864"> 864</span>
-<span id="865"> 865</span>
-<span id="866"> 866</span>
-<span id="867"> 867</span>
-<span id="868"> 868</span>
-<span id="869"> 869</span>
-<span id="870"> 870</span>
-<span id="871"> 871</span>
-<span id="872"> 872</span>
-<span id="873"> 873</span>
-<span id="874"> 874</span>
-<span id="875"> 875</span>
-<span id="876"> 876</span>
-<span id="877"> 877</span>
-<span id="878"> 878</span>
-<span id="879"> 879</span>
-<span id="880"> 880</span>
-<span id="881"> 881</span>
-<span id="882"> 882</span>
-<span id="883"> 883</span>
-<span id="884"> 884</span>
-<span id="885"> 885</span>
-<span id="886"> 886</span>
-<span id="887"> 887</span>
-<span id="888"> 888</span>
-<span id="889"> 889</span>
-<span id="890"> 890</span>
-<span id="891"> 891</span>
-<span id="892"> 892</span>
-<span id="893"> 893</span>
-<span id="894"> 894</span>
-<span id="895"> 895</span>
-<span id="896"> 896</span>
-<span id="897"> 897</span>
-<span id="898"> 898</span>
-<span id="899"> 899</span>
-<span id="900"> 900</span>
-<span id="901"> 901</span>
-<span id="902"> 902</span>
-<span id="903"> 903</span>
-<span id="904"> 904</span>
-<span id="905"> 905</span>
-<span id="906"> 906</span>
-<span id="907"> 907</span>
-<span id="908"> 908</span>
-<span id="909"> 909</span>
-<span id="910"> 910</span>
-<span id="911"> 911</span>
-<span id="912"> 912</span>
-<span id="913"> 913</span>
-<span id="914"> 914</span>
-<span id="915"> 915</span>
-<span id="916"> 916</span>
-<span id="917"> 917</span>
-<span id="918"> 918</span>
-<span id="919"> 919</span>
-<span id="920"> 920</span>
-<span id="921"> 921</span>
-<span id="922"> 922</span>
-<span id="923"> 923</span>
-<span id="924"> 924</span>
-<span id="925"> 925</span>
-<span id="926"> 926</span>
-<span id="927"> 927</span>
-<span id="928"> 928</span>
-<span id="929"> 929</span>
-<span id="930"> 930</span>
-<span id="931"> 931</span>
-<span id="932"> 932</span>
-<span id="933"> 933</span>
-<span id="934"> 934</span>
-<span id="935"> 935</span>
-<span id="936"> 936</span>
-<span id="937"> 937</span>
-<span id="938"> 938</span>
-<span id="939"> 939</span>
-<span id="940"> 940</span>
-<span id="941"> 941</span>
-<span id="942"> 942</span>
-<span id="943"> 943</span>
-<span id="944"> 944</span>
-<span id="945"> 945</span>
-<span id="946"> 946</span>
-<span id="947"> 947</span>
-<span id="948"> 948</span>
-<span id="949"> 949</span>
-<span id="950"> 950</span>
-<span id="951"> 951</span>
-<span id="952"> 952</span>
-<span id="953"> 953</span>
-<span id="954"> 954</span>
-<span id="955"> 955</span>
-<span id="956"> 956</span>
-<span id="957"> 957</span>
-<span id="958"> 958</span>
-<span id="959"> 959</span>
-<span id="960"> 960</span>
-<span id="961"> 961</span>
-<span id="962"> 962</span>
-<span id="963"> 963</span>
-<span id="964"> 964</span>
-<span id="965"> 965</span>
-<span id="966"> 966</span>
-<span id="967"> 967</span>
-<span id="968"> 968</span>
-<span id="969"> 969</span>
-<span id="970"> 970</span>
-<span id="971"> 971</span>
-<span id="972"> 972</span>
-<span id="973"> 973</span>
-<span id="974"> 974</span>
-<span id="975"> 975</span>
-<span id="976"> 976</span>
-<span id="977"> 977</span>
-<span id="978"> 978</span>
-<span id="979"> 979</span>
-<span id="980"> 980</span>
-<span id="981"> 981</span>
-<span id="982"> 982</span>
-<span id="983"> 983</span>
-<span id="984"> 984</span>
-<span id="985"> 985</span>
-<span id="986"> 986</span>
-<span id="987"> 987</span>
-<span id="988"> 988</span>
-<span id="989"> 989</span>
-<span id="990"> 990</span>
-<span id="991"> 991</span>
-<span id="992"> 992</span>
-<span id="993"> 993</span>
-<span id="994"> 994</span>
-<span id="995"> 995</span>
-<span id="996"> 996</span>
-<span id="997"> 997</span>
-<span id="998"> 998</span>
-<span id="999"> 999</span>
-<span id="1000">1000</span>
-<span id="1001">1001</span>
-<span id="1002">1002</span>
-<span id="1003">1003</span>
-<span id="1004">1004</span>
-<span id="1005">1005</span>
-<span id="1006">1006</span>
-<span id="1007">1007</span>
-<span id="1008">1008</span>
-<span id="1009">1009</span>
-<span id="1010">1010</span>
-<span id="1011">1011</span>
-<span id="1012">1012</span>
-<span id="1013">1013</span>
-<span id="1014">1014</span>
-<span id="1015">1015</span>
-<span id="1016">1016</span>
-<span id="1017">1017</span>
-<span id="1018">1018</span>
-<span id="1019">1019</span>
-<span id="1020">1020</span>
-<span id="1021">1021</span>
-<span id="1022">1022</span>
-<span id="1023">1023</span>
-<span id="1024">1024</span>
-<span id="1025">1025</span>
-<span id="1026">1026</span>
-<span id="1027">1027</span>
-<span id="1028">1028</span>
-<span id="1029">1029</span>
-<span id="1030">1030</span>
-<span id="1031">1031</span>
-<span id="1032">1032</span>
-<span id="1033">1033</span>
-<span id="1034">1034</span>
-<span id="1035">1035</span>
-<span id="1036">1036</span>
-<span id="1037">1037</span>
-<span id="1038">1038</span>
-<span id="1039">1039</span>
-<span id="1040">1040</span>
-<span id="1041">1041</span>
-<span id="1042">1042</span>
-<span id="1043">1043</span>
-<span id="1044">1044</span>
-<span id="1045">1045</span>
-<span id="1046">1046</span>
-<span id="1047">1047</span>
-<span id="1048">1048</span>
-<span id="1049">1049</span>
-<span id="1050">1050</span>
-<span id="1051">1051</span>
-<span id="1052">1052</span>
-<span id="1053">1053</span>
-<span id="1054">1054</span>
-<span id="1055">1055</span>
-<span id="1056">1056</span>
-<span id="1057">1057</span>
-<span id="1058">1058</span>
-<span id="1059">1059</span>
-<span id="1060">1060</span>
-<span id="1061">1061</span>
-<span id="1062">1062</span>
-<span id="1063">1063</span>
-<span id="1064">1064</span>
-<span id="1065">1065</span>
-<span id="1066">1066</span>
-<span id="1067">1067</span>
-<span id="1068">1068</span>
-<span id="1069">1069</span>
-<span id="1070">1070</span>
-<span id="1071">1071</span>
-<span id="1072">1072</span>
-<span id="1073">1073</span>
-<span id="1074">1074</span>
-<span id="1075">1075</span>
-<span id="1076">1076</span>
-<span id="1077">1077</span>
-<span id="1078">1078</span>
-<span id="1079">1079</span>
-<span id="1080">1080</span>
-<span id="1081">1081</span>
-<span id="1082">1082</span>
-<span id="1083">1083</span>
-<span id="1084">1084</span>
-<span id="1085">1085</span>
-<span id="1086">1086</span>
-<span id="1087">1087</span>
-<span id="1088">1088</span>
-<span id="1089">1089</span>
-<span id="1090">1090</span>
-<span id="1091">1091</span>
-<span id="1092">1092</span>
-<span id="1093">1093</span>
-<span id="1094">1094</span>
-<span id="1095">1095</span>
-<span id="1096">1096</span>
-<span id="1097">1097</span>
-<span id="1098">1098</span>
-<span id="1099">1099</span>
-<span id="1100">1100</span>
-<span id="1101">1101</span>
-<span id="1102">1102</span>
-<span id="1103">1103</span>
-<span id="1104">1104</span>
-<span id="1105">1105</span>
-<span id="1106">1106</span>
-<span id="1107">1107</span>
-<span id="1108">1108</span>
-<span id="1109">1109</span>
-<span id="1110">1110</span>
-<span id="1111">1111</span>
-<span id="1112">1112</span>
-<span id="1113">1113</span>
-<span id="1114">1114</span>
-<span id="1115">1115</span>
-<span id="1116">1116</span>
-<span id="1117">1117</span>
-<span id="1118">1118</span>
-<span id="1119">1119</span>
-<span id="1120">1120</span>
-<span id="1121">1121</span>
-<span id="1122">1122</span>
-<span id="1123">1123</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Generalized signers</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides the ability to add customized signers to a [`Wallet`](super::Wallet)</span>
-<span class="doccomment">//! through the [`Wallet::add_signer`](super::Wallet::add_signer) function.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! # use std::sync::Arc;</span>
-<span class="doccomment">//! # use std::str::FromStr;</span>
-<span class="doccomment">//! # use bitcoin::secp256k1::{Secp256k1, All};</span>
-<span class="doccomment">//! # use bitcoin::*;</span>
-<span class="doccomment">//! # use bitcoin::util::psbt;</span>
-<span class="doccomment">//! # use bdk::signer::*;</span>
-<span class="doccomment">//! # use bdk::database::*;</span>
-<span class="doccomment">//! # use bdk::*;</span>
-<span class="doccomment">//! # #[derive(Debug)]</span>
-<span class="doccomment">//! # struct CustomHSM;</span>
-<span class="doccomment">//! # impl CustomHSM {</span>
-<span class="doccomment">//! # fn hsm_sign_input(&self, _psbt: &mut psbt::PartiallySignedTransaction, _input: usize) -> Result<(), SignerError> {</span>
-<span class="doccomment">//! # Ok(())</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! # fn connect() -> Self {</span>
-<span class="doccomment">//! # CustomHSM</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! # fn get_id(&self) -> SignerId {</span>
-<span class="doccomment">//! # SignerId::Dummy(0)</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! # }</span>
-<span class="doccomment">//! #[derive(Debug)]</span>
-<span class="doccomment">//! struct CustomSigner {</span>
-<span class="doccomment">//! device: CustomHSM,</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! impl CustomSigner {</span>
-<span class="doccomment">//! fn connect() -> Self {</span>
-<span class="doccomment">//! CustomSigner { device: CustomHSM::connect() }</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! impl SignerCommon for CustomSigner {</span>
-<span class="doccomment">//! fn id(&self, _secp: &Secp256k1<All>) -> SignerId {</span>
-<span class="doccomment">//! self.device.get_id()</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! impl InputSigner for CustomSigner {</span>
-<span class="doccomment">//! fn sign_input(</span>
-<span class="doccomment">//! &self,</span>
-<span class="doccomment">//! psbt: &mut psbt::PartiallySignedTransaction,</span>
-<span class="doccomment">//! input_index: usize,</span>
-<span class="doccomment">//! _sign_options: &SignOptions,</span>
-<span class="doccomment">//! _secp: &Secp256k1<All>,</span>
-<span class="doccomment">//! ) -> Result<(), SignerError> {</span>
-<span class="doccomment">//! self.device.hsm_sign_input(psbt, input_index)?;</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! Ok(())</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//! }</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let custom_signer = CustomSigner::connect();</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";</span>
-<span class="doccomment">//! let mut wallet = Wallet::new(descriptor, None, Network::Testnet, MemoryDatabase::default())?;</span>
-<span class="doccomment">//! wallet.add_signer(</span>
-<span class="doccomment">//! KeychainKind::External,</span>
-<span class="doccomment">//! SignerOrdering(200),</span>
-<span class="doccomment">//! Arc::new(custom_signer)</span>
-<span class="doccomment">//! );</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! # Ok::<_, bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident">std::cmp::Ordering</span>;
-<span class="kw">use</span> <span class="ident">std::collections::BTreeMap</span>;
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
-<span class="kw">use</span> <span class="ident">std::ops</span>::{<span class="ident">Bound::Included</span>, <span class="ident">Deref</span>};
-<span class="kw">use</span> <span class="ident">std::sync::Arc</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::blockdata::opcodes</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::blockdata::script::Builder</span> <span class="kw">as</span> <span class="ident">ScriptBuilder</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::hashes</span>::{<span class="ident">hash160</span>, <span class="ident">Hash</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::secp256k1::Message</span>;
-<span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>::{<span class="ident">ChildNumber</span>, <span class="ident">DerivationPath</span>, <span class="ident">ExtendedPrivKey</span>, <span class="ident">Fingerprint</span>};
-<span class="kw">use</span> <span class="ident">bitcoin::util</span>::{<span class="ident">ecdsa</span>, <span class="ident">psbt</span>, <span class="ident">schnorr</span>, <span class="ident">sighash</span>, <span class="ident">taproot</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">secp256k1</span>, <span class="ident">XOnlyPublicKey</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">EcdsaSighashType</span>, <span class="ident">PrivateKey</span>, <span class="ident">PublicKey</span>, <span class="ident">SchnorrSighashType</span>, <span class="ident">Script</span>};
-
-<span class="kw">use</span> <span class="ident">miniscript::descriptor</span>::{
- <span class="ident">Descriptor</span>, <span class="ident">DescriptorPublicKey</span>, <span class="ident">DescriptorSecretKey</span>, <span class="ident">DescriptorXKey</span>, <span class="ident">KeyMap</span>, <span class="ident">SinglePriv</span>,
- <span class="ident">SinglePubKey</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/signer.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>signer.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Generalized signers
+//!
+//! This module provides the ability to add customized signers to a [`Wallet`](super::Wallet)
+//! through the [`Wallet::add_signer`](super::Wallet::add_signer) function.
+//!
+//! ```
+//! # use std::sync::Arc;
+//! # use std::str::FromStr;
+//! # use bitcoin::secp256k1::{Secp256k1, All};
+//! # use bitcoin::*;
+//! # use bitcoin::util::psbt;
+//! # use bdk::signer::*;
+//! # use bdk::database::*;
+//! # use bdk::*;
+//! # #[derive(Debug)]
+//! # struct CustomHSM;
+//! # impl CustomHSM {
+//! # fn hsm_sign_input(&self, _psbt: &mut psbt::PartiallySignedTransaction, _input: usize) -> Result<(), SignerError> {
+//! # Ok(())
+//! # }
+//! # fn connect() -> Self {
+//! # CustomHSM
+//! # }
+//! # fn get_id(&self) -> SignerId {
+//! # SignerId::Dummy(0)
+//! # }
+//! # }
+//! #[derive(Debug)]
+//! struct CustomSigner {
+//! device: CustomHSM,
+//! }
+//!
+//! impl CustomSigner {
+//! fn connect() -> Self {
+//! CustomSigner { device: CustomHSM::connect() }
+//! }
+//! }
+//!
+//! impl SignerCommon for CustomSigner {
+//! fn id(&self, _secp: &Secp256k1<All>) -> SignerId {
+//! self.device.get_id()
+//! }
+//! }
+//!
+//! impl InputSigner for CustomSigner {
+//! fn sign_input(
+//! &self,
+//! psbt: &mut psbt::PartiallySignedTransaction,
+//! input_index: usize,
+//! _sign_options: &SignOptions,
+//! _secp: &Secp256k1<All>,
+//! ) -> Result<(), SignerError> {
+//! self.device.hsm_sign_input(psbt, input_index)?;
+//!
+//! Ok(())
+//! }
+//! }
+//!
+//! let custom_signer = CustomSigner::connect();
+//!
+//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
+//! let mut wallet = Wallet::new(descriptor, None, Network::Testnet, MemoryDatabase::default())?;
+//! wallet.add_signer(
+//! KeychainKind::External,
+//! SignerOrdering(200),
+//! Arc::new(custom_signer)
+//! );
+//!
+//! # Ok::<_, bdk::Error>(())
+//! ```
+
+</span><span class="kw">use </span>std::cmp::Ordering;
+<span class="kw">use </span>std::collections::BTreeMap;
+<span class="kw">use </span>std::fmt;
+<span class="kw">use </span>std::ops::{Bound::Included, Deref};
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>bitcoin::blockdata::opcodes;
+<span class="kw">use </span>bitcoin::blockdata::script::Builder <span class="kw">as </span>ScriptBuilder;
+<span class="kw">use </span>bitcoin::hashes::{hash160, Hash};
+<span class="kw">use </span>bitcoin::secp256k1::Message;
+<span class="kw">use </span>bitcoin::util::bip32::{ChildNumber, DerivationPath, ExtendedPrivKey, Fingerprint};
+<span class="kw">use </span>bitcoin::util::{ecdsa, psbt, schnorr, sighash, taproot};
+<span class="kw">use </span>bitcoin::{secp256k1, XOnlyPublicKey};
+<span class="kw">use </span>bitcoin::{EcdsaSighashType, PrivateKey, PublicKey, SchnorrSighashType, Script};
+
+<span class="kw">use </span>miniscript::descriptor::{
+ Descriptor, DescriptorPublicKey, DescriptorSecretKey, DescriptorXKey, KeyMap, SinglePriv,
+ SinglePubKey,
};
-<span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">Legacy</span>, <span class="ident">Segwitv0</span>, <span class="ident">SigType</span>, <span class="ident">Tap</span>, <span class="ident">ToPublicKey</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::utils::SecpCtx</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>::{<span class="ident">DescriptorMeta</span>, <span class="ident">XKeyUtils</span>};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::psbt::PsbtUtils</span>;
-
-<span class="doccomment">/// Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among</span>
-<span class="doccomment">/// multiple of them</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Ord</span>, <span class="ident">PartialOrd</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SignerId</span> {
- <span class="doccomment">/// Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key</span>
- <span class="ident">PkHash</span>(<span class="ident">hash160::Hash</span>),
- <span class="doccomment">/// The fingerprint of a BIP32 extended key</span>
- <span class="ident">Fingerprint</span>(<span class="ident">Fingerprint</span>),
- <span class="doccomment">/// Dummy identifier</span>
- <span class="ident">Dummy</span>(<span class="ident">u64</span>),
+<span class="kw">use </span>miniscript::{Legacy, Segwitv0, SigType, Tap, ToPublicKey};
+
+<span class="kw">use </span><span class="kw">super</span>::utils::SecpCtx;
+<span class="kw">use </span><span class="kw">crate</span>::descriptor::{DescriptorMeta, XKeyUtils};
+<span class="kw">use </span><span class="kw">crate</span>::psbt::PsbtUtils;
+
+<span class="doccomment">/// Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among
+/// multiple of them
+</span><span class="attr">#[derive(Debug, Clone, Ord, PartialOrd, PartialEq, Eq, Hash)]
+</span><span class="kw">pub enum </span>SignerId {
+ <span class="doccomment">/// Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key
+ </span>PkHash(hash160::Hash),
+ <span class="doccomment">/// The fingerprint of a BIP32 extended key
+ </span>Fingerprint(Fingerprint),
+ <span class="doccomment">/// Dummy identifier
+ </span>Dummy(u64),
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">hash160::Hash</span><span class="op">></span> <span class="kw">for</span> <span class="ident">SignerId</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">hash</span>: <span class="ident">hash160::Hash</span>) -> <span class="ident">SignerId</span> {
- <span class="ident">SignerId::PkHash</span>(<span class="ident">hash</span>)
+<span class="kw">impl </span>From<hash160::Hash> <span class="kw">for </span>SignerId {
+ <span class="kw">fn </span>from(hash: hash160::Hash) -> SignerId {
+ SignerId::PkHash(hash)
}
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">Fingerprint</span><span class="op">></span> <span class="kw">for</span> <span class="ident">SignerId</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">fing</span>: <span class="ident">Fingerprint</span>) -> <span class="ident">SignerId</span> {
- <span class="ident">SignerId::Fingerprint</span>(<span class="ident">fing</span>)
+<span class="kw">impl </span>From<Fingerprint> <span class="kw">for </span>SignerId {
+ <span class="kw">fn </span>from(fing: Fingerprint) -> SignerId {
+ SignerId::Fingerprint(fing)
}
}
-<span class="doccomment">/// Signing error</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SignerError</span> {
- <span class="doccomment">/// The private key is missing for the required public key</span>
- <span class="ident">MissingKey</span>,
- <span class="doccomment">/// The private key in use has the right fingerprint but derives differently than expected</span>
- <span class="ident">InvalidKey</span>,
- <span class="doccomment">/// The user canceled the operation</span>
- <span class="ident">UserCanceled</span>,
- <span class="doccomment">/// Input index is out of range</span>
- <span class="ident">InputIndexOutOfRange</span>,
- <span class="doccomment">/// The `non_witness_utxo` field of the transaction is required to sign this input</span>
- <span class="ident">MissingNonWitnessUtxo</span>,
- <span class="doccomment">/// The `non_witness_utxo` specified is invalid</span>
- <span class="ident">InvalidNonWitnessUtxo</span>,
- <span class="doccomment">/// The `witness_utxo` field of the transaction is required to sign this input</span>
- <span class="ident">MissingWitnessUtxo</span>,
- <span class="doccomment">/// The `witness_script` field of the transaction is required to sign this input</span>
- <span class="ident">MissingWitnessScript</span>,
- <span class="doccomment">/// The fingerprint and derivation path are missing from the psbt input</span>
- <span class="ident">MissingHdKeypath</span>,
- <span class="doccomment">/// The psbt contains a non-`SIGHASH_ALL` sighash in one of its input and the user hasn't</span>
- <span class="doccomment">/// explicitly allowed them</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// To enable signing transactions with non-standard sighashes set</span>
- <span class="doccomment">/// [`SignOptions::allow_all_sighashes`] to `true`.</span>
- <span class="ident">NonStandardSighash</span>,
- <span class="doccomment">/// Invalid SIGHASH for the signing context in use</span>
- <span class="ident">InvalidSighash</span>,
- <span class="doccomment">/// Error while computing the hash to sign</span>
- <span class="ident">SighashError</span>(<span class="ident">sighash::Error</span>),
- <span class="doccomment">/// Error while signing using hardware wallets</span>
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"hardware-signer"</span>)]</span>
- <span class="ident">HWIError</span>(<span class="ident">hwi::error::Error</span>),
+<span class="doccomment">/// Signing error
+</span><span class="attr">#[derive(Debug, PartialEq, Eq, Clone)]
+</span><span class="kw">pub enum </span>SignerError {
+ <span class="doccomment">/// The private key is missing for the required public key
+ </span>MissingKey,
+ <span class="doccomment">/// The private key in use has the right fingerprint but derives differently than expected
+ </span>InvalidKey,
+ <span class="doccomment">/// The user canceled the operation
+ </span>UserCanceled,
+ <span class="doccomment">/// Input index is out of range
+ </span>InputIndexOutOfRange,
+ <span class="doccomment">/// The `non_witness_utxo` field of the transaction is required to sign this input
+ </span>MissingNonWitnessUtxo,
+ <span class="doccomment">/// The `non_witness_utxo` specified is invalid
+ </span>InvalidNonWitnessUtxo,
+ <span class="doccomment">/// The `witness_utxo` field of the transaction is required to sign this input
+ </span>MissingWitnessUtxo,
+ <span class="doccomment">/// The `witness_script` field of the transaction is required to sign this input
+ </span>MissingWitnessScript,
+ <span class="doccomment">/// The fingerprint and derivation path are missing from the psbt input
+ </span>MissingHdKeypath,
+ <span class="doccomment">/// The psbt contains a non-`SIGHASH_ALL` sighash in one of its input and the user hasn't
+ /// explicitly allowed them
+ ///
+ /// To enable signing transactions with non-standard sighashes set
+ /// [`SignOptions::allow_all_sighashes`] to `true`.
+ </span>NonStandardSighash,
+ <span class="doccomment">/// Invalid SIGHASH for the signing context in use
+ </span>InvalidSighash,
+ <span class="doccomment">/// Error while computing the hash to sign
+ </span>SighashError(sighash::Error),
+ <span class="doccomment">/// Error while signing using hardware wallets
+ </span><span class="attr">#[cfg(feature = <span class="string">"hardware-signer"</span>)]
+ </span>HWIError(hwi::error::Error),
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"hardware-signer"</span>)]</span>
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">hwi::error::Error</span><span class="op">></span> <span class="kw">for</span> <span class="ident">SignerError</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">hwi::error::Error</span>) -> <span class="self">Self</span> {
- <span class="ident">SignerError::HWIError</span>(<span class="ident">e</span>)
+<span class="attr">#[cfg(feature = <span class="string">"hardware-signer"</span>)]
+</span><span class="kw">impl </span>From<hwi::error::Error> <span class="kw">for </span>SignerError {
+ <span class="kw">fn </span>from(e: hwi::error::Error) -> <span class="self">Self </span>{
+ SignerError::HWIError(e)
}
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">sighash::Error</span><span class="op">></span> <span class="kw">for</span> <span class="ident">SignerError</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">sighash::Error</span>) -> <span class="self">Self</span> {
- <span class="ident">SignerError::SighashError</span>(<span class="ident">e</span>)
+<span class="kw">impl </span>From<sighash::Error> <span class="kw">for </span>SignerError {
+ <span class="kw">fn </span>from(e: sighash::Error) -> <span class="self">Self </span>{
+ SignerError::SighashError(e)
}
}
-<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">SignerError</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>fmt::Display <span class="kw">for </span>SignerError {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">SignerError</span> {}
-
-<span class="doccomment">/// Signing context</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Used by our software signers to determine the type of signatures to make</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SignerContext</span> {
- <span class="doccomment">/// Legacy context</span>
- <span class="ident">Legacy</span>,
- <span class="doccomment">/// Segwit v0 context (BIP 143)</span>
- <span class="ident">Segwitv0</span>,
- <span class="doccomment">/// Taproot context (BIP 340)</span>
- <span class="ident">Tap</span> {
- <span class="doccomment">/// Whether the signer can sign for the internal key or not</span>
- <span class="ident">is_internal_key</span>: <span class="ident">bool</span>,
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>SignerError {}
+
+<span class="doccomment">/// Signing context
+///
+/// Used by our software signers to determine the type of signatures to make
+</span><span class="attr">#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>SignerContext {
+ <span class="doccomment">/// Legacy context
+ </span>Legacy,
+ <span class="doccomment">/// Segwit v0 context (BIP 143)
+ </span>Segwitv0,
+ <span class="doccomment">/// Taproot context (BIP 340)
+ </span>Tap {
+ <span class="doccomment">/// Whether the signer can sign for the internal key or not
+ </span>is_internal_key: bool,
},
}
-<span class="doccomment">/// Wrapper structure to pair a signer with its context</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">S</span>: <span class="ident">Sized</span> <span class="op">+</span> <span class="ident">fmt::Debug</span> <span class="op">+</span> <span class="ident">Clone</span><span class="op">></span> {
- <span class="ident">signer</span>: <span class="ident">S</span>,
- <span class="ident">ctx</span>: <span class="ident">SignerContext</span>,
+<span class="doccomment">/// Wrapper structure to pair a signer with its context
+</span><span class="attr">#[derive(Debug, Clone)]
+</span><span class="kw">pub struct </span>SignerWrapper<S: Sized + fmt::Debug + Clone> {
+ signer: S,
+ ctx: SignerContext,
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">S</span>: <span class="ident">Sized</span> <span class="op">+</span> <span class="ident">fmt::Debug</span> <span class="op">+</span> <span class="ident">Clone</span><span class="op">></span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">S</span><span class="op">></span> {
- <span class="doccomment">/// Create a wrapped signer from a signer and a context</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">signer</span>: <span class="ident">S</span>, <span class="ident">ctx</span>: <span class="ident">SignerContext</span>) -> <span class="self">Self</span> {
- <span class="ident">SignerWrapper</span> { <span class="ident">signer</span>, <span class="ident">ctx</span> }
+<span class="kw">impl</span><S: Sized + fmt::Debug + Clone> SignerWrapper<S> {
+ <span class="doccomment">/// Create a wrapped signer from a signer and a context
+ </span><span class="kw">pub fn </span>new(signer: S, ctx: SignerContext) -> <span class="self">Self </span>{
+ SignerWrapper { signer, ctx }
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">S</span>: <span class="ident">Sized</span> <span class="op">+</span> <span class="ident">fmt::Debug</span> <span class="op">+</span> <span class="ident">Clone</span><span class="op">></span> <span class="ident">Deref</span> <span class="kw">for</span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">S</span><span class="op">></span> {
- <span class="kw">type</span> <span class="ident">Target</span> <span class="op">=</span> <span class="ident">S</span>;
+<span class="kw">impl</span><S: Sized + fmt::Debug + Clone> Deref <span class="kw">for </span>SignerWrapper<S> {
+ <span class="kw">type </span>Target = S;
- <span class="kw">fn</span> <span class="ident">deref</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="ident"><span class="self">Self</span>::Target</span> {
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">signer</span>
+ <span class="kw">fn </span>deref(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span><span class="self">Self</span>::Target {
+ <span class="kw-2">&</span><span class="self">self</span>.signer
}
}
-<span class="doccomment">/// Common signer methods</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">SignerCommon</span>: <span class="ident">fmt::Debug</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span> {
- <span class="doccomment">/// Return the [`SignerId`] for this signer</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The [`SignerId`] can be used to lookup a signer in the [`Wallet`](crate::Wallet)'s signers map or to</span>
- <span class="doccomment">/// compare two signers.</span>
- <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">SignerId</span>;
-
- <span class="doccomment">/// Return the secret key for the signer</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This is used internally to reconstruct the original descriptor that may contain secrets.</span>
- <span class="doccomment">/// External signers that are meant to keep key isolated should just return `None` here (which</span>
- <span class="doccomment">/// is the default for this method, if not overridden).</span>
- <span class="kw">fn</span> <span class="ident">descriptor_secret_key</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DescriptorSecretKey</span><span class="op">></span> {
- <span class="prelude-val">None</span>
- }
+<span class="doccomment">/// Common signer methods
+</span><span class="kw">pub trait </span>SignerCommon: fmt::Debug + Send + Sync {
+ <span class="doccomment">/// Return the [`SignerId`] for this signer
+ ///
+ /// The [`SignerId`] can be used to lookup a signer in the [`Wallet`](crate::Wallet)'s signers map or to
+ /// compare two signers.
+ </span><span class="kw">fn </span>id(<span class="kw-2">&</span><span class="self">self</span>, secp: <span class="kw-2">&</span>SecpCtx) -> SignerId;
+
+ <span class="doccomment">/// Return the secret key for the signer
+ ///
+ /// This is used internally to reconstruct the original descriptor that may contain secrets.
+ /// External signers that are meant to keep key isolated should just return `None` here (which
+ /// is the default for this method, if not overridden).
+ </span><span class="kw">fn </span>descriptor_secret_key(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><DescriptorSecretKey> {
+ <span class="prelude-val">None
+ </span>}
}
-<span class="doccomment">/// PSBT Input signer</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait can be implemented to provide custom signers to the wallet. If the signer supports signing</span>
-<span class="doccomment">/// individual inputs, this trait should be implemented and BDK will provide automatically an implementation</span>
-<span class="doccomment">/// for [`TransactionSigner`].</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">InputSigner</span>: <span class="ident">SignerCommon</span> {
- <span class="doccomment">/// Sign a single psbt input</span>
- <span class="kw">fn</span> <span class="ident">sign_input</span>(
+<span class="doccomment">/// PSBT Input signer
+///
+/// This trait can be implemented to provide custom signers to the wallet. If the signer supports signing
+/// individual inputs, this trait should be implemented and BDK will provide automatically an implementation
+/// for [`TransactionSigner`].
+</span><span class="kw">pub trait </span>InputSigner: SignerCommon {
+ <span class="doccomment">/// Sign a single psbt input
+ </span><span class="kw">fn </span>sign_input(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span>;
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ sign_options: <span class="kw-2">&</span>SignOptions,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError>;
}
-<span class="doccomment">/// PSBT signer</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This trait can be implemented when the signer can't sign inputs individually, but signs the whole transaction</span>
-<span class="doccomment">/// at once.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">TransactionSigner</span>: <span class="ident">SignerCommon</span> {
- <span class="doccomment">/// Sign all the inputs of the psbt</span>
- <span class="kw">fn</span> <span class="ident">sign_transaction</span>(
+<span class="doccomment">/// PSBT signer
+///
+/// This trait can be implemented when the signer can't sign inputs individually, but signs the whole transaction
+/// at once.
+</span><span class="kw">pub trait </span>TransactionSigner: SignerCommon {
+ <span class="doccomment">/// Sign all the inputs of the psbt
+ </span><span class="kw">fn </span>sign_transaction(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span>;
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ sign_options: <span class="kw-2">&</span>SignOptions,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError>;
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">InputSigner</span><span class="op">></span> <span class="ident">TransactionSigner</span> <span class="kw">for</span> <span class="ident">T</span> {
- <span class="kw">fn</span> <span class="ident">sign_transaction</span>(
+<span class="kw">impl</span><T: InputSigner> TransactionSigner <span class="kw">for </span>T {
+ <span class="kw">fn </span>sign_transaction(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="kw">for</span> <span class="ident">input_index</span> <span class="kw">in</span> <span class="number">0</span>..<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() {
- <span class="self">self</span>.<span class="ident">sign_input</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>, <span class="ident">sign_options</span>, <span class="ident">secp</span>)<span class="question-mark">?</span>;
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ sign_options: <span class="kw-2">&</span>SignOptions,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError> {
+ <span class="kw">for </span>input_index <span class="kw">in </span><span class="number">0</span>..psbt.inputs.len() {
+ <span class="self">self</span>.sign_input(psbt, input_index, sign_options, secp)<span class="question-mark">?</span>;
}
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">impl</span> <span class="ident">SignerCommon</span> <span class="kw">for</span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">DescriptorXKey</span><span class="op"><</span><span class="ident">ExtendedPrivKey</span><span class="op">></span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">SignerId</span> {
- <span class="ident">SignerId::from</span>(<span class="self">self</span>.<span class="ident">root_fingerprint</span>(<span class="ident">secp</span>))
+<span class="kw">impl </span>SignerCommon <span class="kw">for </span>SignerWrapper<DescriptorXKey<ExtendedPrivKey>> {
+ <span class="kw">fn </span>id(<span class="kw-2">&</span><span class="self">self</span>, secp: <span class="kw-2">&</span>SecpCtx) -> SignerId {
+ SignerId::from(<span class="self">self</span>.root_fingerprint(secp))
}
- <span class="kw">fn</span> <span class="ident">descriptor_secret_key</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DescriptorSecretKey</span><span class="op">></span> {
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorSecretKey::XPrv</span>(<span class="self">self</span>.<span class="ident">signer</span>.<span class="ident">clone</span>()))
+ <span class="kw">fn </span>descriptor_secret_key(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><DescriptorSecretKey> {
+ <span class="prelude-val">Some</span>(DescriptorSecretKey::XPrv(<span class="self">self</span>.signer.clone()))
}
}
-<span class="kw">impl</span> <span class="ident">InputSigner</span> <span class="kw">for</span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">DescriptorXKey</span><span class="op"><</span><span class="ident">ExtendedPrivKey</span><span class="op">></span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">sign_input</span>(
+<span class="kw">impl </span>InputSigner <span class="kw">for </span>SignerWrapper<DescriptorXKey<ExtendedPrivKey>> {
+ <span class="kw">fn </span>sign_input(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::InputIndexOutOfRange</span>);
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ sign_options: <span class="kw-2">&</span>SignOptions,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError> {
+ <span class="kw">if </span>input_index >= psbt.inputs.len() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::InputIndexOutOfRange);
}
- <span class="kw">if</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">final_script_sig</span>.<span class="ident">is_some</span>()
- <span class="op">|</span><span class="op">|</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">final_script_witness</span>.<span class="ident">is_some</span>()
+ <span class="kw">if </span>psbt.inputs[input_index].final_script_sig.is_some()
+ || psbt.inputs[input_index].final_script_witness.is_some()
{
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="kw">let</span> <span class="ident">tap_key_origins</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>]
- .<span class="ident">tap_key_origins</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, (<span class="kw">_</span>, <span class="ident">keysource</span>))<span class="op">|</span> (<span class="ident">SinglePubKey::XOnly</span>(<span class="kw-2">*</span><span class="ident">pk</span>), <span class="ident">keysource</span>));
- <span class="kw">let</span> (<span class="ident">public_key</span>, <span class="ident">full_path</span>) <span class="op">=</span> <span class="kw">match</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>]
- .<span class="ident">bip32_derivation</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">pk</span>, <span class="ident">keysource</span>)<span class="op">|</span> (<span class="ident">SinglePubKey::FullKey</span>(<span class="ident">PublicKey::new</span>(<span class="kw-2">*</span><span class="ident">pk</span>)), <span class="ident">keysource</span>))
- .<span class="ident">chain</span>(<span class="ident">tap_key_origins</span>)
- .<span class="ident">find_map</span>(<span class="op">|</span>(<span class="ident">pk</span>, <span class="ident">keysource</span>)<span class="op">|</span> {
- <span class="kw">if</span> <span class="self">self</span>.<span class="ident">matches</span>(<span class="ident">keysource</span>, <span class="ident">secp</span>).<span class="ident">is_some</span>() {
- <span class="prelude-val">Some</span>((<span class="ident">pk</span>, <span class="ident">keysource</span>.<span class="number">1</span>.<span class="ident">clone</span>()))
- } <span class="kw">else</span> {
- <span class="prelude-val">None</span>
- }
+ <span class="kw">let </span>tap_key_origins = psbt.inputs[input_index]
+ .tap_key_origins
+ .iter()
+ .map(|(pk, (<span class="kw">_</span>, keysource))| (SinglePubKey::XOnly(<span class="kw-2">*</span>pk), keysource));
+ <span class="kw">let </span>(public_key, full_path) = <span class="kw">match </span>psbt.inputs[input_index]
+ .bip32_derivation
+ .iter()
+ .map(|(pk, keysource)| (SinglePubKey::FullKey(PublicKey::new(<span class="kw-2">*</span>pk)), keysource))
+ .chain(tap_key_origins)
+ .find_map(|(pk, keysource)| {
+ <span class="kw">if </span><span class="self">self</span>.matches(keysource, secp).is_some() {
+ <span class="prelude-val">Some</span>((pk, keysource.<span class="number">1</span>.clone()))
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
}) {
- <span class="prelude-val">Some</span>((<span class="ident">pk</span>, <span class="ident">full_path</span>)) => (<span class="ident">pk</span>, <span class="ident">full_path</span>),
- <span class="prelude-val">None</span> => <span class="kw">return</span> <span class="prelude-val">Ok</span>(()),
+ <span class="prelude-val">Some</span>((pk, full_path)) => (pk, full_path),
+ <span class="prelude-val">None </span>=> <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
};
- <span class="kw">let</span> <span class="ident">derived_key</span> <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">origin</span>.<span class="ident">clone</span>() {
- <span class="prelude-val">Some</span>((<span class="ident">_fingerprint</span>, <span class="ident">origin_path</span>)) => {
- <span class="kw">let</span> <span class="ident">deriv_path</span> <span class="op">=</span> <span class="ident">DerivationPath::from</span>(
- <span class="kw-2">&</span><span class="ident">full_path</span>.<span class="ident">into_iter</span>().<span class="ident">cloned</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">ChildNumber</span><span class="op">></span><span class="op">></span>()
- [<span class="ident">origin_path</span>.<span class="ident">len</span>()..],
+ <span class="kw">let </span>derived_key = <span class="kw">match </span><span class="self">self</span>.origin.clone() {
+ <span class="prelude-val">Some</span>((_fingerprint, origin_path)) => {
+ <span class="kw">let </span>deriv_path = DerivationPath::from(
+ <span class="kw-2">&</span>full_path.into_iter().cloned().collect::<Vec<ChildNumber>>()
+ [origin_path.len()..],
);
- <span class="self">self</span>.<span class="ident">xkey</span>.<span class="ident">derive_priv</span>(<span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">deriv_path</span>).<span class="ident">unwrap</span>()
+ <span class="self">self</span>.xkey.derive_priv(secp, <span class="kw-2">&</span>deriv_path).unwrap()
}
- <span class="prelude-val">None</span> => <span class="self">self</span>.<span class="ident">xkey</span>.<span class="ident">derive_priv</span>(<span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">full_path</span>).<span class="ident">unwrap</span>(),
+ <span class="prelude-val">None </span>=> <span class="self">self</span>.xkey.derive_priv(secp, <span class="kw-2">&</span>full_path).unwrap(),
};
- <span class="kw">let</span> <span class="ident">computed_pk</span> <span class="op">=</span> <span class="ident">secp256k1::PublicKey::from_secret_key</span>(<span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">derived_key</span>.<span class="ident">private_key</span>);
- <span class="kw">let</span> <span class="ident">valid_key</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">public_key</span> {
- <span class="ident">SinglePubKey::FullKey</span>(<span class="ident">pk</span>) <span class="kw">if</span> <span class="ident">pk</span>.<span class="ident">inner</span> <span class="op">==</span> <span class="ident">computed_pk</span> => <span class="bool-val">true</span>,
- <span class="ident">SinglePubKey::XOnly</span>(<span class="ident">x_only</span>) <span class="kw">if</span> <span class="ident">XOnlyPublicKey::from</span>(<span class="ident">computed_pk</span>) <span class="op">==</span> <span class="ident">x_only</span> => <span class="bool-val">true</span>,
- <span class="kw">_</span> => <span class="bool-val">false</span>,
+ <span class="kw">let </span>computed_pk = secp256k1::PublicKey::from_secret_key(secp, <span class="kw-2">&</span>derived_key.private_key);
+ <span class="kw">let </span>valid_key = <span class="kw">match </span>public_key {
+ SinglePubKey::FullKey(pk) <span class="kw">if </span>pk.inner == computed_pk => <span class="bool-val">true</span>,
+ SinglePubKey::XOnly(x_only) <span class="kw">if </span>XOnlyPublicKey::from(computed_pk) == x_only => <span class="bool-val">true</span>,
+ <span class="kw">_ </span>=> <span class="bool-val">false</span>,
};
- <span class="kw">if</span> <span class="op">!</span><span class="ident">valid_key</span> {
- <span class="prelude-val">Err</span>(<span class="ident">SignerError::InvalidKey</span>)
- } <span class="kw">else</span> {
- <span class="comment">// HD wallets imply compressed keys</span>
- <span class="kw">let</span> <span class="ident">priv_key</span> <span class="op">=</span> <span class="ident">PrivateKey</span> {
- <span class="ident">compressed</span>: <span class="bool-val">true</span>,
- <span class="ident">network</span>: <span class="self">self</span>.<span class="ident">xkey</span>.<span class="ident">network</span>,
- <span class="ident">inner</span>: <span class="ident">derived_key</span>.<span class="ident">private_key</span>,
+ <span class="kw">if </span>!valid_key {
+ <span class="prelude-val">Err</span>(SignerError::InvalidKey)
+ } <span class="kw">else </span>{
+ <span class="comment">// HD wallets imply compressed keys
+ </span><span class="kw">let </span>priv_key = PrivateKey {
+ compressed: <span class="bool-val">true</span>,
+ network: <span class="self">self</span>.xkey.network,
+ inner: derived_key.private_key,
};
- <span class="ident">SignerWrapper::new</span>(<span class="ident">priv_key</span>, <span class="self">self</span>.<span class="ident">ctx</span>).<span class="ident">sign_input</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>, <span class="ident">sign_options</span>, <span class="ident">secp</span>)
+ SignerWrapper::new(priv_key, <span class="self">self</span>.ctx).sign_input(psbt, input_index, sign_options, secp)
}
}
}
-<span class="kw">impl</span> <span class="ident">SignerCommon</span> <span class="kw">for</span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">PrivateKey</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">SignerId</span> {
- <span class="ident">SignerId::from</span>(<span class="self">self</span>.<span class="ident">public_key</span>(<span class="ident">secp</span>).<span class="ident">to_pubkeyhash</span>(<span class="ident">SigType::Ecdsa</span>))
+<span class="kw">impl </span>SignerCommon <span class="kw">for </span>SignerWrapper<PrivateKey> {
+ <span class="kw">fn </span>id(<span class="kw-2">&</span><span class="self">self</span>, secp: <span class="kw-2">&</span>SecpCtx) -> SignerId {
+ SignerId::from(<span class="self">self</span>.public_key(secp).to_pubkeyhash(SigType::Ecdsa))
}
- <span class="kw">fn</span> <span class="ident">descriptor_secret_key</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">DescriptorSecretKey</span><span class="op">></span> {
- <span class="prelude-val">Some</span>(<span class="ident">DescriptorSecretKey::Single</span>(<span class="ident">SinglePriv</span> {
- <span class="ident">key</span>: <span class="self">self</span>.<span class="ident">signer</span>,
- <span class="ident">origin</span>: <span class="prelude-val">None</span>,
+ <span class="kw">fn </span>descriptor_secret_key(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><DescriptorSecretKey> {
+ <span class="prelude-val">Some</span>(DescriptorSecretKey::Single(SinglePriv {
+ key: <span class="self">self</span>.signer,
+ origin: <span class="prelude-val">None</span>,
}))
}
}
-<span class="kw">impl</span> <span class="ident">InputSigner</span> <span class="kw">for</span> <span class="ident">SignerWrapper</span><span class="op"><</span><span class="ident">PrivateKey</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">sign_input</span>(
+<span class="kw">impl </span>InputSigner <span class="kw">for </span>SignerWrapper<PrivateKey> {
+ <span class="kw">fn </span>sign_input(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">len</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::InputIndexOutOfRange</span>);
+ psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ sign_options: <span class="kw-2">&</span>SignOptions,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError> {
+ <span class="kw">if </span>input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::InputIndexOutOfRange);
}
- <span class="kw">if</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">final_script_sig</span>.<span class="ident">is_some</span>()
- <span class="op">|</span><span class="op">|</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">final_script_witness</span>.<span class="ident">is_some</span>()
+ <span class="kw">if </span>psbt.inputs[input_index].final_script_sig.is_some()
+ || psbt.inputs[input_index].final_script_witness.is_some()
{
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> <span class="ident">PublicKey::from_private_key</span>(<span class="ident">secp</span>, <span class="self">self</span>);
- <span class="kw">let</span> <span class="ident">x_only_pubkey</span> <span class="op">=</span> <span class="ident">XOnlyPublicKey::from</span>(<span class="ident">pubkey</span>.<span class="ident">inner</span>);
+ <span class="kw">let </span>pubkey = PublicKey::from_private_key(secp, <span class="self">self</span>);
+ <span class="kw">let </span>x_only_pubkey = XOnlyPublicKey::from(pubkey.inner);
- <span class="kw">if</span> <span class="kw">let</span> <span class="ident">SignerContext::Tap</span> { <span class="ident">is_internal_key</span> } <span class="op">=</span> <span class="self">self</span>.<span class="ident">ctx</span> {
- <span class="kw">if</span> <span class="ident">is_internal_key</span>
- <span class="op">&&</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">tap_key_sig</span>.<span class="ident">is_none</span>()
- <span class="op">&&</span> <span class="ident">sign_options</span>.<span class="ident">sign_with_tap_internal_key</span>
+ <span class="kw">if let </span>SignerContext::Tap { is_internal_key } = <span class="self">self</span>.ctx {
+ <span class="kw">if </span>is_internal_key
+ && psbt.inputs[input_index].tap_key_sig.is_none()
+ && sign_options.sign_with_tap_internal_key
{
- <span class="kw">let</span> (<span class="ident">hash</span>, <span class="ident">hash_ty</span>) <span class="op">=</span> <span class="ident">Tap::sighash</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
- <span class="ident">sign_psbt_schnorr</span>(
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>,
- <span class="ident">x_only_pubkey</span>,
+ <span class="kw">let </span>(hash, hash_ty) = Tap::sighash(psbt, input_index, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
+ sign_psbt_schnorr(
+ <span class="kw-2">&</span><span class="self">self</span>.inner,
+ x_only_pubkey,
<span class="prelude-val">None</span>,
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>],
- <span class="ident">hash</span>,
- <span class="ident">hash_ty</span>,
- <span class="ident">secp</span>,
+ <span class="kw-2">&mut </span>psbt.inputs[input_index],
+ hash,
+ hash_ty,
+ secp,
);
}
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">leaf_hashes</span>, <span class="kw">_</span>)) <span class="op">=</span>
- <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">tap_key_origins</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">x_only_pubkey</span>)
+ <span class="kw">if let </span><span class="prelude-val">Some</span>((leaf_hashes, <span class="kw">_</span>)) =
+ psbt.inputs[input_index].tap_key_origins.get(<span class="kw-2">&</span>x_only_pubkey)
{
- <span class="kw">let</span> <span class="ident">leaf_hashes</span> <span class="op">=</span> <span class="ident">leaf_hashes</span>
- .<span class="ident">iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">lh</span><span class="op">|</span> {
- <span class="comment">// Removing the leaves we shouldn't sign for</span>
- <span class="kw">let</span> <span class="ident">should_sign</span> <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&</span><span class="ident">sign_options</span>.<span class="ident">tap_leaves_options</span> {
- <span class="ident">TapLeavesOptions::All</span> => <span class="bool-val">true</span>,
- <span class="ident">TapLeavesOptions::Include</span>(<span class="ident">v</span>) => <span class="ident">v</span>.<span class="ident">contains</span>(<span class="ident">lh</span>),
- <span class="ident">TapLeavesOptions::Exclude</span>(<span class="ident">v</span>) => <span class="op">!</span><span class="ident">v</span>.<span class="ident">contains</span>(<span class="ident">lh</span>),
- <span class="ident">TapLeavesOptions::None</span> => <span class="bool-val">false</span>,
+ <span class="kw">let </span>leaf_hashes = leaf_hashes
+ .iter()
+ .filter(|lh| {
+ <span class="comment">// Removing the leaves we shouldn't sign for
+ </span><span class="kw">let </span>should_sign = <span class="kw">match </span><span class="kw-2">&</span>sign_options.tap_leaves_options {
+ TapLeavesOptions::All => <span class="bool-val">true</span>,
+ TapLeavesOptions::Include(v) => v.contains(lh),
+ TapLeavesOptions::Exclude(v) => !v.contains(lh),
+ TapLeavesOptions::None => <span class="bool-val">false</span>,
};
- <span class="comment">// Filtering out the leaves without our key</span>
- <span class="ident">should_sign</span>
- <span class="op">&&</span> <span class="op">!</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>]
- .<span class="ident">tap_script_sigs</span>
- .<span class="ident">contains_key</span>(<span class="kw-2">&</span>(<span class="ident">x_only_pubkey</span>, <span class="kw-2">*</span><span class="kw-2">*</span><span class="ident">lh</span>))
+ <span class="comment">// Filtering out the leaves without our key
+ </span>should_sign
+ && !psbt.inputs[input_index]
+ .tap_script_sigs
+ .contains_key(<span class="kw-2">&</span>(x_only_pubkey, <span class="kw-2">**</span>lh))
})
- .<span class="ident">cloned</span>()
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">for</span> <span class="ident">lh</span> <span class="kw">in</span> <span class="ident">leaf_hashes</span> {
- <span class="kw">let</span> (<span class="ident">hash</span>, <span class="ident">hash_ty</span>) <span class="op">=</span> <span class="ident">Tap::sighash</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>, <span class="prelude-val">Some</span>(<span class="ident">lh</span>))<span class="question-mark">?</span>;
- <span class="ident">sign_psbt_schnorr</span>(
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>,
- <span class="ident">x_only_pubkey</span>,
- <span class="prelude-val">Some</span>(<span class="ident">lh</span>),
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>],
- <span class="ident">hash</span>,
- <span class="ident">hash_ty</span>,
- <span class="ident">secp</span>,
+ .cloned()
+ .collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">for </span>lh <span class="kw">in </span>leaf_hashes {
+ <span class="kw">let </span>(hash, hash_ty) = Tap::sighash(psbt, input_index, <span class="prelude-val">Some</span>(lh))<span class="question-mark">?</span>;
+ sign_psbt_schnorr(
+ <span class="kw-2">&</span><span class="self">self</span>.inner,
+ x_only_pubkey,
+ <span class="prelude-val">Some</span>(lh),
+ <span class="kw-2">&mut </span>psbt.inputs[input_index],
+ hash,
+ hash_ty,
+ secp,
);
}
}
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="kw">if</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>].<span class="ident">partial_sigs</span>.<span class="ident">contains_key</span>(<span class="kw-2">&</span><span class="ident">pubkey</span>) {
- <span class="kw">return</span> <span class="prelude-val">Ok</span>(());
+ <span class="kw">if </span>psbt.inputs[input_index].partial_sigs.contains_key(<span class="kw-2">&</span>pubkey) {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
- <span class="kw">let</span> (<span class="ident">hash</span>, <span class="ident">hash_ty</span>) <span class="op">=</span> <span class="kw">match</span> <span class="self">self</span>.<span class="ident">ctx</span> {
- <span class="ident">SignerContext::Segwitv0</span> => <span class="ident">Segwitv0::sighash</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>, ())<span class="question-mark">?</span>,
- <span class="ident">SignerContext::Legacy</span> => <span class="ident">Legacy::sighash</span>(<span class="ident">psbt</span>, <span class="ident">input_index</span>, ())<span class="question-mark">?</span>,
- <span class="kw">_</span> => <span class="kw">return</span> <span class="prelude-val">Ok</span>(()), <span class="comment">// handled above</span>
- };
- <span class="ident">sign_psbt_ecdsa</span>(
- <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>,
- <span class="ident">pubkey</span>,
- <span class="kw-2">&mut</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>],
- <span class="ident">hash</span>,
- <span class="ident">hash_ty</span>,
- <span class="ident">secp</span>,
- <span class="ident">sign_options</span>.<span class="ident">allow_grinding</span>,
+ <span class="kw">let </span>(hash, hash_ty) = <span class="kw">match </span><span class="self">self</span>.ctx {
+ SignerContext::Segwitv0 => Segwitv0::sighash(psbt, input_index, ())<span class="question-mark">?</span>,
+ SignerContext::Legacy => Legacy::sighash(psbt, input_index, ())<span class="question-mark">?</span>,
+ <span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Ok</span>(()), <span class="comment">// handled above
+ </span>};
+ sign_psbt_ecdsa(
+ <span class="kw-2">&</span><span class="self">self</span>.inner,
+ pubkey,
+ <span class="kw-2">&mut </span>psbt.inputs[input_index],
+ hash,
+ hash_ty,
+ secp,
+ sign_options.allow_grinding,
);
<span class="prelude-val">Ok</span>(())
}
}
-<span class="kw">fn</span> <span class="ident">sign_psbt_ecdsa</span>(
- <span class="ident">secret_key</span>: <span class="kw-2">&</span><span class="ident">secp256k1::SecretKey</span>,
- <span class="ident">pubkey</span>: <span class="ident">PublicKey</span>,
- <span class="ident">psbt_input</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::Input</span>,
- <span class="ident">hash</span>: <span class="ident">bitcoin::Sighash</span>,
- <span class="ident">hash_ty</span>: <span class="ident">EcdsaSighashType</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- <span class="ident">allow_grinding</span>: <span class="ident">bool</span>,
+<span class="kw">fn </span>sign_psbt_ecdsa(
+ secret_key: <span class="kw-2">&</span>secp256k1::SecretKey,
+ pubkey: PublicKey,
+ psbt_input: <span class="kw-2">&mut </span>psbt::Input,
+ hash: bitcoin::Sighash,
+ hash_ty: EcdsaSighashType,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ allow_grinding: bool,
) {
- <span class="kw">let</span> <span class="ident">msg</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">Message::from_slice</span>(<span class="kw-2">&</span><span class="ident">hash</span>.<span class="ident">into_inner</span>()[..]).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">sig</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">allow_grinding</span> {
- <span class="ident">secp</span>.<span class="ident">sign_ecdsa_low_r</span>(<span class="ident">msg</span>, <span class="ident">secret_key</span>)
- } <span class="kw">else</span> {
- <span class="ident">secp</span>.<span class="ident">sign_ecdsa</span>(<span class="ident">msg</span>, <span class="ident">secret_key</span>)
+ <span class="kw">let </span>msg = <span class="kw-2">&</span>Message::from_slice(<span class="kw-2">&</span>hash.into_inner()[..]).unwrap();
+ <span class="kw">let </span>sig = <span class="kw">if </span>allow_grinding {
+ secp.sign_ecdsa_low_r(msg, secret_key)
+ } <span class="kw">else </span>{
+ secp.sign_ecdsa(msg, secret_key)
};
- <span class="ident">secp</span>.<span class="ident">verify_ecdsa</span>(<span class="ident">msg</span>, <span class="kw-2">&</span><span class="ident">sig</span>, <span class="kw-2">&</span><span class="ident">pubkey</span>.<span class="ident">inner</span>)
- .<span class="ident">expect</span>(<span class="string">"invalid or corrupted ecdsa signature"</span>);
+ secp.verify_ecdsa(msg, <span class="kw-2">&</span>sig, <span class="kw-2">&</span>pubkey.inner)
+ .expect(<span class="string">"invalid or corrupted ecdsa signature"</span>);
- <span class="kw">let</span> <span class="ident">final_signature</span> <span class="op">=</span> <span class="ident">ecdsa::EcdsaSig</span> { <span class="ident">sig</span>, <span class="ident">hash_ty</span> };
- <span class="ident">psbt_input</span>.<span class="ident">partial_sigs</span>.<span class="ident">insert</span>(<span class="ident">pubkey</span>, <span class="ident">final_signature</span>);
+ <span class="kw">let </span>final_signature = ecdsa::EcdsaSig { sig, hash_ty };
+ psbt_input.partial_sigs.insert(pubkey, final_signature);
}
-<span class="comment">// Calling this with `leaf_hash` = `None` will sign for key-spend</span>
-<span class="kw">fn</span> <span class="ident">sign_psbt_schnorr</span>(
- <span class="ident">secret_key</span>: <span class="kw-2">&</span><span class="ident">secp256k1::SecretKey</span>,
- <span class="ident">pubkey</span>: <span class="ident">XOnlyPublicKey</span>,
- <span class="ident">leaf_hash</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">taproot::TapLeafHash</span><span class="op">></span>,
- <span class="ident">psbt_input</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::Input</span>,
- <span class="ident">hash</span>: <span class="ident">taproot::TapSighashHash</span>,
- <span class="ident">hash_ty</span>: <span class="ident">SchnorrSighashType</span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
+<span class="comment">// Calling this with `leaf_hash` = `None` will sign for key-spend
+</span><span class="kw">fn </span>sign_psbt_schnorr(
+ secret_key: <span class="kw-2">&</span>secp256k1::SecretKey,
+ pubkey: XOnlyPublicKey,
+ leaf_hash: <span class="prelude-ty">Option</span><taproot::TapLeafHash>,
+ psbt_input: <span class="kw-2">&mut </span>psbt::Input,
+ hash: taproot::TapSighashHash,
+ hash_ty: SchnorrSighashType,
+ secp: <span class="kw-2">&</span>SecpCtx,
) {
- <span class="kw">use</span> <span class="ident">schnorr::TapTweak</span>;
-
- <span class="kw">let</span> <span class="ident">keypair</span> <span class="op">=</span> <span class="ident">secp256k1::KeyPair::from_seckey_slice</span>(<span class="ident">secp</span>, <span class="ident">secret_key</span>.<span class="ident">as_ref</span>()).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">keypair</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">leaf_hash</span> {
- <span class="prelude-val">None</span> => <span class="ident">keypair</span>
- .<span class="ident">tap_tweak</span>(<span class="ident">secp</span>, <span class="ident">psbt_input</span>.<span class="ident">tap_merkle_root</span>)
- .<span class="ident">to_inner</span>(),
- <span class="prelude-val">Some</span>(<span class="kw">_</span>) => <span class="ident">keypair</span>, <span class="comment">// no tweak for script spend</span>
- };
-
- <span class="kw">let</span> <span class="ident">msg</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">Message::from_slice</span>(<span class="kw-2">&</span><span class="ident">hash</span>.<span class="ident">into_inner</span>()[..]).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">sig</span> <span class="op">=</span> <span class="ident">secp</span>.<span class="ident">sign_schnorr</span>(<span class="ident">msg</span>, <span class="kw-2">&</span><span class="ident">keypair</span>);
- <span class="ident">secp</span>.<span class="ident">verify_schnorr</span>(<span class="kw-2">&</span><span class="ident">sig</span>, <span class="ident">msg</span>, <span class="kw-2">&</span><span class="ident">XOnlyPublicKey::from_keypair</span>(<span class="kw-2">&</span><span class="ident">keypair</span>).<span class="number">0</span>)
- .<span class="ident">expect</span>(<span class="string">"invalid or corrupted schnorr signature"</span>);
-
- <span class="kw">let</span> <span class="ident">final_signature</span> <span class="op">=</span> <span class="ident">schnorr::SchnorrSig</span> { <span class="ident">sig</span>, <span class="ident">hash_ty</span> };
-
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">lh</span>) <span class="op">=</span> <span class="ident">leaf_hash</span> {
- <span class="ident">psbt_input</span>
- .<span class="ident">tap_script_sigs</span>
- .<span class="ident">insert</span>((<span class="ident">pubkey</span>, <span class="ident">lh</span>), <span class="ident">final_signature</span>);
- } <span class="kw">else</span> {
- <span class="ident">psbt_input</span>.<span class="ident">tap_key_sig</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">final_signature</span>);
+ <span class="kw">use </span>schnorr::TapTweak;
+
+ <span class="kw">let </span>keypair = secp256k1::KeyPair::from_seckey_slice(secp, secret_key.as_ref()).unwrap();
+ <span class="kw">let </span>keypair = <span class="kw">match </span>leaf_hash {
+ <span class="prelude-val">None </span>=> keypair
+ .tap_tweak(secp, psbt_input.tap_merkle_root)
+ .to_inner(),
+ <span class="prelude-val">Some</span>(<span class="kw">_</span>) => keypair, <span class="comment">// no tweak for script spend
+ </span>};
+
+ <span class="kw">let </span>msg = <span class="kw-2">&</span>Message::from_slice(<span class="kw-2">&</span>hash.into_inner()[..]).unwrap();
+ <span class="kw">let </span>sig = secp.sign_schnorr(msg, <span class="kw-2">&</span>keypair);
+ secp.verify_schnorr(<span class="kw-2">&</span>sig, msg, <span class="kw-2">&</span>XOnlyPublicKey::from_keypair(<span class="kw-2">&</span>keypair).<span class="number">0</span>)
+ .expect(<span class="string">"invalid or corrupted schnorr signature"</span>);
+
+ <span class="kw">let </span>final_signature = schnorr::SchnorrSig { sig, hash_ty };
+
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(lh) = leaf_hash {
+ psbt_input
+ .tap_script_sigs
+ .insert((pubkey, lh), final_signature);
+ } <span class="kw">else </span>{
+ psbt_input.tap_key_sig = <span class="prelude-val">Some</span>(final_signature);
}
}
-<span class="doccomment">/// Defines the order in which signers are called</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// The default value is `100`. Signers with an ordering above that will be called later,</span>
-<span class="doccomment">/// and they will thus see the partial signatures added to the transaction once they get to sign</span>
-<span class="doccomment">/// themselves.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialOrd</span>, <span class="ident">PartialEq</span>, <span class="ident">Ord</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SignerOrdering</span>(<span class="kw">pub</span> <span class="ident">usize</span>);
-
-<span class="kw">impl</span> <span class="ident">std::default::Default</span> <span class="kw">for</span> <span class="ident">SignerOrdering</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">SignerOrdering</span>(<span class="number">100</span>)
+<span class="doccomment">/// Defines the order in which signers are called
+///
+/// The default value is `100`. Signers with an ordering above that will be called later,
+/// and they will thus see the partial signatures added to the transaction once they get to sign
+/// themselves.
+</span><span class="attr">#[derive(Debug, Clone, PartialOrd, PartialEq, Ord, Eq)]
+</span><span class="kw">pub struct </span>SignerOrdering(<span class="kw">pub </span>usize);
+
+<span class="kw">impl </span>std::default::Default <span class="kw">for </span>SignerOrdering {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ SignerOrdering(<span class="number">100</span>)
}
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">struct</span> <span class="ident">SignersContainerKey</span> {
- <span class="ident">id</span>: <span class="ident">SignerId</span>,
- <span class="ident">ordering</span>: <span class="ident">SignerOrdering</span>,
+<span class="attr">#[derive(Debug, Clone)]
+</span><span class="kw">struct </span>SignersContainerKey {
+ id: SignerId,
+ ordering: SignerOrdering,
}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span>(<span class="ident">SignerId</span>, <span class="ident">SignerOrdering</span>)<span class="op">></span> <span class="kw">for</span> <span class="ident">SignersContainerKey</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">tuple</span>: (<span class="ident">SignerId</span>, <span class="ident">SignerOrdering</span>)) -> <span class="self">Self</span> {
- <span class="ident">SignersContainerKey</span> {
- <span class="ident">id</span>: <span class="ident">tuple</span>.<span class="number">0</span>,
- <span class="ident">ordering</span>: <span class="ident">tuple</span>.<span class="number">1</span>,
+<span class="kw">impl </span>From<(SignerId, SignerOrdering)> <span class="kw">for </span>SignersContainerKey {
+ <span class="kw">fn </span>from(tuple: (SignerId, SignerOrdering)) -> <span class="self">Self </span>{
+ SignersContainerKey {
+ id: tuple.<span class="number">0</span>,
+ ordering: tuple.<span class="number">1</span>,
}
}
}
-<span class="doccomment">/// Container for multiple signers</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SignersContainer</span>(<span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">SignersContainerKey</span>, <span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span><span class="op">></span>);
-
-<span class="kw">impl</span> <span class="ident">SignersContainer</span> {
- <span class="doccomment">/// Create a map of public keys to secret keys</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">as_key_map</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">KeyMap</span> {
- <span class="self">self</span>.<span class="number">0</span>
- .<span class="ident">values</span>()
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">signer</span><span class="op">|</span> <span class="ident">signer</span>.<span class="ident">descriptor_secret_key</span>())
- .<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">secret</span><span class="op">|</span> <span class="ident">secret</span>.<span class="ident">to_public</span>(<span class="ident">secp</span>).<span class="ident">ok</span>().<span class="ident">map</span>(<span class="op">|</span><span class="ident">public</span><span class="op">|</span> (<span class="ident">public</span>, <span class="ident">secret</span>)))
- .<span class="ident">collect</span>()
+<span class="doccomment">/// Container for multiple signers
+</span><span class="attr">#[derive(Debug, Default, Clone)]
+</span><span class="kw">pub struct </span>SignersContainer(BTreeMap<SignersContainerKey, Arc<<span class="kw">dyn </span>TransactionSigner>>);
+
+<span class="kw">impl </span>SignersContainer {
+ <span class="doccomment">/// Create a map of public keys to secret keys
+ </span><span class="kw">pub fn </span>as_key_map(<span class="kw-2">&</span><span class="self">self</span>, secp: <span class="kw-2">&</span>SecpCtx) -> KeyMap {
+ <span class="self">self</span>.<span class="number">0
+ </span>.values()
+ .filter_map(|signer| signer.descriptor_secret_key())
+ .filter_map(|secret| secret.to_public(secp).ok().map(|public| (public, secret)))
+ .collect()
}
- <span class="doccomment">/// Build a new signer container from a [`KeyMap`]</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Also looks at the corresponding descriptor to determine the [`SignerContext`] to attach to</span>
- <span class="doccomment">/// the signers</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">build</span>(
- <span class="ident">keymap</span>: <span class="ident">KeyMap</span>,
- <span class="ident">descriptor</span>: <span class="kw-2">&</span><span class="ident">Descriptor</span><span class="op"><</span><span class="ident">DescriptorPublicKey</span><span class="op">></span>,
- <span class="ident">secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="ident">SignersContainer</span> {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">container</span> <span class="op">=</span> <span class="ident">SignersContainer::new</span>();
-
- <span class="kw">for</span> (<span class="ident">pubkey</span>, <span class="ident">secret</span>) <span class="kw">in</span> <span class="ident">keymap</span> {
- <span class="kw">let</span> <span class="ident">ctx</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">descriptor</span> {
- <span class="ident">Descriptor::Tr</span>(<span class="ident">tr</span>) => <span class="ident">SignerContext::Tap</span> {
- <span class="ident">is_internal_key</span>: <span class="ident">tr</span>.<span class="ident">internal_key</span>() <span class="op">==</span> <span class="kw-2">&</span><span class="ident">pubkey</span>,
+ <span class="doccomment">/// Build a new signer container from a [`KeyMap`]
+ ///
+ /// Also looks at the corresponding descriptor to determine the [`SignerContext`] to attach to
+ /// the signers
+ </span><span class="kw">pub fn </span>build(
+ keymap: KeyMap,
+ descriptor: <span class="kw-2">&</span>Descriptor<DescriptorPublicKey>,
+ secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> SignersContainer {
+ <span class="kw">let </span><span class="kw-2">mut </span>container = SignersContainer::new();
+
+ <span class="kw">for </span>(pubkey, secret) <span class="kw">in </span>keymap {
+ <span class="kw">let </span>ctx = <span class="kw">match </span>descriptor {
+ Descriptor::Tr(tr) => SignerContext::Tap {
+ is_internal_key: tr.internal_key() == <span class="kw-2">&</span>pubkey,
},
- <span class="kw">_</span> <span class="kw">if</span> <span class="ident">descriptor</span>.<span class="ident">is_witness</span>() => <span class="ident">SignerContext::Segwitv0</span>,
- <span class="kw">_</span> => <span class="ident">SignerContext::Legacy</span>,
+ <span class="kw">_ if </span>descriptor.is_witness() => SignerContext::Segwitv0,
+ <span class="kw">_ </span>=> SignerContext::Legacy,
};
- <span class="kw">match</span> <span class="ident">secret</span> {
- <span class="ident">DescriptorSecretKey::Single</span>(<span class="ident">private_key</span>) => <span class="ident">container</span>.<span class="ident">add_external</span>(
- <span class="ident">SignerId::from</span>(
- <span class="ident">private_key</span>
- .<span class="ident">key</span>
- .<span class="ident">public_key</span>(<span class="ident">secp</span>)
- .<span class="ident">to_pubkeyhash</span>(<span class="ident">SigType::Ecdsa</span>),
+ <span class="kw">match </span>secret {
+ DescriptorSecretKey::Single(private_key) => container.add_external(
+ SignerId::from(
+ private_key
+ .key
+ .public_key(secp)
+ .to_pubkeyhash(SigType::Ecdsa),
),
- <span class="ident">SignerOrdering::default</span>(),
- <span class="ident">Arc::new</span>(<span class="ident">SignerWrapper::new</span>(<span class="ident">private_key</span>.<span class="ident">key</span>, <span class="ident">ctx</span>)),
+ SignerOrdering::default(),
+ Arc::new(SignerWrapper::new(private_key.key, ctx)),
),
- <span class="ident">DescriptorSecretKey::XPrv</span>(<span class="ident">xprv</span>) => <span class="ident">container</span>.<span class="ident">add_external</span>(
- <span class="ident">SignerId::from</span>(<span class="ident">xprv</span>.<span class="ident">root_fingerprint</span>(<span class="ident">secp</span>)),
- <span class="ident">SignerOrdering::default</span>(),
- <span class="ident">Arc::new</span>(<span class="ident">SignerWrapper::new</span>(<span class="ident">xprv</span>, <span class="ident">ctx</span>)),
+ DescriptorSecretKey::XPrv(xprv) => container.add_external(
+ SignerId::from(xprv.root_fingerprint(secp)),
+ SignerOrdering::default(),
+ Arc::new(SignerWrapper::new(xprv, ctx)),
),
};
}
- <span class="ident">container</span>
+ container
}
}
-<span class="kw">impl</span> <span class="ident">SignersContainer</span> {
- <span class="doccomment">/// Default constructor</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
- <span class="ident">SignersContainer</span>(<span class="ident">Default::default</span>())
+<span class="kw">impl </span>SignersContainer {
+ <span class="doccomment">/// Default constructor
+ </span><span class="kw">pub fn </span>new() -> <span class="self">Self </span>{
+ SignersContainer(Default::default())
}
- <span class="doccomment">/// Adds an external signer to the container for the specified id. Optionally returns the</span>
- <span class="doccomment">/// signer that was previously in the container, if any</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_external</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">id</span>: <span class="ident">SignerId</span>,
- <span class="ident">ordering</span>: <span class="ident">SignerOrdering</span>,
- <span class="ident">signer</span>: <span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">insert</span>((<span class="ident">id</span>, <span class="ident">ordering</span>).<span class="ident">into</span>(), <span class="ident">signer</span>)
+ <span class="doccomment">/// Adds an external signer to the container for the specified id. Optionally returns the
+ /// signer that was previously in the container, if any
+ </span><span class="kw">pub fn </span>add_external(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ id: SignerId,
+ ordering: SignerOrdering,
+ signer: Arc<<span class="kw">dyn </span>TransactionSigner>,
+ ) -> <span class="prelude-ty">Option</span><Arc<<span class="kw">dyn </span>TransactionSigner>> {
+ <span class="self">self</span>.<span class="number">0</span>.insert((id, ordering).into(), signer)
}
- <span class="doccomment">/// Removes a signer from the container and returns it</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">remove</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">id</span>: <span class="ident">SignerId</span>,
- <span class="ident">ordering</span>: <span class="ident">SignerOrdering</span>,
- ) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">remove</span>(<span class="kw-2">&</span>(<span class="ident">id</span>, <span class="ident">ordering</span>).<span class="ident">into</span>())
+ <span class="doccomment">/// Removes a signer from the container and returns it
+ </span><span class="kw">pub fn </span>remove(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ id: SignerId,
+ ordering: SignerOrdering,
+ ) -> <span class="prelude-ty">Option</span><Arc<<span class="kw">dyn </span>TransactionSigner>> {
+ <span class="self">self</span>.<span class="number">0</span>.remove(<span class="kw-2">&</span>(id, ordering).into())
}
- <span class="doccomment">/// Returns the list of identifiers of all the signers in the container</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">ids</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">SignerId</span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>
- .<span class="ident">keys</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">SignersContainerKey</span> { <span class="ident">id</span>, .. }<span class="op">|</span> <span class="ident">id</span>)
- .<span class="ident">collect</span>()
+ <span class="doccomment">/// Returns the list of identifiers of all the signers in the container
+ </span><span class="kw">pub fn </span>ids(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<<span class="kw-2">&</span>SignerId> {
+ <span class="self">self</span>.<span class="number">0
+ </span>.keys()
+ .map(|SignersContainerKey { id, .. }| id)
+ .collect()
}
- <span class="doccomment">/// Returns the list of signers in the container, sorted by lowest to highest `ordering`</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">signers</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Vec</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">values</span>().<span class="ident">collect</span>()
+ <span class="doccomment">/// Returns the list of signers in the container, sorted by lowest to highest `ordering`
+ </span><span class="kw">pub fn </span>signers(<span class="kw-2">&</span><span class="self">self</span>) -> Vec<<span class="kw-2">&</span>Arc<<span class="kw">dyn </span>TransactionSigner>> {
+ <span class="self">self</span>.<span class="number">0</span>.values().collect()
}
- <span class="doccomment">/// Finds the signer with lowest ordering for a given id in the container.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">find</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">id</span>: <span class="ident">SignerId</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span><span class="op">></span> {
- <span class="self">self</span>.<span class="number">0</span>
- .<span class="ident">range</span>((
- <span class="ident">Included</span>(<span class="kw-2">&</span>(<span class="ident">id</span>.<span class="ident">clone</span>(), <span class="ident">SignerOrdering</span>(<span class="number">0</span>)).<span class="ident">into</span>()),
- <span class="ident">Included</span>(<span class="kw-2">&</span>(<span class="ident">id</span>.<span class="ident">clone</span>(), <span class="ident">SignerOrdering</span>(<span class="ident">usize::MAX</span>)).<span class="ident">into</span>()),
+ <span class="doccomment">/// Finds the signer with lowest ordering for a given id in the container.
+ </span><span class="kw">pub fn </span>find(<span class="kw-2">&</span><span class="self">self</span>, id: SignerId) -> <span class="prelude-ty">Option</span><<span class="kw-2">&</span>Arc<<span class="kw">dyn </span>TransactionSigner>> {
+ <span class="self">self</span>.<span class="number">0
+ </span>.range((
+ Included(<span class="kw-2">&</span>(id.clone(), SignerOrdering(<span class="number">0</span>)).into()),
+ Included(<span class="kw-2">&</span>(id.clone(), SignerOrdering(usize::MAX)).into()),
))
- .<span class="ident">filter</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="ident">k</span>.<span class="ident">id</span> <span class="op">==</span> <span class="ident">id</span>)
- .<span class="ident">map</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">v</span>)<span class="op">|</span> <span class="ident">v</span>)
- .<span class="ident">next</span>()
+ .filter(|(k, <span class="kw">_</span>)| k.id == id)
+ .map(|(<span class="kw">_</span>, v)| v)
+ .next()
}
}
-<span class="doccomment">/// Options for a software signer</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Adjust the behavior of our software signers and the way a transaction is finalized</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SignOptions</span> {
- <span class="doccomment">/// Whether the signer should trust the `witness_utxo`, if the `non_witness_utxo` hasn't been</span>
- <span class="doccomment">/// provided</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Defaults to `false` to mitigate the "SegWit bug" which chould trick the wallet into</span>
- <span class="doccomment">/// paying a fee larger than expected.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Some wallets, especially if relatively old, might not provide the `non_witness_utxo` for</span>
- <span class="doccomment">/// SegWit transactions in the PSBT they generate: in those cases setting this to `true`</span>
- <span class="doccomment">/// should correctly produce a signature, at the expense of an increased trust in the creator</span>
- <span class="doccomment">/// of the PSBT.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// For more details see: <https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd></span>
- <span class="kw">pub</span> <span class="ident">trust_witness_utxo</span>: <span class="ident">bool</span>,
-
- <span class="doccomment">/// Whether the wallet should assume a specific height has been reached when trying to finalize</span>
- <span class="doccomment">/// a transaction</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The wallet will only "use" a timelock to satisfy the spending policy of an input if the</span>
- <span class="doccomment">/// timelock height has already been reached. This option allows overriding the "current height" to let the</span>
- <span class="doccomment">/// wallet use timelocks in the future to spend a coin.</span>
- <span class="kw">pub</span> <span class="ident">assume_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
-
- <span class="doccomment">/// Whether the signer should use the `sighash_type` set in the PSBT when signing, no matter</span>
- <span class="doccomment">/// what its value is</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Defaults to `false` which will only allow signing using `SIGHASH_ALL`.</span>
- <span class="kw">pub</span> <span class="ident">allow_all_sighashes</span>: <span class="ident">bool</span>,
-
- <span class="doccomment">/// Whether to remove partial signatures from the PSBT inputs while finalizing PSBT.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Defaults to `true` which will remove partial signatures during finalization.</span>
- <span class="kw">pub</span> <span class="ident">remove_partial_sigs</span>: <span class="ident">bool</span>,
-
- <span class="doccomment">/// Whether to try finalizing the PSBT after the inputs are signed.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Defaults to `true` which will try finalizing PSBT after inputs are signed.</span>
- <span class="kw">pub</span> <span class="ident">try_finalize</span>: <span class="ident">bool</span>,
-
- <span class="doccomment">/// Specifies which Taproot script-spend leaves we should sign for. This option is</span>
- <span class="doccomment">/// ignored if we're signing a non-taproot PSBT.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Defaults to All, i.e., the wallet will sign all the leaves it has a key for.</span>
- <span class="kw">pub</span> <span class="ident">tap_leaves_options</span>: <span class="ident">TapLeavesOptions</span>,
-
- <span class="doccomment">/// Whether we should try to sign a taproot transaction with the taproot internal key</span>
- <span class="doccomment">/// or not. This option is ignored if we're signing a non-taproot PSBT.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Defaults to `true`, i.e., we always try to sign with the taproot internal key.</span>
- <span class="kw">pub</span> <span class="ident">sign_with_tap_internal_key</span>: <span class="ident">bool</span>,
-
- <span class="doccomment">/// Whether we should grind ECDSA signature to ensure signing with low r</span>
- <span class="doccomment">/// or not.</span>
- <span class="doccomment">/// Defaults to `true`, i.e., we always grind ECDSA signature to sign with low r.</span>
- <span class="kw">pub</span> <span class="ident">allow_grinding</span>: <span class="ident">bool</span>,
+<span class="doccomment">/// Options for a software signer
+///
+/// Adjust the behavior of our software signers and the way a transaction is finalized
+</span><span class="attr">#[derive(Debug, Clone)]
+</span><span class="kw">pub struct </span>SignOptions {
+ <span class="doccomment">/// Whether the signer should trust the `witness_utxo`, if the `non_witness_utxo` hasn't been
+ /// provided
+ ///
+ /// Defaults to `false` to mitigate the "SegWit bug" which chould trick the wallet into
+ /// paying a fee larger than expected.
+ ///
+ /// Some wallets, especially if relatively old, might not provide the `non_witness_utxo` for
+ /// SegWit transactions in the PSBT they generate: in those cases setting this to `true`
+ /// should correctly produce a signature, at the expense of an increased trust in the creator
+ /// of the PSBT.
+ ///
+ /// For more details see: <https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd>
+ </span><span class="kw">pub </span>trust_witness_utxo: bool,
+
+ <span class="doccomment">/// Whether the wallet should assume a specific height has been reached when trying to finalize
+ /// a transaction
+ ///
+ /// The wallet will only "use" a timelock to satisfy the spending policy of an input if the
+ /// timelock height has already been reached. This option allows overriding the "current height" to let the
+ /// wallet use timelocks in the future to spend a coin.
+ </span><span class="kw">pub </span>assume_height: <span class="prelude-ty">Option</span><u32>,
+
+ <span class="doccomment">/// Whether the signer should use the `sighash_type` set in the PSBT when signing, no matter
+ /// what its value is
+ ///
+ /// Defaults to `false` which will only allow signing using `SIGHASH_ALL`.
+ </span><span class="kw">pub </span>allow_all_sighashes: bool,
+
+ <span class="doccomment">/// Whether to remove partial signatures from the PSBT inputs while finalizing PSBT.
+ ///
+ /// Defaults to `true` which will remove partial signatures during finalization.
+ </span><span class="kw">pub </span>remove_partial_sigs: bool,
+
+ <span class="doccomment">/// Whether to try finalizing the PSBT after the inputs are signed.
+ ///
+ /// Defaults to `true` which will try finalizing PSBT after inputs are signed.
+ </span><span class="kw">pub </span>try_finalize: bool,
+
+ <span class="doccomment">/// Specifies which Taproot script-spend leaves we should sign for. This option is
+ /// ignored if we're signing a non-taproot PSBT.
+ ///
+ /// Defaults to All, i.e., the wallet will sign all the leaves it has a key for.
+ </span><span class="kw">pub </span>tap_leaves_options: TapLeavesOptions,
+
+ <span class="doccomment">/// Whether we should try to sign a taproot transaction with the taproot internal key
+ /// or not. This option is ignored if we're signing a non-taproot PSBT.
+ ///
+ /// Defaults to `true`, i.e., we always try to sign with the taproot internal key.
+ </span><span class="kw">pub </span>sign_with_tap_internal_key: bool,
+
+ <span class="doccomment">/// Whether we should grind ECDSA signature to ensure signing with low r
+ /// or not.
+ /// Defaults to `true`, i.e., we always grind ECDSA signature to sign with low r.
+ </span><span class="kw">pub </span>allow_grinding: bool,
}
-<span class="doccomment">/// Customize which taproot script-path leaves the signer should sign.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">TapLeavesOptions</span> {
- <span class="doccomment">/// The signer will sign all the leaves it has a key for.</span>
- <span class="ident">All</span>,
- <span class="doccomment">/// The signer won't sign leaves other than the ones specified. Note that it could still ignore</span>
- <span class="doccomment">/// some of the specified leaves, if it doesn't have the right key to sign them.</span>
- <span class="ident">Include</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">taproot::TapLeafHash</span><span class="op">></span>),
- <span class="doccomment">/// The signer won't sign the specified leaves.</span>
- <span class="ident">Exclude</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">taproot::TapLeafHash</span><span class="op">></span>),
- <span class="doccomment">/// The signer won't sign any leaf.</span>
- <span class="prelude-val">None</span>,
+<span class="doccomment">/// Customize which taproot script-path leaves the signer should sign.
+</span><span class="attr">#[derive(Debug, Clone, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>TapLeavesOptions {
+ <span class="doccomment">/// The signer will sign all the leaves it has a key for.
+ </span>All,
+ <span class="doccomment">/// The signer won't sign leaves other than the ones specified. Note that it could still ignore
+ /// some of the specified leaves, if it doesn't have the right key to sign them.
+ </span>Include(Vec<taproot::TapLeafHash>),
+ <span class="doccomment">/// The signer won't sign the specified leaves.
+ </span>Exclude(Vec<taproot::TapLeafHash>),
+ <span class="doccomment">/// The signer won't sign any leaf.
+ </span><span class="prelude-val">None</span>,
}
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">TapLeavesOptions</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">TapLeavesOptions::All</span>
+<span class="kw">impl </span>Default <span class="kw">for </span>TapLeavesOptions {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ TapLeavesOptions::All
}
}
-<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::derivable_impls</span>)]</span>
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">SignOptions</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">SignOptions</span> {
- <span class="ident">trust_witness_utxo</span>: <span class="bool-val">false</span>,
- <span class="ident">assume_height</span>: <span class="prelude-val">None</span>,
- <span class="ident">allow_all_sighashes</span>: <span class="bool-val">false</span>,
- <span class="ident">remove_partial_sigs</span>: <span class="bool-val">true</span>,
- <span class="ident">try_finalize</span>: <span class="bool-val">true</span>,
- <span class="ident">tap_leaves_options</span>: <span class="ident">TapLeavesOptions::default</span>(),
- <span class="ident">sign_with_tap_internal_key</span>: <span class="bool-val">true</span>,
- <span class="ident">allow_grinding</span>: <span class="bool-val">true</span>,
+<span class="attr">#[allow(clippy::derivable_impls)]
+</span><span class="kw">impl </span>Default <span class="kw">for </span>SignOptions {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ SignOptions {
+ trust_witness_utxo: <span class="bool-val">false</span>,
+ assume_height: <span class="prelude-val">None</span>,
+ allow_all_sighashes: <span class="bool-val">false</span>,
+ remove_partial_sigs: <span class="bool-val">true</span>,
+ try_finalize: <span class="bool-val">true</span>,
+ tap_leaves_options: TapLeavesOptions::default(),
+ sign_with_tap_internal_key: <span class="bool-val">true</span>,
+ allow_grinding: <span class="bool-val">true</span>,
}
}
}
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait</span> <span class="ident">ComputeSighash</span> {
- <span class="kw">type</span> <span class="ident">Extra</span>;
- <span class="kw">type</span> <span class="ident">Sighash</span>;
- <span class="kw">type</span> <span class="ident">SighashType</span>;
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">trait </span>ComputeSighash {
+ <span class="kw">type </span>Extra;
+ <span class="kw">type </span>Sighash;
+ <span class="kw">type </span>SighashType;
- <span class="kw">fn</span> <span class="ident">sighash</span>(
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">extra</span>: <span class="ident"><span class="self">Self</span>::Extra</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident"><span class="self">Self</span>::Sighash</span>, <span class="ident"><span class="self">Self</span>::SighashType</span>), <span class="ident">SignerError</span><span class="op">></span>;
+ <span class="kw">fn </span>sighash(
+ psbt: <span class="kw-2">&</span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ extra: <span class="self">Self</span>::Extra,
+ ) -> <span class="prelude-ty">Result</span><(<span class="self">Self</span>::Sighash, <span class="self">Self</span>::SighashType), SignerError>;
}
-<span class="kw">impl</span> <span class="ident">ComputeSighash</span> <span class="kw">for</span> <span class="ident">Legacy</span> {
- <span class="kw">type</span> <span class="ident">Extra</span> <span class="op">=</span> ();
- <span class="kw">type</span> <span class="ident">Sighash</span> <span class="op">=</span> <span class="ident">bitcoin::Sighash</span>;
- <span class="kw">type</span> <span class="ident">SighashType</span> <span class="op">=</span> <span class="ident">EcdsaSighashType</span>;
-
- <span class="kw">fn</span> <span class="ident">sighash</span>(
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">_extra</span>: (),
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident"><span class="self">Self</span>::Sighash</span>, <span class="ident"><span class="self">Self</span>::SighashType</span>), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">len</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::InputIndexOutOfRange</span>);
+<span class="kw">impl </span>ComputeSighash <span class="kw">for </span>Legacy {
+ <span class="kw">type </span>Extra = ();
+ <span class="kw">type </span>Sighash = bitcoin::Sighash;
+ <span class="kw">type </span>SighashType = EcdsaSighashType;
+
+ <span class="kw">fn </span>sighash(
+ psbt: <span class="kw-2">&</span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ _extra: (),
+ ) -> <span class="prelude-ty">Result</span><(<span class="self">Self</span>::Sighash, <span class="self">Self</span>::SighashType), SignerError> {
+ <span class="kw">if </span>input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::InputIndexOutOfRange);
}
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>];
- <span class="kw">let</span> <span class="ident">tx_input</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="ident">input_index</span>];
-
- <span class="kw">let</span> <span class="ident">sighash</span> <span class="op">=</span> <span class="ident">psbt_input</span>
- .<span class="ident">sighash_type</span>
- .<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">EcdsaSighashType::All</span>.<span class="ident">into</span>())
- .<span class="ident">ecdsa_hash_ty</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">SignerError::InvalidSighash</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">psbt_input</span>.<span class="ident">redeem_script</span> {
- <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">redeem_script</span>) => <span class="ident">redeem_script</span>.<span class="ident">clone</span>(),
- <span class="prelude-val">None</span> => {
- <span class="kw">let</span> <span class="ident">non_witness_utxo</span> <span class="op">=</span> <span class="ident">psbt_input</span>
- .<span class="ident">non_witness_utxo</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">ok_or</span>(<span class="ident">SignerError::MissingNonWitnessUtxo</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">prev_out</span> <span class="op">=</span> <span class="ident">non_witness_utxo</span>
- .<span class="ident">output</span>
- .<span class="ident">get</span>(<span class="ident">tx_input</span>.<span class="ident">previous_output</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">ok_or</span>(<span class="ident">SignerError::InvalidNonWitnessUtxo</span>)<span class="question-mark">?</span>;
-
- <span class="ident">prev_out</span>.<span class="ident">script_pubkey</span>.<span class="ident">clone</span>()
+ <span class="kw">let </span>psbt_input = <span class="kw-2">&</span>psbt.inputs[input_index];
+ <span class="kw">let </span>tx_input = <span class="kw-2">&</span>psbt.unsigned_tx.input[input_index];
+
+ <span class="kw">let </span>sighash = psbt_input
+ .sighash_type
+ .unwrap_or_else(|| EcdsaSighashType::All.into())
+ .ecdsa_hash_ty()
+ .map_err(|<span class="kw">_</span>| SignerError::InvalidSighash)<span class="question-mark">?</span>;
+ <span class="kw">let </span>script = <span class="kw">match </span>psbt_input.redeem_script {
+ <span class="prelude-val">Some</span>(<span class="kw-2">ref </span>redeem_script) => redeem_script.clone(),
+ <span class="prelude-val">None </span>=> {
+ <span class="kw">let </span>non_witness_utxo = psbt_input
+ .non_witness_utxo
+ .as_ref()
+ .ok_or(SignerError::MissingNonWitnessUtxo)<span class="question-mark">?</span>;
+ <span class="kw">let </span>prev_out = non_witness_utxo
+ .output
+ .get(tx_input.previous_output.vout <span class="kw">as </span>usize)
+ .ok_or(SignerError::InvalidNonWitnessUtxo)<span class="question-mark">?</span>;
+
+ prev_out.script_pubkey.clone()
}
};
<span class="prelude-val">Ok</span>((
- <span class="ident">sighash::SighashCache::new</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>).<span class="ident">legacy_signature_hash</span>(
- <span class="ident">input_index</span>,
- <span class="kw-2">&</span><span class="ident">script</span>,
- <span class="ident">sighash</span>.<span class="ident">to_u32</span>(),
+ sighash::SighashCache::new(<span class="kw-2">&</span>psbt.unsigned_tx).legacy_signature_hash(
+ input_index,
+ <span class="kw-2">&</span>script,
+ sighash.to_u32(),
)<span class="question-mark">?</span>,
- <span class="ident">sighash</span>,
+ sighash,
))
}
}
-<span class="kw">fn</span> <span class="ident">p2wpkh_script_code</span>(<span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="ident">Script</span> {
- <span class="ident">ScriptBuilder::new</span>()
- .<span class="ident">push_opcode</span>(<span class="ident">opcodes::all::OP_DUP</span>)
- .<span class="ident">push_opcode</span>(<span class="ident">opcodes::all::OP_HASH160</span>)
- .<span class="ident">push_slice</span>(<span class="kw-2">&</span><span class="ident">script</span>[<span class="number">2</span>..])
- .<span class="ident">push_opcode</span>(<span class="ident">opcodes::all::OP_EQUALVERIFY</span>)
- .<span class="ident">push_opcode</span>(<span class="ident">opcodes::all::OP_CHECKSIG</span>)
- .<span class="ident">into_script</span>()
+<span class="kw">fn </span>p2wpkh_script_code(script: <span class="kw-2">&</span>Script) -> Script {
+ ScriptBuilder::new()
+ .push_opcode(opcodes::all::OP_DUP)
+ .push_opcode(opcodes::all::OP_HASH160)
+ .push_slice(<span class="kw-2">&</span>script[<span class="number">2</span>..])
+ .push_opcode(opcodes::all::OP_EQUALVERIFY)
+ .push_opcode(opcodes::all::OP_CHECKSIG)
+ .into_script()
}
-<span class="kw">impl</span> <span class="ident">ComputeSighash</span> <span class="kw">for</span> <span class="ident">Segwitv0</span> {
- <span class="kw">type</span> <span class="ident">Extra</span> <span class="op">=</span> ();
- <span class="kw">type</span> <span class="ident">Sighash</span> <span class="op">=</span> <span class="ident">bitcoin::Sighash</span>;
- <span class="kw">type</span> <span class="ident">SighashType</span> <span class="op">=</span> <span class="ident">EcdsaSighashType</span>;
-
- <span class="kw">fn</span> <span class="ident">sighash</span>(
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">_extra</span>: (),
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident"><span class="self">Self</span>::Sighash</span>, <span class="ident"><span class="self">Self</span>::SighashType</span>), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">len</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::InputIndexOutOfRange</span>);
+<span class="kw">impl </span>ComputeSighash <span class="kw">for </span>Segwitv0 {
+ <span class="kw">type </span>Extra = ();
+ <span class="kw">type </span>Sighash = bitcoin::Sighash;
+ <span class="kw">type </span>SighashType = EcdsaSighashType;
+
+ <span class="kw">fn </span>sighash(
+ psbt: <span class="kw-2">&</span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ _extra: (),
+ ) -> <span class="prelude-ty">Result</span><(<span class="self">Self</span>::Sighash, <span class="self">Self</span>::SighashType), SignerError> {
+ <span class="kw">if </span>input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::InputIndexOutOfRange);
}
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>];
- <span class="kw">let</span> <span class="ident">tx_input</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>[<span class="ident">input_index</span>];
+ <span class="kw">let </span>psbt_input = <span class="kw-2">&</span>psbt.inputs[input_index];
+ <span class="kw">let </span>tx_input = <span class="kw-2">&</span>psbt.unsigned_tx.input[input_index];
- <span class="kw">let</span> <span class="ident">sighash</span> <span class="op">=</span> <span class="ident">psbt_input</span>
- .<span class="ident">sighash_type</span>
- .<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">EcdsaSighashType::All</span>.<span class="ident">into</span>())
- .<span class="ident">ecdsa_hash_ty</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">SignerError::InvalidSighash</span>)<span class="question-mark">?</span>;
+ <span class="kw">let </span>sighash = psbt_input
+ .sighash_type
+ .unwrap_or_else(|| EcdsaSighashType::All.into())
+ .ecdsa_hash_ty()
+ .map_err(|<span class="kw">_</span>| SignerError::InvalidSighash)<span class="question-mark">?</span>;
- <span class="comment">// Always try first with the non-witness utxo</span>
- <span class="kw">let</span> <span class="ident">utxo</span> <span class="op">=</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt_input</span>.<span class="ident">non_witness_utxo</span> {
- <span class="comment">// Check the provided prev-tx</span>
- <span class="kw">if</span> <span class="ident">prev_tx</span>.<span class="ident">txid</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">tx_input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::InvalidNonWitnessUtxo</span>);
+ <span class="comment">// Always try first with the non-witness utxo
+ </span><span class="kw">let </span>utxo = <span class="kw">if let </span><span class="prelude-val">Some</span>(prev_tx) = <span class="kw-2">&</span>psbt_input.non_witness_utxo {
+ <span class="comment">// Check the provided prev-tx
+ </span><span class="kw">if </span>prev_tx.txid() != tx_input.previous_output.txid {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::InvalidNonWitnessUtxo);
}
- <span class="comment">// The output should be present, if it's missing the `non_witness_utxo` is invalid</span>
- <span class="ident">prev_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">get</span>(<span class="ident">tx_input</span>.<span class="ident">previous_output</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">ok_or</span>(<span class="ident">SignerError::InvalidNonWitnessUtxo</span>)<span class="question-mark">?</span>
- } <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">witness_utxo</span>) <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt_input</span>.<span class="ident">witness_utxo</span> {
- <span class="comment">// Fallback to the witness_utxo. If we aren't allowed to use it, signing should fail</span>
- <span class="comment">// before we get to this point</span>
- <span class="ident">witness_utxo</span>
- } <span class="kw">else</span> {
- <span class="comment">// Nothing has been provided</span>
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::MissingNonWitnessUtxo</span>);
+ <span class="comment">// The output should be present, if it's missing the `non_witness_utxo` is invalid
+ </span>prev_tx
+ .output
+ .get(tx_input.previous_output.vout <span class="kw">as </span>usize)
+ .ok_or(SignerError::InvalidNonWitnessUtxo)<span class="question-mark">?
+ </span>} <span class="kw">else if let </span><span class="prelude-val">Some</span>(witness_utxo) = <span class="kw-2">&</span>psbt_input.witness_utxo {
+ <span class="comment">// Fallback to the witness_utxo. If we aren't allowed to use it, signing should fail
+ // before we get to this point
+ </span>witness_utxo
+ } <span class="kw">else </span>{
+ <span class="comment">// Nothing has been provided
+ </span><span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::MissingNonWitnessUtxo);
};
- <span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">utxo</span>.<span class="ident">value</span>;
-
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">psbt_input</span>.<span class="ident">witness_script</span> {
- <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">witness_script</span>) => <span class="ident">witness_script</span>.<span class="ident">clone</span>(),
- <span class="prelude-val">None</span> => {
- <span class="kw">if</span> <span class="ident">utxo</span>.<span class="ident">script_pubkey</span>.<span class="ident">is_v0_p2wpkh</span>() {
- <span class="ident">p2wpkh_script_code</span>(<span class="kw-2">&</span><span class="ident">utxo</span>.<span class="ident">script_pubkey</span>)
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">psbt_input</span>
- .<span class="ident">redeem_script</span>
- .<span class="ident">as_ref</span>()
- .<span class="ident">map</span>(<span class="ident">Script::is_v0_p2wpkh</span>)
- .<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>)
+ <span class="kw">let </span>value = utxo.value;
+
+ <span class="kw">let </span>script = <span class="kw">match </span>psbt_input.witness_script {
+ <span class="prelude-val">Some</span>(<span class="kw-2">ref </span>witness_script) => witness_script.clone(),
+ <span class="prelude-val">None </span>=> {
+ <span class="kw">if </span>utxo.script_pubkey.is_v0_p2wpkh() {
+ p2wpkh_script_code(<span class="kw-2">&</span>utxo.script_pubkey)
+ } <span class="kw">else if </span>psbt_input
+ .redeem_script
+ .as_ref()
+ .map(Script::is_v0_p2wpkh)
+ .unwrap_or(<span class="bool-val">false</span>)
{
- <span class="ident">p2wpkh_script_code</span>(<span class="ident">psbt_input</span>.<span class="ident">redeem_script</span>.<span class="ident">as_ref</span>().<span class="ident">unwrap</span>())
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::MissingWitnessScript</span>);
+ p2wpkh_script_code(psbt_input.redeem_script.as_ref().unwrap())
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::MissingWitnessScript);
}
}
};
<span class="prelude-val">Ok</span>((
- <span class="ident">sighash::SighashCache::new</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>).<span class="ident">segwit_signature_hash</span>(
- <span class="ident">input_index</span>,
- <span class="kw-2">&</span><span class="ident">script</span>,
- <span class="ident">value</span>,
- <span class="ident">sighash</span>,
+ sighash::SighashCache::new(<span class="kw-2">&</span>psbt.unsigned_tx).segwit_signature_hash(
+ input_index,
+ <span class="kw-2">&</span>script,
+ value,
+ sighash,
)<span class="question-mark">?</span>,
- <span class="ident">sighash</span>,
+ sighash,
))
}
}
-<span class="kw">impl</span> <span class="ident">ComputeSighash</span> <span class="kw">for</span> <span class="ident">Tap</span> {
- <span class="kw">type</span> <span class="ident">Extra</span> <span class="op">=</span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">taproot::TapLeafHash</span><span class="op">></span>;
- <span class="kw">type</span> <span class="ident">Sighash</span> <span class="op">=</span> <span class="ident">taproot::TapSighashHash</span>;
- <span class="kw">type</span> <span class="ident">SighashType</span> <span class="op">=</span> <span class="ident">SchnorrSighashType</span>;
-
- <span class="kw">fn</span> <span class="ident">sighash</span>(
- <span class="ident">psbt</span>: <span class="kw-2">&</span><span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">input_index</span>: <span class="ident">usize</span>,
- <span class="ident">extra</span>: <span class="ident"><span class="self">Self</span>::Extra</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident"><span class="self">Self</span>::Sighash</span>, <span class="ident">SchnorrSighashType</span>), <span class="ident">SignerError</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>() <span class="op">|</span><span class="op">|</span> <span class="ident">input_index</span> <span class="op">></span><span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">input</span>.<span class="ident">len</span>() {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::InputIndexOutOfRange</span>);
+<span class="kw">impl </span>ComputeSighash <span class="kw">for </span>Tap {
+ <span class="kw">type </span>Extra = <span class="prelude-ty">Option</span><taproot::TapLeafHash>;
+ <span class="kw">type </span>Sighash = taproot::TapSighashHash;
+ <span class="kw">type </span>SighashType = SchnorrSighashType;
+
+ <span class="kw">fn </span>sighash(
+ psbt: <span class="kw-2">&</span>psbt::PartiallySignedTransaction,
+ input_index: usize,
+ extra: <span class="self">Self</span>::Extra,
+ ) -> <span class="prelude-ty">Result</span><(<span class="self">Self</span>::Sighash, SchnorrSighashType), SignerError> {
+ <span class="kw">if </span>input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::InputIndexOutOfRange);
}
- <span class="kw">let</span> <span class="ident">psbt_input</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">inputs</span>[<span class="ident">input_index</span>];
-
- <span class="kw">let</span> <span class="ident">sighash_type</span> <span class="op">=</span> <span class="ident">psbt_input</span>
- .<span class="ident">sighash_type</span>
- .<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">SchnorrSighashType::Default</span>.<span class="ident">into</span>())
- .<span class="ident">schnorr_hash_ty</span>()
- .<span class="ident">map_err</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="ident">SignerError::InvalidSighash</span>)<span class="question-mark">?</span>;
- <span class="kw">let</span> <span class="ident">witness_utxos</span> <span class="op">=</span> (<span class="number">0</span>..<span class="ident">psbt</span>.<span class="ident">inputs</span>.<span class="ident">len</span>())
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">psbt</span>.<span class="ident">get_utxo_for</span>(<span class="ident">i</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">all_witness_utxos</span> <span class="op">=</span> <span class="macro">vec!</span>[];
-
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">sighash::SighashCache::new</span>(<span class="kw-2">&</span><span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>);
- <span class="kw">let</span> <span class="ident">is_anyone_can_pay</span> <span class="op">=</span> <span class="ident">psbt::PsbtSighashType::from</span>(<span class="ident">sighash_type</span>).<span class="ident">to_u32</span>() <span class="op">&</span> <span class="number">0x80</span> <span class="op">!</span><span class="op">=</span> <span class="number">0</span>;
- <span class="kw">let</span> <span class="ident">prevouts</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">is_anyone_can_pay</span> {
- <span class="ident">sighash::Prevouts::One</span>(
- <span class="ident">input_index</span>,
- <span class="ident">witness_utxos</span>[<span class="ident">input_index</span>]
- .<span class="ident">as_ref</span>()
- .<span class="ident">ok_or</span>(<span class="ident">SignerError::MissingWitnessUtxo</span>)<span class="question-mark">?</span>,
+ <span class="kw">let </span>psbt_input = <span class="kw-2">&</span>psbt.inputs[input_index];
+
+ <span class="kw">let </span>sighash_type = psbt_input
+ .sighash_type
+ .unwrap_or_else(|| SchnorrSighashType::Default.into())
+ .schnorr_hash_ty()
+ .map_err(|<span class="kw">_</span>| SignerError::InvalidSighash)<span class="question-mark">?</span>;
+ <span class="kw">let </span>witness_utxos = (<span class="number">0</span>..psbt.inputs.len())
+ .map(|i| psbt.get_utxo_for(i))
+ .collect::<Vec<<span class="kw">_</span>>>();
+ <span class="kw">let </span><span class="kw-2">mut </span>all_witness_utxos = <span class="macro">vec!</span>[];
+
+ <span class="kw">let </span><span class="kw-2">mut </span>cache = sighash::SighashCache::new(<span class="kw-2">&</span>psbt.unsigned_tx);
+ <span class="kw">let </span>is_anyone_can_pay = psbt::PsbtSighashType::from(sighash_type).to_u32() & <span class="number">0x80 </span>!= <span class="number">0</span>;
+ <span class="kw">let </span>prevouts = <span class="kw">if </span>is_anyone_can_pay {
+ sighash::Prevouts::One(
+ input_index,
+ witness_utxos[input_index]
+ .as_ref()
+ .ok_or(SignerError::MissingWitnessUtxo)<span class="question-mark">?</span>,
)
- } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">witness_utxos</span>.<span class="ident">iter</span>().<span class="ident">all</span>(<span class="ident">Option::is_some</span>) {
- <span class="ident">all_witness_utxos</span>.<span class="ident">extend</span>(<span class="ident">witness_utxos</span>.<span class="ident">iter</span>().<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">as_ref</span>()));
- <span class="ident">sighash::Prevouts::All</span>(<span class="kw-2">&</span><span class="ident">all_witness_utxos</span>)
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">SignerError::MissingWitnessUtxo</span>);
+ } <span class="kw">else if </span>witness_utxos.iter().all(Option::is_some) {
+ all_witness_utxos.extend(witness_utxos.iter().filter_map(|x| x.as_ref()));
+ sighash::Prevouts::All(<span class="kw-2">&</span>all_witness_utxos)
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(SignerError::MissingWitnessUtxo);
};
- <span class="comment">// Assume no OP_CODESEPARATOR</span>
- <span class="kw">let</span> <span class="ident">extra</span> <span class="op">=</span> <span class="ident">extra</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">leaf_hash</span><span class="op">|</span> (<span class="ident">leaf_hash</span>, <span class="number">0xFFFFFFFF</span>));
+ <span class="comment">// Assume no OP_CODESEPARATOR
+ </span><span class="kw">let </span>extra = extra.map(|leaf_hash| (leaf_hash, <span class="number">0xFFFFFFFF</span>));
<span class="prelude-val">Ok</span>((
- <span class="ident">cache</span>.<span class="ident">taproot_signature_hash</span>(<span class="ident">input_index</span>, <span class="kw-2">&</span><span class="ident">prevouts</span>, <span class="prelude-val">None</span>, <span class="ident">extra</span>, <span class="ident">sighash_type</span>)<span class="question-mark">?</span>,
- <span class="ident">sighash_type</span>,
+ cache.taproot_signature_hash(input_index, <span class="kw-2">&</span>prevouts, <span class="prelude-val">None</span>, extra, sighash_type)<span class="question-mark">?</span>,
+ sighash_type,
))
}
}
-<span class="kw">impl</span> <span class="ident">PartialOrd</span> <span class="kw">for</span> <span class="ident">SignersContainerKey</span> {
- <span class="kw">fn</span> <span class="ident">partial_cmp</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">other</span>: <span class="kw-2">&</span><span class="self">Self</span>) -> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Ordering</span><span class="op">></span> {
- <span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">cmp</span>(<span class="ident">other</span>))
+<span class="kw">impl </span>PartialOrd <span class="kw">for </span>SignersContainerKey {
+ <span class="kw">fn </span>partial_cmp(<span class="kw-2">&</span><span class="self">self</span>, other: <span class="kw-2">&</span><span class="self">Self</span>) -> <span class="prelude-ty">Option</span><Ordering> {
+ <span class="prelude-val">Some</span>(<span class="self">self</span>.cmp(other))
}
}
-<span class="kw">impl</span> <span class="ident">Ord</span> <span class="kw">for</span> <span class="ident">SignersContainerKey</span> {
- <span class="kw">fn</span> <span class="ident">cmp</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">other</span>: <span class="kw-2">&</span><span class="self">Self</span>) -> <span class="ident">Ordering</span> {
- <span class="self">self</span>.<span class="ident">ordering</span>
- .<span class="ident">cmp</span>(<span class="kw-2">&</span><span class="ident">other</span>.<span class="ident">ordering</span>)
- .<span class="ident">then</span>(<span class="self">self</span>.<span class="ident">id</span>.<span class="ident">cmp</span>(<span class="kw-2">&</span><span class="ident">other</span>.<span class="ident">id</span>))
+<span class="kw">impl </span>Ord <span class="kw">for </span>SignersContainerKey {
+ <span class="kw">fn </span>cmp(<span class="kw-2">&</span><span class="self">self</span>, other: <span class="kw-2">&</span><span class="self">Self</span>) -> Ordering {
+ <span class="self">self</span>.ordering
+ .cmp(<span class="kw-2">&</span>other.ordering)
+ .then(<span class="self">self</span>.id.cmp(<span class="kw-2">&</span>other.id))
}
}
-<span class="kw">impl</span> <span class="ident">PartialEq</span> <span class="kw">for</span> <span class="ident">SignersContainerKey</span> {
- <span class="kw">fn</span> <span class="ident">eq</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">other</span>: <span class="kw-2">&</span><span class="self">Self</span>) -> <span class="ident">bool</span> {
- <span class="self">self</span>.<span class="ident">id</span> <span class="op">==</span> <span class="ident">other</span>.<span class="ident">id</span> <span class="op">&&</span> <span class="self">self</span>.<span class="ident">ordering</span> <span class="op">==</span> <span class="ident">other</span>.<span class="ident">ordering</span>
+<span class="kw">impl </span>PartialEq <span class="kw">for </span>SignersContainerKey {
+ <span class="kw">fn </span>eq(<span class="kw-2">&</span><span class="self">self</span>, other: <span class="kw-2">&</span><span class="self">Self</span>) -> bool {
+ <span class="self">self</span>.id == other.id && <span class="self">self</span>.ordering == other.ordering
}
}
-<span class="kw">impl</span> <span class="ident">Eq</span> <span class="kw">for</span> <span class="ident">SignersContainerKey</span> {}
-
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">signers_container_tests</span> {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::descriptor::IntoWalletDescriptor</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::keys</span>::{<span class="ident">DescriptorKey</span>, <span class="ident">IntoDescriptorKey</span>};
- <span class="kw">use</span> <span class="ident">bitcoin::secp256k1</span>::{<span class="ident">All</span>, <span class="ident">Secp256k1</span>};
- <span class="kw">use</span> <span class="ident">bitcoin::util::bip32</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::Network</span>;
- <span class="kw">use</span> <span class="ident">miniscript::ScriptContext</span>;
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
-
- <span class="kw">fn</span> <span class="ident">is_equal</span>(<span class="ident">this</span>: <span class="kw-2">&</span><span class="ident">Arc</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">TransactionSigner</span><span class="op">></span>, <span class="ident">that</span>: <span class="kw-2">&</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">DummySigner</span><span class="op">></span>) -> <span class="ident">bool</span> {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
- <span class="ident">this</span>.<span class="ident">id</span>(<span class="kw-2">&</span><span class="ident">secp</span>) <span class="op">==</span> <span class="ident">that</span>.<span class="ident">id</span>(<span class="kw-2">&</span><span class="ident">secp</span>)
+<span class="kw">impl </span>Eq <span class="kw">for </span>SignersContainerKey {}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>signers_container_tests {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor;
+ <span class="kw">use </span><span class="kw">crate</span>::descriptor::IntoWalletDescriptor;
+ <span class="kw">use </span><span class="kw">crate</span>::keys::{DescriptorKey, IntoDescriptorKey};
+ <span class="kw">use </span>bitcoin::secp256k1::{All, Secp256k1};
+ <span class="kw">use </span>bitcoin::util::bip32;
+ <span class="kw">use </span>bitcoin::Network;
+ <span class="kw">use </span>miniscript::ScriptContext;
+ <span class="kw">use </span>std::str::FromStr;
+
+ <span class="kw">fn </span>is_equal(this: <span class="kw-2">&</span>Arc<<span class="kw">dyn </span>TransactionSigner>, that: <span class="kw-2">&</span>Arc<DummySigner>) -> bool {
+ <span class="kw">let </span>secp = Secp256k1::new();
+ this.id(<span class="kw-2">&</span>secp) == that.id(<span class="kw-2">&</span>secp)
}
- <span class="comment">// Signers added with the same ordering (like `Ordering::default`) created from `KeyMap`</span>
- <span class="comment">// should be preserved and not overwritten.</span>
- <span class="comment">// This happens usually when a set of signers is created from a descriptor with private keys.</span>
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">signers_with_same_ordering</span>() {
- <span class="kw">let</span> <span class="ident">secp</span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
-
- <span class="kw">let</span> (<span class="ident">prvkey1</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV0_STR</span>);
- <span class="kw">let</span> (<span class="ident">prvkey2</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">setup_keys</span>(<span class="ident">TPRV1_STR</span>);
- <span class="kw">let</span> <span class="ident">desc</span> <span class="op">=</span> <span class="macro">descriptor!</span>(<span class="ident">sh</span>(<span class="ident">multi</span>(<span class="number">2</span>, <span class="ident">prvkey1</span>, <span class="ident">prvkey2</span>))).<span class="ident">unwrap</span>();
- <span class="kw">let</span> (<span class="ident">wallet_desc</span>, <span class="ident">keymap</span>) <span class="op">=</span> <span class="ident">desc</span>
- .<span class="ident">into_wallet_descriptor</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="ident">Network::Testnet</span>)
- .<span class="ident">unwrap</span>();
-
- <span class="kw">let</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">SignersContainer::build</span>(<span class="ident">keymap</span>, <span class="kw-2">&</span><span class="ident">wallet_desc</span>, <span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">signers</span>.<span class="ident">ids</span>().<span class="ident">len</span>(), <span class="number">2</span>);
-
- <span class="kw">let</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">signers</span>.<span class="ident">signers</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">signers</span>.<span class="ident">len</span>(), <span class="number">2</span>);
+ <span class="comment">// Signers added with the same ordering (like `Ordering::default`) created from `KeyMap`
+ // should be preserved and not overwritten.
+ // This happens usually when a set of signers is created from a descriptor with private keys.
+ </span><span class="attr">#[test]
+ </span><span class="kw">fn </span>signers_with_same_ordering() {
+ <span class="kw">let </span>secp = Secp256k1::new();
+
+ <span class="kw">let </span>(prvkey1, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(TPRV0_STR);
+ <span class="kw">let </span>(prvkey2, <span class="kw">_</span>, <span class="kw">_</span>) = setup_keys(TPRV1_STR);
+ <span class="kw">let </span>desc = <span class="macro">descriptor!</span>(sh(multi(<span class="number">2</span>, prvkey1, prvkey2))).unwrap();
+ <span class="kw">let </span>(wallet_desc, keymap) = desc
+ .into_wallet_descriptor(<span class="kw-2">&</span>secp, Network::Testnet)
+ .unwrap();
+
+ <span class="kw">let </span>signers = SignersContainer::build(keymap, <span class="kw-2">&</span>wallet_desc, <span class="kw-2">&</span>secp);
+ <span class="macro">assert_eq!</span>(signers.ids().len(), <span class="number">2</span>);
+
+ <span class="kw">let </span>signers = signers.signers();
+ <span class="macro">assert_eq!</span>(signers.len(), <span class="number">2</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">signers_sorted_by_ordering</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">SignersContainer::new</span>();
- <span class="kw">let</span> <span class="ident">signer1</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">1</span> });
- <span class="kw">let</span> <span class="ident">signer2</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">2</span> });
- <span class="kw">let</span> <span class="ident">signer3</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">3</span> });
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>signers_sorted_by_ordering() {
+ <span class="kw">let </span><span class="kw-2">mut </span>signers = SignersContainer::new();
+ <span class="kw">let </span>signer1 = Arc::new(DummySigner { number: <span class="number">1 </span>});
+ <span class="kw">let </span>signer2 = Arc::new(DummySigner { number: <span class="number">2 </span>});
+ <span class="kw">let </span>signer3 = Arc::new(DummySigner { number: <span class="number">3 </span>});
- <span class="comment">// Mixed order insertions verifies we are not inserting at head or tail.</span>
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">SignerId::Dummy</span>(<span class="number">2</span>), <span class="ident">SignerOrdering</span>(<span class="number">2</span>), <span class="ident">signer2</span>.<span class="ident">clone</span>());
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">SignerId::Dummy</span>(<span class="number">1</span>), <span class="ident">SignerOrdering</span>(<span class="number">1</span>), <span class="ident">signer1</span>.<span class="ident">clone</span>());
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">SignerId::Dummy</span>(<span class="number">3</span>), <span class="ident">SignerOrdering</span>(<span class="number">3</span>), <span class="ident">signer3</span>.<span class="ident">clone</span>());
+ <span class="comment">// Mixed order insertions verifies we are not inserting at head or tail.
+ </span>signers.add_external(SignerId::Dummy(<span class="number">2</span>), SignerOrdering(<span class="number">2</span>), signer2.clone());
+ signers.add_external(SignerId::Dummy(<span class="number">1</span>), SignerOrdering(<span class="number">1</span>), signer1.clone());
+ signers.add_external(SignerId::Dummy(<span class="number">3</span>), SignerOrdering(<span class="number">3</span>), signer3.clone());
- <span class="comment">// Check that signers are sorted from lowest to highest ordering</span>
- <span class="kw">let</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">signers</span>.<span class="ident">signers</span>();
+ <span class="comment">// Check that signers are sorted from lowest to highest ordering
+ </span><span class="kw">let </span>signers = signers.signers();
- <span class="macro">assert!</span>(<span class="ident">is_equal</span>(<span class="ident">signers</span>[<span class="number">0</span>], <span class="kw-2">&</span><span class="ident">signer1</span>));
- <span class="macro">assert!</span>(<span class="ident">is_equal</span>(<span class="ident">signers</span>[<span class="number">1</span>], <span class="kw-2">&</span><span class="ident">signer2</span>));
- <span class="macro">assert!</span>(<span class="ident">is_equal</span>(<span class="ident">signers</span>[<span class="number">2</span>], <span class="kw-2">&</span><span class="ident">signer3</span>));
+ <span class="macro">assert!</span>(is_equal(signers[<span class="number">0</span>], <span class="kw-2">&</span>signer1));
+ <span class="macro">assert!</span>(is_equal(signers[<span class="number">1</span>], <span class="kw-2">&</span>signer2));
+ <span class="macro">assert!</span>(is_equal(signers[<span class="number">2</span>], <span class="kw-2">&</span>signer3));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">find_signer_by_id</span>() {
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">signers</span> <span class="op">=</span> <span class="ident">SignersContainer::new</span>();
- <span class="kw">let</span> <span class="ident">signer1</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">1</span> });
- <span class="kw">let</span> <span class="ident">signer2</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">2</span> });
- <span class="kw">let</span> <span class="ident">signer3</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">3</span> });
- <span class="kw">let</span> <span class="ident">signer4</span> <span class="op">=</span> <span class="ident">Arc::new</span>(<span class="ident">DummySigner</span> { <span class="ident">number</span>: <span class="number">3</span> }); <span class="comment">// Same ID as `signer3` but will use lower ordering.</span>
-
- <span class="kw">let</span> <span class="ident">id1</span> <span class="op">=</span> <span class="ident">SignerId::Dummy</span>(<span class="number">1</span>);
- <span class="kw">let</span> <span class="ident">id2</span> <span class="op">=</span> <span class="ident">SignerId::Dummy</span>(<span class="number">2</span>);
- <span class="kw">let</span> <span class="ident">id3</span> <span class="op">=</span> <span class="ident">SignerId::Dummy</span>(<span class="number">3</span>);
- <span class="kw">let</span> <span class="ident">id_nonexistent</span> <span class="op">=</span> <span class="ident">SignerId::Dummy</span>(<span class="number">999</span>);
-
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">id1</span>.<span class="ident">clone</span>(), <span class="ident">SignerOrdering</span>(<span class="number">1</span>), <span class="ident">signer1</span>.<span class="ident">clone</span>());
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">id2</span>.<span class="ident">clone</span>(), <span class="ident">SignerOrdering</span>(<span class="number">2</span>), <span class="ident">signer2</span>.<span class="ident">clone</span>());
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">id3</span>.<span class="ident">clone</span>(), <span class="ident">SignerOrdering</span>(<span class="number">3</span>), <span class="ident">signer3</span>.<span class="ident">clone</span>());
-
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">id1</span>), <span class="prelude-val">Some</span>(<span class="ident">signer</span>) <span class="kw">if</span> <span class="ident">is_equal</span>(<span class="ident">signer</span>, <span class="kw-2">&</span><span class="ident">signer1</span>)));
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">id2</span>), <span class="prelude-val">Some</span>(<span class="ident">signer</span>) <span class="kw">if</span> <span class="ident">is_equal</span>(<span class="ident">signer</span>, <span class="kw-2">&</span><span class="ident">signer2</span>)));
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">id3</span>.<span class="ident">clone</span>()), <span class="prelude-val">Some</span>(<span class="ident">signer</span>) <span class="kw">if</span> <span class="ident">is_equal</span>(<span class="ident">signer</span>, <span class="kw-2">&</span><span class="ident">signer3</span>)));
-
- <span class="comment">// The `signer4` has the same ID as `signer3` but lower ordering.</span>
- <span class="comment">// It should be found by `id3` instead of `signer3`.</span>
- <span class="ident">signers</span>.<span class="ident">add_external</span>(<span class="ident">id3</span>.<span class="ident">clone</span>(), <span class="ident">SignerOrdering</span>(<span class="number">2</span>), <span class="ident">signer4</span>.<span class="ident">clone</span>());
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">id3</span>), <span class="prelude-val">Some</span>(<span class="ident">signer</span>) <span class="kw">if</span> <span class="ident">is_equal</span>(<span class="ident">signer</span>, <span class="kw-2">&</span><span class="ident">signer4</span>)));
-
- <span class="comment">// Can't find anything with ID that doesn't exist</span>
- <span class="macro">assert!</span>(<span class="macro">matches!</span>(<span class="ident">signers</span>.<span class="ident">find</span>(<span class="ident">id_nonexistent</span>), <span class="prelude-val">None</span>));
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>find_signer_by_id() {
+ <span class="kw">let </span><span class="kw-2">mut </span>signers = SignersContainer::new();
+ <span class="kw">let </span>signer1 = Arc::new(DummySigner { number: <span class="number">1 </span>});
+ <span class="kw">let </span>signer2 = Arc::new(DummySigner { number: <span class="number">2 </span>});
+ <span class="kw">let </span>signer3 = Arc::new(DummySigner { number: <span class="number">3 </span>});
+ <span class="kw">let </span>signer4 = Arc::new(DummySigner { number: <span class="number">3 </span>}); <span class="comment">// Same ID as `signer3` but will use lower ordering.
+
+ </span><span class="kw">let </span>id1 = SignerId::Dummy(<span class="number">1</span>);
+ <span class="kw">let </span>id2 = SignerId::Dummy(<span class="number">2</span>);
+ <span class="kw">let </span>id3 = SignerId::Dummy(<span class="number">3</span>);
+ <span class="kw">let </span>id_nonexistent = SignerId::Dummy(<span class="number">999</span>);
+
+ signers.add_external(id1.clone(), SignerOrdering(<span class="number">1</span>), signer1.clone());
+ signers.add_external(id2.clone(), SignerOrdering(<span class="number">2</span>), signer2.clone());
+ signers.add_external(id3.clone(), SignerOrdering(<span class="number">3</span>), signer3.clone());
+
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(signers.find(id1), <span class="prelude-val">Some</span>(signer) <span class="kw">if </span>is_equal(signer, <span class="kw-2">&</span>signer1)));
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(signers.find(id2), <span class="prelude-val">Some</span>(signer) <span class="kw">if </span>is_equal(signer, <span class="kw-2">&</span>signer2)));
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(signers.find(id3.clone()), <span class="prelude-val">Some</span>(signer) <span class="kw">if </span>is_equal(signer, <span class="kw-2">&</span>signer3)));
+
+ <span class="comment">// The `signer4` has the same ID as `signer3` but lower ordering.
+ // It should be found by `id3` instead of `signer3`.
+ </span>signers.add_external(id3.clone(), SignerOrdering(<span class="number">2</span>), signer4.clone());
+ <span class="macro">assert!</span>(<span class="macro">matches!</span>(signers.find(id3), <span class="prelude-val">Some</span>(signer) <span class="kw">if </span>is_equal(signer, <span class="kw-2">&</span>signer4)));
+
+ <span class="comment">// Can't find anything with ID that doesn't exist
+ </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(signers.find(id_nonexistent), <span class="prelude-val">None</span>));
}
- <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
- <span class="kw">struct</span> <span class="ident">DummySigner</span> {
- <span class="ident">number</span>: <span class="ident">u64</span>,
+ <span class="attr">#[derive(Debug, Clone, Copy)]
+ </span><span class="kw">struct </span>DummySigner {
+ number: u64,
}
- <span class="kw">impl</span> <span class="ident">SignerCommon</span> <span class="kw">for</span> <span class="ident">DummySigner</span> {
- <span class="kw">fn</span> <span class="ident">id</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>) -> <span class="ident">SignerId</span> {
- <span class="ident">SignerId::Dummy</span>(<span class="self">self</span>.<span class="ident">number</span>)
+ <span class="kw">impl </span>SignerCommon <span class="kw">for </span>DummySigner {
+ <span class="kw">fn </span>id(<span class="kw-2">&</span><span class="self">self</span>, _secp: <span class="kw-2">&</span>SecpCtx) -> SignerId {
+ SignerId::Dummy(<span class="self">self</span>.number)
}
}
- <span class="kw">impl</span> <span class="ident">TransactionSigner</span> <span class="kw">for</span> <span class="ident">DummySigner</span> {
- <span class="kw">fn</span> <span class="ident">sign_transaction</span>(
+ <span class="kw">impl </span>TransactionSigner <span class="kw">for </span>DummySigner {
+ <span class="kw">fn </span>sign_transaction(
<span class="kw-2">&</span><span class="self">self</span>,
- <span class="ident">_psbt</span>: <span class="kw-2">&mut</span> <span class="ident">psbt::PartiallySignedTransaction</span>,
- <span class="ident">_sign_options</span>: <span class="kw-2">&</span><span class="ident">SignOptions</span>,
- <span class="ident">_secp</span>: <span class="kw-2">&</span><span class="ident">SecpCtx</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">SignerError</span><span class="op">></span> {
+ _psbt: <span class="kw-2">&mut </span>psbt::PartiallySignedTransaction,
+ _sign_options: <span class="kw-2">&</span>SignOptions,
+ _secp: <span class="kw-2">&</span>SecpCtx,
+ ) -> <span class="prelude-ty">Result</span><(), SignerError> {
<span class="prelude-val">Ok</span>(())
}
}
- <span class="kw">const</span> <span class="ident">TPRV0_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf"</span>;
- <span class="kw">const</span> <span class="ident">TPRV1_STR</span>:<span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N"</span>;
+ <span class="kw">const </span>TPRV0_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf"</span>;
+ <span class="kw">const </span>TPRV1_STR:<span class="kw-2">&</span>str = <span class="string">"tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N"</span>;
- <span class="kw">const</span> <span class="ident">PATH</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"m/44'/1'/0'/0"</span>;
+ <span class="kw">const </span>PATH: <span class="kw-2">&</span>str = <span class="string">"m/44'/1'/0'/0"</span>;
- <span class="kw">fn</span> <span class="ident">setup_keys</span><span class="op"><</span><span class="ident">Ctx</span>: <span class="ident">ScriptContext</span><span class="op">></span>(
- <span class="ident">tprv</span>: <span class="kw-2">&</span><span class="ident">str</span>,
- ) -> (<span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">DescriptorKey</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>, <span class="ident">Fingerprint</span>) {
- <span class="kw">let</span> <span class="ident">secp</span>: <span class="ident">Secp256k1</span><span class="op"><</span><span class="ident">All</span><span class="op">></span> <span class="op">=</span> <span class="ident">Secp256k1::new</span>();
- <span class="kw">let</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">bip32::DerivationPath::from_str</span>(<span class="ident">PATH</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tprv</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPrivKey::from_str</span>(<span class="ident">tprv</span>).<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">tpub</span> <span class="op">=</span> <span class="ident">bip32::ExtendedPubKey::from_priv</span>(<span class="kw-2">&</span><span class="ident">secp</span>, <span class="kw-2">&</span><span class="ident">tprv</span>);
- <span class="kw">let</span> <span class="ident">fingerprint</span> <span class="op">=</span> <span class="ident">tprv</span>.<span class="ident">fingerprint</span>(<span class="kw-2">&</span><span class="ident">secp</span>);
- <span class="kw">let</span> <span class="ident">prvkey</span> <span class="op">=</span> (<span class="ident">tprv</span>, <span class="ident">path</span>.<span class="ident">clone</span>()).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
- <span class="kw">let</span> <span class="ident">pubkey</span> <span class="op">=</span> (<span class="ident">tpub</span>, <span class="ident">path</span>).<span class="ident">into_descriptor_key</span>().<span class="ident">unwrap</span>();
+ <span class="kw">fn </span>setup_keys<Ctx: ScriptContext>(
+ tprv: <span class="kw-2">&</span>str,
+ ) -> (DescriptorKey<Ctx>, DescriptorKey<Ctx>, Fingerprint) {
+ <span class="kw">let </span>secp: Secp256k1<All> = Secp256k1::new();
+ <span class="kw">let </span>path = bip32::DerivationPath::from_str(PATH).unwrap();
+ <span class="kw">let </span>tprv = bip32::ExtendedPrivKey::from_str(tprv).unwrap();
+ <span class="kw">let </span>tpub = bip32::ExtendedPubKey::from_priv(<span class="kw-2">&</span>secp, <span class="kw-2">&</span>tprv);
+ <span class="kw">let </span>fingerprint = tprv.fingerprint(<span class="kw-2">&</span>secp);
+ <span class="kw">let </span>prvkey = (tprv, path.clone()).into_descriptor_key().unwrap();
+ <span class="kw">let </span>pubkey = (tpub, path).into_descriptor_key().unwrap();
- (<span class="ident">prvkey</span>, <span class="ident">pubkey</span>, <span class="ident">fingerprint</span>)
+ (prvkey, pubkey, fingerprint)
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/time.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>time.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10">10</span>
-<span id="11">11</span>
-<span id="12">12</span>
-<span id="13">13</span>
-<span id="14">14</span>
-<span id="15">15</span>
-<span id="16">16</span>
-<span id="17">17</span>
-<span id="18">18</span>
-<span id="19">19</span>
-<span id="20">20</span>
-<span id="21">21</span>
-<span id="22">22</span>
-<span id="23">23</span>
-<span id="24">24</span>
-<span id="25">25</span>
-<span id="26">26</span>
-<span id="27">27</span>
-<span id="28">28</span>
-<span id="29">29</span>
-<span id="30">30</span>
-<span id="31">31</span>
-<span id="32">32</span>
-<span id="33">33</span>
-<span id="34">34</span>
-<span id="35">35</span>
-<span id="36">36</span>
-<span id="37">37</span>
-<span id="38">38</span>
-<span id="39">39</span>
-<span id="40">40</span>
-<span id="41">41</span>
-<span id="42">42</span>
-<span id="43">43</span>
-<span id="44">44</span>
-<span id="45">45</span>
-<span id="46">46</span>
-<span id="47">47</span>
-<span id="48">48</span>
-<span id="49">49</span>
-<span id="50">50</span>
-<span id="51">51</span>
-<span id="52">52</span>
-<span id="53">53</span>
-<span id="54">54</span>
-<span id="55">55</span>
-<span id="56">56</span>
-<span id="57">57</span>
-<span id="58">58</span>
-<span id="59">59</span>
-<span id="60">60</span>
-<span id="61">61</span>
-<span id="62">62</span>
-<span id="63">63</span>
-<span id="64">64</span>
-<span id="65">65</span>
-<span id="66">66</span>
-<span id="67">67</span>
-<span id="68">68</span>
-<span id="69">69</span>
-<span id="70">70</span>
-<span id="71">71</span>
-<span id="72">72</span>
-<span id="73">73</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/time.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>time.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Cross-platform time</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! This module provides a function to get the current timestamp that works on all the platforms</span>
-<span class="doccomment">//! supported by the library.</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! It can be useful to compare it with the timestamps found in</span>
-<span class="doccomment">//! [`TransactionDetails`](crate::types::TransactionDetails).</span>
+</span><span class="doccomment">//! Cross-platform time
+//!
+//! This module provides a function to get the current timestamp that works on all the platforms
+//! supported by the library.
+//!
+//! It can be useful to compare it with the timestamps found in
+//! [`TransactionDetails`](crate::types::TransactionDetails).
-<span class="kw">use</span> <span class="ident">std::time::Duration</span>;
+</span><span class="kw">use </span>std::time::Duration;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>)]</span>
-<span class="kw">use</span> <span class="ident">js_sys::Date</span>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>))]</span>
-<span class="kw">use</span> <span class="ident">std::time</span>::{<span class="ident">Instant</span> <span class="kw">as</span> <span class="ident">SystemInstant</span>, <span class="ident">SystemTime</span>, <span class="ident">UNIX_EPOCH</span>};
+<span class="attr">#[cfg(target_arch = <span class="string">"wasm32"</span>)]
+</span><span class="kw">use </span>js_sys::Date;
+<span class="attr">#[cfg(not(target_arch = <span class="string">"wasm32"</span>))]
+</span><span class="kw">use </span>std::time::{Instant <span class="kw">as </span>SystemInstant, SystemTime, UNIX_EPOCH};
-<span class="doccomment">/// Return the current timestamp in seconds</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>))]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_timestamp</span>() -> <span class="ident">u64</span> {
- <span class="ident">SystemTime::now</span>()
- .<span class="ident">duration_since</span>(<span class="ident">UNIX_EPOCH</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">as_secs</span>()
+<span class="doccomment">/// Return the current timestamp in seconds
+</span><span class="attr">#[cfg(not(target_arch = <span class="string">"wasm32"</span>))]
+</span><span class="kw">pub fn </span>get_timestamp() -> u64 {
+ SystemTime::now()
+ .duration_since(UNIX_EPOCH)
+ .unwrap()
+ .as_secs()
}
-<span class="doccomment">/// Return the current timestamp in seconds</span>
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>)]</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_timestamp</span>() -> <span class="ident">u64</span> {
- <span class="kw">let</span> <span class="ident">millis</span> <span class="op">=</span> <span class="ident">Date::now</span>();
+<span class="doccomment">/// Return the current timestamp in seconds
+</span><span class="attr">#[cfg(target_arch = <span class="string">"wasm32"</span>)]
+</span><span class="kw">pub fn </span>get_timestamp() -> u64 {
+ <span class="kw">let </span>millis = Date::now();
- (<span class="ident">millis</span> <span class="op">/</span> <span class="number">1000.0</span>) <span class="kw">as</span> <span class="ident">u64</span>
+ (millis / <span class="number">1000.0</span>) <span class="kw">as </span>u64
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>))]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct</span> <span class="ident">Instant</span>(<span class="ident">SystemInstant</span>);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct</span> <span class="ident">Instant</span>(<span class="ident">Duration</span>);
+<span class="attr">#[cfg(not(target_arch = <span class="string">"wasm32"</span>))]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct </span>Instant(SystemInstant);
+<span class="attr">#[cfg(target_arch = <span class="string">"wasm32"</span>)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct </span>Instant(Duration);
-<span class="kw">impl</span> <span class="ident">Instant</span> {
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>))]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
- <span class="ident">Instant</span>(<span class="ident">SystemInstant::now</span>())
+<span class="kw">impl </span>Instant {
+ <span class="attr">#[cfg(not(target_arch = <span class="string">"wasm32"</span>))]
+ </span><span class="kw">pub fn </span>new() -> <span class="self">Self </span>{
+ Instant(SystemInstant::now())
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>)]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -> <span class="self">Self</span> {
- <span class="kw">let</span> <span class="ident">millis</span> <span class="op">=</span> <span class="ident">Date::now</span>();
+ <span class="attr">#[cfg(target_arch = <span class="string">"wasm32"</span>)]
+ </span><span class="kw">pub fn </span>new() -> <span class="self">Self </span>{
+ <span class="kw">let </span>millis = Date::now();
- <span class="kw">let</span> <span class="ident">secs</span> <span class="op">=</span> <span class="ident">millis</span> <span class="op">/</span> <span class="number">1000.0</span>;
- <span class="kw">let</span> <span class="ident">nanos</span> <span class="op">=</span> (<span class="ident">millis</span> <span class="op">%</span> <span class="number">1000.0</span>) <span class="op">*</span> <span class="number">1e6</span>;
+ <span class="kw">let </span>secs = millis / <span class="number">1000.0</span>;
+ <span class="kw">let </span>nanos = (millis % <span class="number">1000.0</span>) * <span class="number">1e6</span>;
- <span class="ident">Instant</span>(<span class="ident">Duration::new</span>(<span class="ident">secs</span> <span class="kw">as</span> <span class="ident">u64</span>, <span class="ident">nanos</span> <span class="kw">as</span> <span class="ident">u32</span>))
+ Instant(Duration::new(secs <span class="kw">as </span>u64, nanos <span class="kw">as </span>u32))
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>))]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">elapsed</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Duration</span> {
- <span class="self">self</span>.<span class="number">0</span>.<span class="ident">elapsed</span>()
+ <span class="attr">#[cfg(not(target_arch = <span class="string">"wasm32"</span>))]
+ </span><span class="kw">pub fn </span>elapsed(<span class="kw-2">&</span><span class="self">self</span>) -> Duration {
+ <span class="self">self</span>.<span class="number">0</span>.elapsed()
}
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">target_arch</span> <span class="op">=</span> <span class="string">"wasm32"</span>)]</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">elapsed</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Duration</span> {
- <span class="kw">let</span> <span class="ident">now</span> <span class="op">=</span> <span class="ident">Instant::new</span>();
+ <span class="attr">#[cfg(target_arch = <span class="string">"wasm32"</span>)]
+ </span><span class="kw">pub fn </span>elapsed(<span class="kw-2">&</span><span class="self">self</span>) -> Duration {
+ <span class="kw">let </span>now = Instant::new();
- <span class="ident">now</span>.<span class="number">0</span>.<span class="ident">checked_sub</span>(<span class="self">self</span>.<span class="number">0</span>).<span class="ident">unwrap_or</span>(<span class="ident">Duration::new</span>(<span class="number">0</span>, <span class="number">0</span>))
+ now.<span class="number">0</span>.checked_sub(<span class="self">self</span>.<span class="number">0</span>).unwrap_or(Duration::new(<span class="number">0</span>, <span class="number">0</span>))
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/tx_builder.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>tx_builder.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-<span id="182">182</span>
-<span id="183">183</span>
-<span id="184">184</span>
-<span id="185">185</span>
-<span id="186">186</span>
-<span id="187">187</span>
-<span id="188">188</span>
-<span id="189">189</span>
-<span id="190">190</span>
-<span id="191">191</span>
-<span id="192">192</span>
-<span id="193">193</span>
-<span id="194">194</span>
-<span id="195">195</span>
-<span id="196">196</span>
-<span id="197">197</span>
-<span id="198">198</span>
-<span id="199">199</span>
-<span id="200">200</span>
-<span id="201">201</span>
-<span id="202">202</span>
-<span id="203">203</span>
-<span id="204">204</span>
-<span id="205">205</span>
-<span id="206">206</span>
-<span id="207">207</span>
-<span id="208">208</span>
-<span id="209">209</span>
-<span id="210">210</span>
-<span id="211">211</span>
-<span id="212">212</span>
-<span id="213">213</span>
-<span id="214">214</span>
-<span id="215">215</span>
-<span id="216">216</span>
-<span id="217">217</span>
-<span id="218">218</span>
-<span id="219">219</span>
-<span id="220">220</span>
-<span id="221">221</span>
-<span id="222">222</span>
-<span id="223">223</span>
-<span id="224">224</span>
-<span id="225">225</span>
-<span id="226">226</span>
-<span id="227">227</span>
-<span id="228">228</span>
-<span id="229">229</span>
-<span id="230">230</span>
-<span id="231">231</span>
-<span id="232">232</span>
-<span id="233">233</span>
-<span id="234">234</span>
-<span id="235">235</span>
-<span id="236">236</span>
-<span id="237">237</span>
-<span id="238">238</span>
-<span id="239">239</span>
-<span id="240">240</span>
-<span id="241">241</span>
-<span id="242">242</span>
-<span id="243">243</span>
-<span id="244">244</span>
-<span id="245">245</span>
-<span id="246">246</span>
-<span id="247">247</span>
-<span id="248">248</span>
-<span id="249">249</span>
-<span id="250">250</span>
-<span id="251">251</span>
-<span id="252">252</span>
-<span id="253">253</span>
-<span id="254">254</span>
-<span id="255">255</span>
-<span id="256">256</span>
-<span id="257">257</span>
-<span id="258">258</span>
-<span id="259">259</span>
-<span id="260">260</span>
-<span id="261">261</span>
-<span id="262">262</span>
-<span id="263">263</span>
-<span id="264">264</span>
-<span id="265">265</span>
-<span id="266">266</span>
-<span id="267">267</span>
-<span id="268">268</span>
-<span id="269">269</span>
-<span id="270">270</span>
-<span id="271">271</span>
-<span id="272">272</span>
-<span id="273">273</span>
-<span id="274">274</span>
-<span id="275">275</span>
-<span id="276">276</span>
-<span id="277">277</span>
-<span id="278">278</span>
-<span id="279">279</span>
-<span id="280">280</span>
-<span id="281">281</span>
-<span id="282">282</span>
-<span id="283">283</span>
-<span id="284">284</span>
-<span id="285">285</span>
-<span id="286">286</span>
-<span id="287">287</span>
-<span id="288">288</span>
-<span id="289">289</span>
-<span id="290">290</span>
-<span id="291">291</span>
-<span id="292">292</span>
-<span id="293">293</span>
-<span id="294">294</span>
-<span id="295">295</span>
-<span id="296">296</span>
-<span id="297">297</span>
-<span id="298">298</span>
-<span id="299">299</span>
-<span id="300">300</span>
-<span id="301">301</span>
-<span id="302">302</span>
-<span id="303">303</span>
-<span id="304">304</span>
-<span id="305">305</span>
-<span id="306">306</span>
-<span id="307">307</span>
-<span id="308">308</span>
-<span id="309">309</span>
-<span id="310">310</span>
-<span id="311">311</span>
-<span id="312">312</span>
-<span id="313">313</span>
-<span id="314">314</span>
-<span id="315">315</span>
-<span id="316">316</span>
-<span id="317">317</span>
-<span id="318">318</span>
-<span id="319">319</span>
-<span id="320">320</span>
-<span id="321">321</span>
-<span id="322">322</span>
-<span id="323">323</span>
-<span id="324">324</span>
-<span id="325">325</span>
-<span id="326">326</span>
-<span id="327">327</span>
-<span id="328">328</span>
-<span id="329">329</span>
-<span id="330">330</span>
-<span id="331">331</span>
-<span id="332">332</span>
-<span id="333">333</span>
-<span id="334">334</span>
-<span id="335">335</span>
-<span id="336">336</span>
-<span id="337">337</span>
-<span id="338">338</span>
-<span id="339">339</span>
-<span id="340">340</span>
-<span id="341">341</span>
-<span id="342">342</span>
-<span id="343">343</span>
-<span id="344">344</span>
-<span id="345">345</span>
-<span id="346">346</span>
-<span id="347">347</span>
-<span id="348">348</span>
-<span id="349">349</span>
-<span id="350">350</span>
-<span id="351">351</span>
-<span id="352">352</span>
-<span id="353">353</span>
-<span id="354">354</span>
-<span id="355">355</span>
-<span id="356">356</span>
-<span id="357">357</span>
-<span id="358">358</span>
-<span id="359">359</span>
-<span id="360">360</span>
-<span id="361">361</span>
-<span id="362">362</span>
-<span id="363">363</span>
-<span id="364">364</span>
-<span id="365">365</span>
-<span id="366">366</span>
-<span id="367">367</span>
-<span id="368">368</span>
-<span id="369">369</span>
-<span id="370">370</span>
-<span id="371">371</span>
-<span id="372">372</span>
-<span id="373">373</span>
-<span id="374">374</span>
-<span id="375">375</span>
-<span id="376">376</span>
-<span id="377">377</span>
-<span id="378">378</span>
-<span id="379">379</span>
-<span id="380">380</span>
-<span id="381">381</span>
-<span id="382">382</span>
-<span id="383">383</span>
-<span id="384">384</span>
-<span id="385">385</span>
-<span id="386">386</span>
-<span id="387">387</span>
-<span id="388">388</span>
-<span id="389">389</span>
-<span id="390">390</span>
-<span id="391">391</span>
-<span id="392">392</span>
-<span id="393">393</span>
-<span id="394">394</span>
-<span id="395">395</span>
-<span id="396">396</span>
-<span id="397">397</span>
-<span id="398">398</span>
-<span id="399">399</span>
-<span id="400">400</span>
-<span id="401">401</span>
-<span id="402">402</span>
-<span id="403">403</span>
-<span id="404">404</span>
-<span id="405">405</span>
-<span id="406">406</span>
-<span id="407">407</span>
-<span id="408">408</span>
-<span id="409">409</span>
-<span id="410">410</span>
-<span id="411">411</span>
-<span id="412">412</span>
-<span id="413">413</span>
-<span id="414">414</span>
-<span id="415">415</span>
-<span id="416">416</span>
-<span id="417">417</span>
-<span id="418">418</span>
-<span id="419">419</span>
-<span id="420">420</span>
-<span id="421">421</span>
-<span id="422">422</span>
-<span id="423">423</span>
-<span id="424">424</span>
-<span id="425">425</span>
-<span id="426">426</span>
-<span id="427">427</span>
-<span id="428">428</span>
-<span id="429">429</span>
-<span id="430">430</span>
-<span id="431">431</span>
-<span id="432">432</span>
-<span id="433">433</span>
-<span id="434">434</span>
-<span id="435">435</span>
-<span id="436">436</span>
-<span id="437">437</span>
-<span id="438">438</span>
-<span id="439">439</span>
-<span id="440">440</span>
-<span id="441">441</span>
-<span id="442">442</span>
-<span id="443">443</span>
-<span id="444">444</span>
-<span id="445">445</span>
-<span id="446">446</span>
-<span id="447">447</span>
-<span id="448">448</span>
-<span id="449">449</span>
-<span id="450">450</span>
-<span id="451">451</span>
-<span id="452">452</span>
-<span id="453">453</span>
-<span id="454">454</span>
-<span id="455">455</span>
-<span id="456">456</span>
-<span id="457">457</span>
-<span id="458">458</span>
-<span id="459">459</span>
-<span id="460">460</span>
-<span id="461">461</span>
-<span id="462">462</span>
-<span id="463">463</span>
-<span id="464">464</span>
-<span id="465">465</span>
-<span id="466">466</span>
-<span id="467">467</span>
-<span id="468">468</span>
-<span id="469">469</span>
-<span id="470">470</span>
-<span id="471">471</span>
-<span id="472">472</span>
-<span id="473">473</span>
-<span id="474">474</span>
-<span id="475">475</span>
-<span id="476">476</span>
-<span id="477">477</span>
-<span id="478">478</span>
-<span id="479">479</span>
-<span id="480">480</span>
-<span id="481">481</span>
-<span id="482">482</span>
-<span id="483">483</span>
-<span id="484">484</span>
-<span id="485">485</span>
-<span id="486">486</span>
-<span id="487">487</span>
-<span id="488">488</span>
-<span id="489">489</span>
-<span id="490">490</span>
-<span id="491">491</span>
-<span id="492">492</span>
-<span id="493">493</span>
-<span id="494">494</span>
-<span id="495">495</span>
-<span id="496">496</span>
-<span id="497">497</span>
-<span id="498">498</span>
-<span id="499">499</span>
-<span id="500">500</span>
-<span id="501">501</span>
-<span id="502">502</span>
-<span id="503">503</span>
-<span id="504">504</span>
-<span id="505">505</span>
-<span id="506">506</span>
-<span id="507">507</span>
-<span id="508">508</span>
-<span id="509">509</span>
-<span id="510">510</span>
-<span id="511">511</span>
-<span id="512">512</span>
-<span id="513">513</span>
-<span id="514">514</span>
-<span id="515">515</span>
-<span id="516">516</span>
-<span id="517">517</span>
-<span id="518">518</span>
-<span id="519">519</span>
-<span id="520">520</span>
-<span id="521">521</span>
-<span id="522">522</span>
-<span id="523">523</span>
-<span id="524">524</span>
-<span id="525">525</span>
-<span id="526">526</span>
-<span id="527">527</span>
-<span id="528">528</span>
-<span id="529">529</span>
-<span id="530">530</span>
-<span id="531">531</span>
-<span id="532">532</span>
-<span id="533">533</span>
-<span id="534">534</span>
-<span id="535">535</span>
-<span id="536">536</span>
-<span id="537">537</span>
-<span id="538">538</span>
-<span id="539">539</span>
-<span id="540">540</span>
-<span id="541">541</span>
-<span id="542">542</span>
-<span id="543">543</span>
-<span id="544">544</span>
-<span id="545">545</span>
-<span id="546">546</span>
-<span id="547">547</span>
-<span id="548">548</span>
-<span id="549">549</span>
-<span id="550">550</span>
-<span id="551">551</span>
-<span id="552">552</span>
-<span id="553">553</span>
-<span id="554">554</span>
-<span id="555">555</span>
-<span id="556">556</span>
-<span id="557">557</span>
-<span id="558">558</span>
-<span id="559">559</span>
-<span id="560">560</span>
-<span id="561">561</span>
-<span id="562">562</span>
-<span id="563">563</span>
-<span id="564">564</span>
-<span id="565">565</span>
-<span id="566">566</span>
-<span id="567">567</span>
-<span id="568">568</span>
-<span id="569">569</span>
-<span id="570">570</span>
-<span id="571">571</span>
-<span id="572">572</span>
-<span id="573">573</span>
-<span id="574">574</span>
-<span id="575">575</span>
-<span id="576">576</span>
-<span id="577">577</span>
-<span id="578">578</span>
-<span id="579">579</span>
-<span id="580">580</span>
-<span id="581">581</span>
-<span id="582">582</span>
-<span id="583">583</span>
-<span id="584">584</span>
-<span id="585">585</span>
-<span id="586">586</span>
-<span id="587">587</span>
-<span id="588">588</span>
-<span id="589">589</span>
-<span id="590">590</span>
-<span id="591">591</span>
-<span id="592">592</span>
-<span id="593">593</span>
-<span id="594">594</span>
-<span id="595">595</span>
-<span id="596">596</span>
-<span id="597">597</span>
-<span id="598">598</span>
-<span id="599">599</span>
-<span id="600">600</span>
-<span id="601">601</span>
-<span id="602">602</span>
-<span id="603">603</span>
-<span id="604">604</span>
-<span id="605">605</span>
-<span id="606">606</span>
-<span id="607">607</span>
-<span id="608">608</span>
-<span id="609">609</span>
-<span id="610">610</span>
-<span id="611">611</span>
-<span id="612">612</span>
-<span id="613">613</span>
-<span id="614">614</span>
-<span id="615">615</span>
-<span id="616">616</span>
-<span id="617">617</span>
-<span id="618">618</span>
-<span id="619">619</span>
-<span id="620">620</span>
-<span id="621">621</span>
-<span id="622">622</span>
-<span id="623">623</span>
-<span id="624">624</span>
-<span id="625">625</span>
-<span id="626">626</span>
-<span id="627">627</span>
-<span id="628">628</span>
-<span id="629">629</span>
-<span id="630">630</span>
-<span id="631">631</span>
-<span id="632">632</span>
-<span id="633">633</span>
-<span id="634">634</span>
-<span id="635">635</span>
-<span id="636">636</span>
-<span id="637">637</span>
-<span id="638">638</span>
-<span id="639">639</span>
-<span id="640">640</span>
-<span id="641">641</span>
-<span id="642">642</span>
-<span id="643">643</span>
-<span id="644">644</span>
-<span id="645">645</span>
-<span id="646">646</span>
-<span id="647">647</span>
-<span id="648">648</span>
-<span id="649">649</span>
-<span id="650">650</span>
-<span id="651">651</span>
-<span id="652">652</span>
-<span id="653">653</span>
-<span id="654">654</span>
-<span id="655">655</span>
-<span id="656">656</span>
-<span id="657">657</span>
-<span id="658">658</span>
-<span id="659">659</span>
-<span id="660">660</span>
-<span id="661">661</span>
-<span id="662">662</span>
-<span id="663">663</span>
-<span id="664">664</span>
-<span id="665">665</span>
-<span id="666">666</span>
-<span id="667">667</span>
-<span id="668">668</span>
-<span id="669">669</span>
-<span id="670">670</span>
-<span id="671">671</span>
-<span id="672">672</span>
-<span id="673">673</span>
-<span id="674">674</span>
-<span id="675">675</span>
-<span id="676">676</span>
-<span id="677">677</span>
-<span id="678">678</span>
-<span id="679">679</span>
-<span id="680">680</span>
-<span id="681">681</span>
-<span id="682">682</span>
-<span id="683">683</span>
-<span id="684">684</span>
-<span id="685">685</span>
-<span id="686">686</span>
-<span id="687">687</span>
-<span id="688">688</span>
-<span id="689">689</span>
-<span id="690">690</span>
-<span id="691">691</span>
-<span id="692">692</span>
-<span id="693">693</span>
-<span id="694">694</span>
-<span id="695">695</span>
-<span id="696">696</span>
-<span id="697">697</span>
-<span id="698">698</span>
-<span id="699">699</span>
-<span id="700">700</span>
-<span id="701">701</span>
-<span id="702">702</span>
-<span id="703">703</span>
-<span id="704">704</span>
-<span id="705">705</span>
-<span id="706">706</span>
-<span id="707">707</span>
-<span id="708">708</span>
-<span id="709">709</span>
-<span id="710">710</span>
-<span id="711">711</span>
-<span id="712">712</span>
-<span id="713">713</span>
-<span id="714">714</span>
-<span id="715">715</span>
-<span id="716">716</span>
-<span id="717">717</span>
-<span id="718">718</span>
-<span id="719">719</span>
-<span id="720">720</span>
-<span id="721">721</span>
-<span id="722">722</span>
-<span id="723">723</span>
-<span id="724">724</span>
-<span id="725">725</span>
-<span id="726">726</span>
-<span id="727">727</span>
-<span id="728">728</span>
-<span id="729">729</span>
-<span id="730">730</span>
-<span id="731">731</span>
-<span id="732">732</span>
-<span id="733">733</span>
-<span id="734">734</span>
-<span id="735">735</span>
-<span id="736">736</span>
-<span id="737">737</span>
-<span id="738">738</span>
-<span id="739">739</span>
-<span id="740">740</span>
-<span id="741">741</span>
-<span id="742">742</span>
-<span id="743">743</span>
-<span id="744">744</span>
-<span id="745">745</span>
-<span id="746">746</span>
-<span id="747">747</span>
-<span id="748">748</span>
-<span id="749">749</span>
-<span id="750">750</span>
-<span id="751">751</span>
-<span id="752">752</span>
-<span id="753">753</span>
-<span id="754">754</span>
-<span id="755">755</span>
-<span id="756">756</span>
-<span id="757">757</span>
-<span id="758">758</span>
-<span id="759">759</span>
-<span id="760">760</span>
-<span id="761">761</span>
-<span id="762">762</span>
-<span id="763">763</span>
-<span id="764">764</span>
-<span id="765">765</span>
-<span id="766">766</span>
-<span id="767">767</span>
-<span id="768">768</span>
-<span id="769">769</span>
-<span id="770">770</span>
-<span id="771">771</span>
-<span id="772">772</span>
-<span id="773">773</span>
-<span id="774">774</span>
-<span id="775">775</span>
-<span id="776">776</span>
-<span id="777">777</span>
-<span id="778">778</span>
-<span id="779">779</span>
-<span id="780">780</span>
-<span id="781">781</span>
-<span id="782">782</span>
-<span id="783">783</span>
-<span id="784">784</span>
-<span id="785">785</span>
-<span id="786">786</span>
-<span id="787">787</span>
-<span id="788">788</span>
-<span id="789">789</span>
-<span id="790">790</span>
-<span id="791">791</span>
-<span id="792">792</span>
-<span id="793">793</span>
-<span id="794">794</span>
-<span id="795">795</span>
-<span id="796">796</span>
-<span id="797">797</span>
-<span id="798">798</span>
-<span id="799">799</span>
-<span id="800">800</span>
-<span id="801">801</span>
-<span id="802">802</span>
-<span id="803">803</span>
-<span id="804">804</span>
-<span id="805">805</span>
-<span id="806">806</span>
-<span id="807">807</span>
-<span id="808">808</span>
-<span id="809">809</span>
-<span id="810">810</span>
-<span id="811">811</span>
-<span id="812">812</span>
-<span id="813">813</span>
-<span id="814">814</span>
-<span id="815">815</span>
-<span id="816">816</span>
-<span id="817">817</span>
-<span id="818">818</span>
-<span id="819">819</span>
-<span id="820">820</span>
-<span id="821">821</span>
-<span id="822">822</span>
-<span id="823">823</span>
-<span id="824">824</span>
-<span id="825">825</span>
-<span id="826">826</span>
-<span id="827">827</span>
-<span id="828">828</span>
-<span id="829">829</span>
-<span id="830">830</span>
-<span id="831">831</span>
-<span id="832">832</span>
-<span id="833">833</span>
-<span id="834">834</span>
-<span id="835">835</span>
-<span id="836">836</span>
-<span id="837">837</span>
-<span id="838">838</span>
-<span id="839">839</span>
-<span id="840">840</span>
-<span id="841">841</span>
-<span id="842">842</span>
-<span id="843">843</span>
-<span id="844">844</span>
-<span id="845">845</span>
-<span id="846">846</span>
-<span id="847">847</span>
-<span id="848">848</span>
-<span id="849">849</span>
-<span id="850">850</span>
-<span id="851">851</span>
-<span id="852">852</span>
-<span id="853">853</span>
-<span id="854">854</span>
-<span id="855">855</span>
-<span id="856">856</span>
-<span id="857">857</span>
-<span id="858">858</span>
-<span id="859">859</span>
-<span id="860">860</span>
-<span id="861">861</span>
-<span id="862">862</span>
-<span id="863">863</span>
-<span id="864">864</span>
-<span id="865">865</span>
-<span id="866">866</span>
-<span id="867">867</span>
-<span id="868">868</span>
-<span id="869">869</span>
-<span id="870">870</span>
-<span id="871">871</span>
-<span id="872">872</span>
-<span id="873">873</span>
-<span id="874">874</span>
-<span id="875">875</span>
-<span id="876">876</span>
-<span id="877">877</span>
-<span id="878">878</span>
-<span id="879">879</span>
-<span id="880">880</span>
-<span id="881">881</span>
-<span id="882">882</span>
-<span id="883">883</span>
-<span id="884">884</span>
-<span id="885">885</span>
-<span id="886">886</span>
-<span id="887">887</span>
-<span id="888">888</span>
-<span id="889">889</span>
-<span id="890">890</span>
-<span id="891">891</span>
-<span id="892">892</span>
-<span id="893">893</span>
-<span id="894">894</span>
-<span id="895">895</span>
-<span id="896">896</span>
-<span id="897">897</span>
-<span id="898">898</span>
-<span id="899">899</span>
-<span id="900">900</span>
-<span id="901">901</span>
-<span id="902">902</span>
-<span id="903">903</span>
-<span id="904">904</span>
-<span id="905">905</span>
-<span id="906">906</span>
-<span id="907">907</span>
-<span id="908">908</span>
-<span id="909">909</span>
-<span id="910">910</span>
-<span id="911">911</span>
-<span id="912">912</span>
-<span id="913">913</span>
-<span id="914">914</span>
-<span id="915">915</span>
-<span id="916">916</span>
-<span id="917">917</span>
-<span id="918">918</span>
-<span id="919">919</span>
-<span id="920">920</span>
-<span id="921">921</span>
-<span id="922">922</span>
-<span id="923">923</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
-
-<span class="doccomment">//! Transaction builder</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ## Example</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! ```</span>
-<span class="doccomment">//! # use std::str::FromStr;</span>
-<span class="doccomment">//! # use bitcoin::*;</span>
-<span class="doccomment">//! # use bdk::*;</span>
-<span class="doccomment">//! # use bdk::wallet::tx_builder::CreateTx;</span>
-<span class="doccomment">//! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
-<span class="doccomment">//! # let wallet = doctest_wallet!();</span>
-<span class="doccomment">//! // create a TxBuilder from a wallet</span>
-<span class="doccomment">//! let mut tx_builder = wallet.build_tx();</span>
-<span class="doccomment">//!</span>
-<span class="doccomment">//! tx_builder</span>
-<span class="doccomment">//! // Create a transaction with one output to `to_address` of 50_000 satoshi</span>
-<span class="doccomment">//! .add_recipient(to_address.script_pubkey(), 50_000)</span>
-<span class="doccomment">//! // With a custom fee rate of 5.0 satoshi/vbyte</span>
-<span class="doccomment">//! .fee_rate(FeeRate::from_sat_per_vb(5.0))</span>
-<span class="doccomment">//! // Only spend non-change outputs</span>
-<span class="doccomment">//! .do_not_spend_change()</span>
-<span class="doccomment">//! // Turn on RBF signaling</span>
-<span class="doccomment">//! .enable_rbf();</span>
-<span class="doccomment">//! let (psbt, tx_details) = tx_builder.finish()?;</span>
-<span class="doccomment">//! # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">//! ```</span>
-
-<span class="kw">use</span> <span class="ident">std::collections::BTreeMap</span>;
-<span class="kw">use</span> <span class="ident">std::collections::HashSet</span>;
-<span class="kw">use</span> <span class="ident">std::default::Default</span>;
-<span class="kw">use</span> <span class="ident">std::marker::PhantomData</span>;
-
-<span class="kw">use</span> <span class="ident">bitcoin::util::psbt</span>::{<span class="self">self</span>, <span class="ident">PartiallySignedTransaction</span> <span class="kw">as</span> <span class="ident">Psbt</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">LockTime</span>, <span class="ident">OutPoint</span>, <span class="ident">Script</span>, <span class="ident">Sequence</span>, <span class="ident">Transaction</span>};
-
-<span class="kw">use</span> <span class="ident"><span class="kw">super</span>::coin_selection</span>::{<span class="ident">CoinSelectionAlgorithm</span>, <span class="ident">DefaultCoinSelectionAlgorithm</span>};
-<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">database::BatchDatabase</span>, <span class="ident">Error</span>, <span class="ident">Utxo</span>, <span class="ident">Wallet</span>};
-<span class="kw">use</span> <span class="kw">crate</span>::{
- <span class="ident">types</span>::{<span class="ident">FeeRate</span>, <span class="ident">KeychainKind</span>, <span class="ident">LocalUtxo</span>, <span class="ident">WeightedUtxo</span>},
- <span class="ident">TransactionDetails</span>,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/tx_builder.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>tx_builder.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
+</span><span class="doccomment">//! Transaction builder
+//!
+//! ## Example
+//!
+//! ```
+//! # use std::str::FromStr;
+//! # use bitcoin::*;
+//! # use bdk::*;
+//! # use bdk::wallet::tx_builder::CreateTx;
+//! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+//! # let wallet = doctest_wallet!();
+//! // create a TxBuilder from a wallet
+//! let mut tx_builder = wallet.build_tx();
+//!
+//! tx_builder
+//! // Create a transaction with one output to `to_address` of 50_000 satoshi
+//! .add_recipient(to_address.script_pubkey(), 50_000)
+//! // With a custom fee rate of 5.0 satoshi/vbyte
+//! .fee_rate(FeeRate::from_sat_per_vb(5.0))
+//! // Only spend non-change outputs
+//! .do_not_spend_change()
+//! // Turn on RBF signaling
+//! .enable_rbf();
+//! let (psbt, tx_details) = tx_builder.finish()?;
+//! # Ok::<(), bdk::Error>(())
+//! ```
+
+</span><span class="kw">use </span>std::collections::BTreeMap;
+<span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::default::Default;
+<span class="kw">use </span>std::marker::PhantomData;
+
+<span class="kw">use </span>bitcoin::util::psbt::{<span class="self">self</span>, PartiallySignedTransaction <span class="kw">as </span>Psbt};
+<span class="kw">use </span>bitcoin::{LockTime, OutPoint, Script, Sequence, Transaction};
+
+<span class="kw">use </span><span class="kw">super</span>::coin_selection::{CoinSelectionAlgorithm, DefaultCoinSelectionAlgorithm};
+<span class="kw">use crate</span>::{database::BatchDatabase, Error, Utxo, Wallet};
+<span class="kw">use crate</span>::{
+ types::{FeeRate, KeychainKind, LocalUtxo, WeightedUtxo},
+ TransactionDetails,
};
-<span class="doccomment">/// Context in which the [`TxBuilder`] is valid</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">TxBuilderContext</span>: <span class="ident">std::fmt::Debug</span> <span class="op">+</span> <span class="ident">Default</span> <span class="op">+</span> <span class="ident">Clone</span> {}
-
-<span class="doccomment">/// Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed</span>
-<span class="doccomment">/// to bumping the fee of an existing one).</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CreateTx</span>;
-<span class="kw">impl</span> <span class="ident">TxBuilderContext</span> <span class="kw">for</span> <span class="ident">CreateTx</span> {}
-
-<span class="doccomment">/// Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">BumpFee</span>;
-<span class="kw">impl</span> <span class="ident">TxBuilderContext</span> <span class="kw">for</span> <span class="ident">BumpFee</span> {}
-
-<span class="doccomment">/// A transaction builder</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// A `TxBuilder` is created by calling [`build_tx`] or [`build_fee_bump`] on a wallet. After</span>
-<span class="doccomment">/// assigning it, you set options on it until finally calling [`finish`] to consume the builder and</span>
-<span class="doccomment">/// generate the transaction.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Each option setting method on `TxBuilder` takes and returns `&mut self` so you can chain calls</span>
-<span class="doccomment">/// as in the following example:</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">/// # use bdk::*;</span>
-<span class="doccomment">/// # use bdk::wallet::tx_builder::*;</span>
-<span class="doccomment">/// # use bitcoin::*;</span>
-<span class="doccomment">/// # use core::str::FromStr;</span>
-<span class="doccomment">/// # let wallet = doctest_wallet!();</span>
-<span class="doccomment">/// # let addr1 = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
-<span class="doccomment">/// # let addr2 = addr1.clone();</span>
-<span class="doccomment">/// // chaining</span>
-<span class="doccomment">/// let (psbt1, details) = {</span>
-<span class="doccomment">/// let mut builder = wallet.build_tx();</span>
-<span class="doccomment">/// builder</span>
-<span class="doccomment">/// .ordering(TxOrdering::Untouched)</span>
-<span class="doccomment">/// .add_recipient(addr1.script_pubkey(), 50_000)</span>
-<span class="doccomment">/// .add_recipient(addr2.script_pubkey(), 50_000);</span>
-<span class="doccomment">/// builder.finish()?</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// // non-chaining</span>
-<span class="doccomment">/// let (psbt2, details) = {</span>
-<span class="doccomment">/// let mut builder = wallet.build_tx();</span>
-<span class="doccomment">/// builder.ordering(TxOrdering::Untouched);</span>
-<span class="doccomment">/// for addr in &[addr1, addr2] {</span>
-<span class="doccomment">/// builder.add_recipient(addr.script_pubkey(), 50_000);</span>
-<span class="doccomment">/// }</span>
-<span class="doccomment">/// builder.finish()?</span>
-<span class="doccomment">/// };</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);</span>
-<span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
-<span class="doccomment">/// ```</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// At the moment [`coin_selection`] is an exception to the rule as it consumes `self`.</span>
-<span class="doccomment">/// This means it is usually best to call [`coin_selection`] on the return value of `build_tx` before assigning it.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// For further examples see [this module](super::tx_builder)'s documentation;</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`build_tx`]: Wallet::build_tx</span>
-<span class="doccomment">/// [`build_fee_bump`]: Wallet::build_fee_bump</span>
-<span class="doccomment">/// [`finish`]: Self::finish</span>
-<span class="doccomment">/// [`coin_selection`]: Self::coin_selection</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>, <span class="ident">Cs</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">wallet</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Wallet</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">params</span>: <span class="ident">TxParams</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">coin_selection</span>: <span class="ident">Cs</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">phantom</span>: <span class="ident">PhantomData</span><span class="op"><</span><span class="ident">Ctx</span><span class="op">></span>,
+<span class="doccomment">/// Context in which the [`TxBuilder`] is valid
+</span><span class="kw">pub trait </span>TxBuilderContext: std::fmt::Debug + Default + Clone {}
+
+<span class="doccomment">/// Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed
+/// to bumping the fee of an existing one).
+</span><span class="attr">#[derive(Debug, Default, Clone)]
+</span><span class="kw">pub struct </span>CreateTx;
+<span class="kw">impl </span>TxBuilderContext <span class="kw">for </span>CreateTx {}
+
+<span class="doccomment">/// Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction.
+</span><span class="attr">#[derive(Debug, Default, Clone)]
+</span><span class="kw">pub struct </span>BumpFee;
+<span class="kw">impl </span>TxBuilderContext <span class="kw">for </span>BumpFee {}
+
+<span class="doccomment">/// A transaction builder
+///
+/// A `TxBuilder` is created by calling [`build_tx`] or [`build_fee_bump`] on a wallet. After
+/// assigning it, you set options on it until finally calling [`finish`] to consume the builder and
+/// generate the transaction.
+///
+/// Each option setting method on `TxBuilder` takes and returns `&mut self` so you can chain calls
+/// as in the following example:
+///
+/// ```
+/// # use bdk::*;
+/// # use bdk::wallet::tx_builder::*;
+/// # use bitcoin::*;
+/// # use core::str::FromStr;
+/// # let wallet = doctest_wallet!();
+/// # let addr1 = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+/// # let addr2 = addr1.clone();
+/// // chaining
+/// let (psbt1, details) = {
+/// let mut builder = wallet.build_tx();
+/// builder
+/// .ordering(TxOrdering::Untouched)
+/// .add_recipient(addr1.script_pubkey(), 50_000)
+/// .add_recipient(addr2.script_pubkey(), 50_000);
+/// builder.finish()?
+/// };
+///
+/// // non-chaining
+/// let (psbt2, details) = {
+/// let mut builder = wallet.build_tx();
+/// builder.ordering(TxOrdering::Untouched);
+/// for addr in &[addr1, addr2] {
+/// builder.add_recipient(addr.script_pubkey(), 50_000);
+/// }
+/// builder.finish()?
+/// };
+///
+/// assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);
+/// # Ok::<(), bdk::Error>(())
+/// ```
+///
+/// At the moment [`coin_selection`] is an exception to the rule as it consumes `self`.
+/// This means it is usually best to call [`coin_selection`] on the return value of `build_tx` before assigning it.
+///
+/// For further examples see [this module](super::tx_builder)'s documentation;
+///
+/// [`build_tx`]: Wallet::build_tx
+/// [`build_fee_bump`]: Wallet::build_fee_bump
+/// [`finish`]: Self::finish
+/// [`coin_selection`]: Self::coin_selection
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>TxBuilder<<span class="lifetime">'a</span>, D, Cs, Ctx> {
+ <span class="kw">pub</span>(<span class="kw">crate</span>) wallet: <span class="kw-2">&</span><span class="lifetime">'a </span>Wallet<D>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) params: TxParams,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) coin_selection: Cs,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) phantom: PhantomData<Ctx>,
}
-<span class="doccomment">/// The parameters for transaction creation sans coin selection algorithm.</span>
-<span class="comment">//TODO: TxParams should eventually be exposed publicly.</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct</span> <span class="ident">TxParams</span> {
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">recipients</span>: <span class="ident">Vec</span><span class="op"><</span>(<span class="ident">Script</span>, <span class="ident">u64</span>)<span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">drain_wallet</span>: <span class="ident">bool</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">drain_to</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Script</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">fee_policy</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FeePolicy</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">internal_policy_path</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span><span class="op">></span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">external_policy_path</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span><span class="op">></span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">utxos</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">WeightedUtxo</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">unspendable</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">OutPoint</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">manually_selected_only</span>: <span class="ident">bool</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">sighash</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">psbt::PsbtSighashType</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">ordering</span>: <span class="ident">TxOrdering</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">locktime</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LockTime</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">rbf</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">RbfValue</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">version</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Version</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">change_policy</span>: <span class="ident">ChangeSpendPolicy</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">only_witness_utxo</span>: <span class="ident">bool</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">add_global_xpubs</span>: <span class="ident">bool</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">include_output_redeem_witness_script</span>: <span class="ident">bool</span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">bumping_fee</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">PreviousFee</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">LockTime</span><span class="op">></span>,
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">allow_dust</span>: <span class="ident">bool</span>,
+<span class="doccomment">/// The parameters for transaction creation sans coin selection algorithm.
+</span><span class="comment">//TODO: TxParams should eventually be exposed publicly.
+</span><span class="attr">#[derive(Default, Debug, Clone)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct </span>TxParams {
+ <span class="kw">pub</span>(<span class="kw">crate</span>) recipients: Vec<(Script, u64)>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) drain_wallet: bool,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) drain_to: <span class="prelude-ty">Option</span><Script>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) fee_policy: <span class="prelude-ty">Option</span><FeePolicy>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) internal_policy_path: <span class="prelude-ty">Option</span><BTreeMap<String, Vec<usize>>>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) external_policy_path: <span class="prelude-ty">Option</span><BTreeMap<String, Vec<usize>>>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) utxos: Vec<WeightedUtxo>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) unspendable: HashSet<OutPoint>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) manually_selected_only: bool,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) sighash: <span class="prelude-ty">Option</span><psbt::PsbtSighashType>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) ordering: TxOrdering,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) locktime: <span class="prelude-ty">Option</span><LockTime>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) rbf: <span class="prelude-ty">Option</span><RbfValue>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) version: <span class="prelude-ty">Option</span><Version>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) change_policy: ChangeSpendPolicy,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) only_witness_utxo: bool,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) add_global_xpubs: bool,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) include_output_redeem_witness_script: bool,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) bumping_fee: <span class="prelude-ty">Option</span><PreviousFee>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) current_height: <span class="prelude-ty">Option</span><LockTime>,
+ <span class="kw">pub</span>(<span class="kw">crate</span>) allow_dust: bool,
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Copy</span>, <span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct</span> <span class="ident">PreviousFee</span> {
- <span class="kw">pub</span> <span class="ident">absolute</span>: <span class="ident">u64</span>,
- <span class="kw">pub</span> <span class="ident">rate</span>: <span class="ident">f32</span>,
+<span class="attr">#[derive(Clone, Copy, Debug)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct </span>PreviousFee {
+ <span class="kw">pub </span>absolute: u64,
+ <span class="kw">pub </span>rate: f32,
}
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum</span> <span class="ident">FeePolicy</span> {
- <span class="ident">FeeRate</span>(<span class="ident">FeeRate</span>),
- <span class="ident">FeeAmount</span>(<span class="ident">u64</span>),
+<span class="attr">#[derive(Debug, Clone, Copy)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum </span>FeePolicy {
+ FeeRate(FeeRate),
+ FeeAmount(u64),
}
-<span class="kw">impl</span> <span class="ident">std::default::Default</span> <span class="kw">for</span> <span class="ident">FeePolicy</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">FeePolicy::FeeRate</span>(<span class="ident">FeeRate::default_min_relay_fee</span>())
+<span class="kw">impl </span>std::default::Default <span class="kw">for </span>FeePolicy {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ FeePolicy::FeeRate(FeeRate::default_min_relay_fee())
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">Cs</span>: <span class="ident">Clone</span>, <span class="ident">Ctx</span>, <span class="ident">D</span><span class="op">></span> <span class="ident">Clone</span> <span class="kw">for</span> <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>, <span class="ident">Cs</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="kw">fn</span> <span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self</span> {
- <span class="ident">TxBuilder</span> {
- <span class="ident">wallet</span>: <span class="self">self</span>.<span class="ident">wallet</span>,
- <span class="ident">params</span>: <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">clone</span>(),
- <span class="ident">coin_selection</span>: <span class="self">self</span>.<span class="ident">coin_selection</span>.<span class="ident">clone</span>(),
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span>,
+<span class="kw">impl</span><<span class="lifetime">'a</span>, Cs: Clone, Ctx, D> Clone <span class="kw">for </span>TxBuilder<<span class="lifetime">'a</span>, D, Cs, Ctx> {
+ <span class="kw">fn </span>clone(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="self">Self </span>{
+ TxBuilder {
+ wallet: <span class="self">self</span>.wallet,
+ params: <span class="self">self</span>.params.clone(),
+ coin_selection: <span class="self">self</span>.coin_selection.clone(),
+ phantom: PhantomData,
}
}
}
-<span class="comment">// methods supported by both contexts, for any CoinSelectionAlgorithm</span>
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span>, <span class="ident">Cs</span>: <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span>, <span class="ident">Ctx</span>: <span class="ident">TxBuilderContext</span><span class="op">></span>
- <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>, <span class="ident">Cs</span>, <span class="ident">Ctx</span><span class="op">></span>
+<span class="comment">// methods supported by both contexts, for any CoinSelectionAlgorithm
+</span><span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase, Cs: CoinSelectionAlgorithm<D>, Ctx: TxBuilderContext>
+ TxBuilder<<span class="lifetime">'a</span>, D, Cs, Ctx>
{
- <span class="doccomment">/// Set a custom fee rate</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">fee_rate</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">fee_rate</span>: <span class="ident">FeeRate</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">fee_policy</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">FeePolicy::FeeRate</span>(<span class="ident">fee_rate</span>));
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Set an absolute fee</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">fee_absolute</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">fee_amount</span>: <span class="ident">u64</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">fee_policy</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">FeePolicy::FeeAmount</span>(<span class="ident">fee_amount</span>));
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Set the policy path to use while creating the transaction for a given keychain.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This method accepts a map where the key is the policy node id (see</span>
- <span class="doccomment">/// [`Policy::id`](crate::descriptor::Policy::id)) and the value is the list of the indexes of</span>
- <span class="doccomment">/// the items that are intended to be satisfied from the policy node (see</span>
- <span class="doccomment">/// [`SatisfiableItem::Thresh::items`](crate::descriptor::policy::SatisfiableItem::Thresh::items)).</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ## Example</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// An example of when the policy path is needed is the following descriptor:</span>
- <span class="doccomment">/// `wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000))))`,</span>
- <span class="doccomment">/// derived from the miniscript policy `thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000)))`.</span>
- <span class="doccomment">/// It declares three descriptor fragments, and at the top level it uses `thresh()` to</span>
- <span class="doccomment">/// ensure that at least two of them are satisfied. The individual fragments are:</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// 1. `pk(A)`</span>
- <span class="doccomment">/// 2. `and(pk(B),older(6))`</span>
- <span class="doccomment">/// 3. `and(pk(C),after(630000))`</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// When those conditions are combined in pairs, it's clear that the transaction needs to be created</span>
- <span class="doccomment">/// differently depending on how the user intends to satisfy the policy afterwards:</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// * If fragments `1` and `2` are used, the transaction will need to use a specific</span>
- <span class="doccomment">/// `n_sequence` in order to spend an `OP_CSV` branch.</span>
- <span class="doccomment">/// * If fragments `1` and `3` are used, the transaction will need to use a specific `locktime`</span>
- <span class="doccomment">/// in order to spend an `OP_CLTV` branch.</span>
- <span class="doccomment">/// * If fragments `2` and `3` are used, the transaction will need both.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// When the spending policy is represented as a tree (see</span>
- <span class="doccomment">/// [`Wallet::policies`](super::Wallet::policies)), every node</span>
- <span class="doccomment">/// is assigned a unique identifier that can be used in the policy path to specify which of</span>
- <span class="doccomment">/// the node's children the user intends to satisfy: for instance, assuming the `thresh()`</span>
- <span class="doccomment">/// root node of this example has an id of `aabbccdd`, the policy path map would look like:</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// `{ "aabbccdd" => [0, 1] }`</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// where the key is the node's id, and the value is a list of the children that should be</span>
- <span class="doccomment">/// used, in no particular order.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If a particularly complex descriptor has multiple ambiguous thresholds in its structure,</span>
- <span class="doccomment">/// multiple entries can be added to the map, one for each node that requires an explicit path.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">/// # use std::str::FromStr;</span>
- <span class="doccomment">/// # use std::collections::BTreeMap;</span>
- <span class="doccomment">/// # use bitcoin::*;</span>
- <span class="doccomment">/// # use bdk::*;</span>
- <span class="doccomment">/// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
- <span class="doccomment">/// # let wallet = doctest_wallet!();</span>
- <span class="doccomment">/// let mut path = BTreeMap::new();</span>
- <span class="doccomment">/// path.insert("aabbccdd".to_string(), vec![0, 1]);</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// let builder = wallet</span>
- <span class="doccomment">/// .build_tx()</span>
- <span class="doccomment">/// .add_recipient(to_address.script_pubkey(), 50_000)</span>
- <span class="doccomment">/// .policy_path(path, KeychainKind::External);</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
- <span class="doccomment">/// ```</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">policy_path</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">policy_path</span>: <span class="ident">BTreeMap</span><span class="op"><</span><span class="ident">String</span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span><span class="op">></span>,
- <span class="ident">keychain</span>: <span class="ident">KeychainKind</span>,
- ) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="kw">let</span> <span class="ident">to_update</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">keychain</span> {
- <span class="ident">KeychainKind::Internal</span> => <span class="kw-2">&mut</span> <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">internal_policy_path</span>,
- <span class="ident">KeychainKind::External</span> => <span class="kw-2">&mut</span> <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">external_policy_path</span>,
+ <span class="doccomment">/// Set a custom fee rate
+ </span><span class="kw">pub fn </span>fee_rate(<span class="kw-2">&mut </span><span class="self">self</span>, fee_rate: FeeRate) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.fee_policy = <span class="prelude-val">Some</span>(FeePolicy::FeeRate(fee_rate));
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set an absolute fee
+ </span><span class="kw">pub fn </span>fee_absolute(<span class="kw-2">&mut </span><span class="self">self</span>, fee_amount: u64) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.fee_policy = <span class="prelude-val">Some</span>(FeePolicy::FeeAmount(fee_amount));
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set the policy path to use while creating the transaction for a given keychain.
+ ///
+ /// This method accepts a map where the key is the policy node id (see
+ /// [`Policy::id`](crate::descriptor::Policy::id)) and the value is the list of the indexes of
+ /// the items that are intended to be satisfied from the policy node (see
+ /// [`SatisfiableItem::Thresh::items`](crate::descriptor::policy::SatisfiableItem::Thresh::items)).
+ ///
+ /// ## Example
+ ///
+ /// An example of when the policy path is needed is the following descriptor:
+ /// `wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000))))`,
+ /// derived from the miniscript policy `thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000)))`.
+ /// It declares three descriptor fragments, and at the top level it uses `thresh()` to
+ /// ensure that at least two of them are satisfied. The individual fragments are:
+ ///
+ /// 1. `pk(A)`
+ /// 2. `and(pk(B),older(6))`
+ /// 3. `and(pk(C),after(630000))`
+ ///
+ /// When those conditions are combined in pairs, it's clear that the transaction needs to be created
+ /// differently depending on how the user intends to satisfy the policy afterwards:
+ ///
+ /// * If fragments `1` and `2` are used, the transaction will need to use a specific
+ /// `n_sequence` in order to spend an `OP_CSV` branch.
+ /// * If fragments `1` and `3` are used, the transaction will need to use a specific `locktime`
+ /// in order to spend an `OP_CLTV` branch.
+ /// * If fragments `2` and `3` are used, the transaction will need both.
+ ///
+ /// When the spending policy is represented as a tree (see
+ /// [`Wallet::policies`](super::Wallet::policies)), every node
+ /// is assigned a unique identifier that can be used in the policy path to specify which of
+ /// the node's children the user intends to satisfy: for instance, assuming the `thresh()`
+ /// root node of this example has an id of `aabbccdd`, the policy path map would look like:
+ ///
+ /// `{ "aabbccdd" => [0, 1] }`
+ ///
+ /// where the key is the node's id, and the value is a list of the children that should be
+ /// used, in no particular order.
+ ///
+ /// If a particularly complex descriptor has multiple ambiguous thresholds in its structure,
+ /// multiple entries can be added to the map, one for each node that requires an explicit path.
+ ///
+ /// ```
+ /// # use std::str::FromStr;
+ /// # use std::collections::BTreeMap;
+ /// # use bitcoin::*;
+ /// # use bdk::*;
+ /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+ /// # let wallet = doctest_wallet!();
+ /// let mut path = BTreeMap::new();
+ /// path.insert("aabbccdd".to_string(), vec![0, 1]);
+ ///
+ /// let builder = wallet
+ /// .build_tx()
+ /// .add_recipient(to_address.script_pubkey(), 50_000)
+ /// .policy_path(path, KeychainKind::External);
+ ///
+ /// # Ok::<(), bdk::Error>(())
+ /// ```
+ </span><span class="kw">pub fn </span>policy_path(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ policy_path: BTreeMap<String, Vec<usize>>,
+ keychain: KeychainKind,
+ ) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">let </span>to_update = <span class="kw">match </span>keychain {
+ KeychainKind::Internal => <span class="kw-2">&mut </span><span class="self">self</span>.params.internal_policy_path,
+ KeychainKind::External => <span class="kw-2">&mut </span><span class="self">self</span>.params.external_policy_path,
};
- <span class="kw-2">*</span><span class="ident">to_update</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">policy_path</span>);
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Add the list of outpoints to the internal list of UTXOs that **must** be spent.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If an error occurs while adding any of the UTXOs then none of them are added and the error is returned.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in</span>
- <span class="doccomment">/// the "utxos" and the "unspendable" list, it will be spent.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_utxos</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoints</span>: <span class="kw-2">&</span>[<span class="ident">OutPoint</span>]) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw-2">&mut</span> <span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">let</span> <span class="ident">utxos</span> <span class="op">=</span> <span class="ident">outpoints</span>
- .<span class="ident">iter</span>()
- .<span class="ident">map</span>(<span class="op">|</span><span class="ident">outpoint</span><span class="op">|</span> <span class="self">self</span>.<span class="ident">wallet</span>.<span class="ident">get_utxo</span>(<span class="kw-2">*</span><span class="ident">outpoint</span>)<span class="question-mark">?</span>.<span class="ident">ok_or</span>(<span class="ident">Error::UnknownUtxo</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="kw">_</span><span class="op">></span><span class="op">></span>()<span class="question-mark">?</span>;
-
- <span class="kw">for</span> <span class="ident">utxo</span> <span class="kw">in</span> <span class="ident">utxos</span> {
- <span class="kw">let</span> <span class="ident">descriptor</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">wallet</span>.<span class="ident">get_descriptor_for_keychain</span>(<span class="ident">utxo</span>.<span class="ident">keychain</span>);
- <span class="kw">let</span> <span class="ident">satisfaction_weight</span> <span class="op">=</span> <span class="ident">descriptor</span>.<span class="ident">max_satisfaction_weight</span>().<span class="ident">unwrap</span>();
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">utxos</span>.<span class="ident">push</span>(<span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Local</span>(<span class="ident">utxo</span>),
+ <span class="kw-2">*</span>to_update = <span class="prelude-val">Some</span>(policy_path);
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Add the list of outpoints to the internal list of UTXOs that **must** be spent.
+ ///
+ /// If an error occurs while adding any of the UTXOs then none of them are added and the error is returned.
+ ///
+ /// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in
+ /// the "utxos" and the "unspendable" list, it will be spent.
+ </span><span class="kw">pub fn </span>add_utxos(<span class="kw-2">&mut </span><span class="self">self</span>, outpoints: <span class="kw-2">&</span>[OutPoint]) -> <span class="prelude-ty">Result</span><<span class="kw-2">&mut </span><span class="self">Self</span>, Error> {
+ <span class="kw">let </span>utxos = outpoints
+ .iter()
+ .map(|outpoint| <span class="self">self</span>.wallet.get_utxo(<span class="kw-2">*</span>outpoint)<span class="question-mark">?</span>.ok_or(Error::UnknownUtxo))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span class="kw">_</span>>, <span class="kw">_</span>>>()<span class="question-mark">?</span>;
+
+ <span class="kw">for </span>utxo <span class="kw">in </span>utxos {
+ <span class="kw">let </span>descriptor = <span class="self">self</span>.wallet.get_descriptor_for_keychain(utxo.keychain);
+ <span class="kw">let </span>satisfaction_weight = descriptor.max_satisfaction_weight().unwrap();
+ <span class="self">self</span>.params.utxos.push(WeightedUtxo {
+ satisfaction_weight,
+ utxo: Utxo::Local(utxo),
});
}
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
- <span class="doccomment">/// Add a utxo to the internal list of utxos that **must** be spent</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in</span>
- <span class="doccomment">/// the "utxos" and the "unspendable" list, it will be spent.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">outpoint</span>: <span class="ident">OutPoint</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw-2">&mut</span> <span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">add_utxos</span>(<span class="kw-2">&</span>[<span class="ident">outpoint</span>])
+ <span class="doccomment">/// Add a utxo to the internal list of utxos that **must** be spent
+ ///
+ /// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in
+ /// the "utxos" and the "unspendable" list, it will be spent.
+ </span><span class="kw">pub fn </span>add_utxo(<span class="kw-2">&mut </span><span class="self">self</span>, outpoint: OutPoint) -> <span class="prelude-ty">Result</span><<span class="kw-2">&mut </span><span class="self">Self</span>, Error> {
+ <span class="self">self</span>.add_utxos(<span class="kw-2">&</span>[outpoint])
}
- <span class="doccomment">/// Add a foreign UTXO i.e. a UTXO not owned by this wallet.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// At a minimum to add a foreign UTXO we need:</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// 1. `outpoint`: To add it to the raw transaction.</span>
- <span class="doccomment">/// 2. `psbt_input`: To know the value.</span>
- <span class="doccomment">/// 3. `satisfaction_weight`: To know how much weight/vbytes the input will add to the transaction for fee calculation.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// There are several security concerns about adding foreign UTXOs that application</span>
- <span class="doccomment">/// developers should consider. First, how do you know the value of the input is correct? If a</span>
- <span class="doccomment">/// `non_witness_utxo` is provided in the `psbt_input` then this method implicitly verifies the</span>
- <span class="doccomment">/// value by checking it against the transaction. If only a `witness_utxo` is provided then this</span>
- <span class="doccomment">/// method doesn't verify the value but just takes it as a given -- it is up to you to check</span>
- <span class="doccomment">/// that whoever sent you the `input_psbt` was not lying!</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Secondly, you must somehow provide `satisfaction_weight` of the input. Depending on your</span>
- <span class="doccomment">/// application it may be important that this be known precisely. If not, a malicious</span>
- <span class="doccomment">/// counterparty may fool you into putting in a value that is too low, giving the transaction a</span>
- <span class="doccomment">/// lower than expected feerate. They could also fool you into putting a value that is too high</span>
- <span class="doccomment">/// causing you to pay a fee that is too high. The party who is broadcasting the transaction can</span>
- <span class="doccomment">/// of course check the real input weight matches the expected weight prior to broadcasting.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// To guarantee the `satisfaction_weight` is correct, you can require the party providing the</span>
- <span class="doccomment">/// `psbt_input` provide a miniscript descriptor for the input so you can check it against the</span>
- <span class="doccomment">/// `script_pubkey` and then ask it for the [`max_satisfaction_weight`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This is an **EXPERIMENTAL** feature, API and other major changes are expected.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// # Errors</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This method returns errors in the following circumstances:</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// 1. The `psbt_input` does not contain a `witness_utxo` or `non_witness_utxo`.</span>
- <span class="doccomment">/// 2. The data in `non_witness_utxo` does not match what is in `outpoint`.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note unless you set [`only_witness_utxo`] any non-taproot `psbt_input` you pass to this</span>
- <span class="doccomment">/// method must have `non_witness_utxo` set otherwise you will get an error when [`finish`]</span>
- <span class="doccomment">/// is called.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`only_witness_utxo`]: Self::only_witness_utxo</span>
- <span class="doccomment">/// [`finish`]: Self::finish</span>
- <span class="doccomment">/// [`max_satisfaction_weight`]: miniscript::Descriptor::max_satisfaction_weight</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_foreign_utxo</span>(
- <span class="kw-2">&mut</span> <span class="self">self</span>,
- <span class="ident">outpoint</span>: <span class="ident">OutPoint</span>,
- <span class="ident">psbt_input</span>: <span class="ident">psbt::Input</span>,
- <span class="ident">satisfaction_weight</span>: <span class="ident">usize</span>,
- ) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw-2">&mut</span> <span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">if</span> <span class="ident">psbt_input</span>.<span class="ident">witness_utxo</span>.<span class="ident">is_none</span>() {
- <span class="kw">match</span> <span class="ident">psbt_input</span>.<span class="ident">non_witness_utxo</span>.<span class="ident">as_ref</span>() {
- <span class="prelude-val">Some</span>(<span class="ident">tx</span>) => {
- <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">txid</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">outpoint</span>.<span class="ident">txid</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(
- <span class="string">"Foreign utxo outpoint does not match PSBT input"</span>.<span class="ident">into</span>(),
+ <span class="doccomment">/// Add a foreign UTXO i.e. a UTXO not owned by this wallet.
+ ///
+ /// At a minimum to add a foreign UTXO we need:
+ ///
+ /// 1. `outpoint`: To add it to the raw transaction.
+ /// 2. `psbt_input`: To know the value.
+ /// 3. `satisfaction_weight`: To know how much weight/vbytes the input will add to the transaction for fee calculation.
+ ///
+ /// There are several security concerns about adding foreign UTXOs that application
+ /// developers should consider. First, how do you know the value of the input is correct? If a
+ /// `non_witness_utxo` is provided in the `psbt_input` then this method implicitly verifies the
+ /// value by checking it against the transaction. If only a `witness_utxo` is provided then this
+ /// method doesn't verify the value but just takes it as a given -- it is up to you to check
+ /// that whoever sent you the `input_psbt` was not lying!
+ ///
+ /// Secondly, you must somehow provide `satisfaction_weight` of the input. Depending on your
+ /// application it may be important that this be known precisely. If not, a malicious
+ /// counterparty may fool you into putting in a value that is too low, giving the transaction a
+ /// lower than expected feerate. They could also fool you into putting a value that is too high
+ /// causing you to pay a fee that is too high. The party who is broadcasting the transaction can
+ /// of course check the real input weight matches the expected weight prior to broadcasting.
+ ///
+ /// To guarantee the `satisfaction_weight` is correct, you can require the party providing the
+ /// `psbt_input` provide a miniscript descriptor for the input so you can check it against the
+ /// `script_pubkey` and then ask it for the [`max_satisfaction_weight`].
+ ///
+ /// This is an **EXPERIMENTAL** feature, API and other major changes are expected.
+ ///
+ /// # Errors
+ ///
+ /// This method returns errors in the following circumstances:
+ ///
+ /// 1. The `psbt_input` does not contain a `witness_utxo` or `non_witness_utxo`.
+ /// 2. The data in `non_witness_utxo` does not match what is in `outpoint`.
+ ///
+ /// Note unless you set [`only_witness_utxo`] any non-taproot `psbt_input` you pass to this
+ /// method must have `non_witness_utxo` set otherwise you will get an error when [`finish`]
+ /// is called.
+ ///
+ /// [`only_witness_utxo`]: Self::only_witness_utxo
+ /// [`finish`]: Self::finish
+ /// [`max_satisfaction_weight`]: miniscript::Descriptor::max_satisfaction_weight
+ </span><span class="kw">pub fn </span>add_foreign_utxo(
+ <span class="kw-2">&mut </span><span class="self">self</span>,
+ outpoint: OutPoint,
+ psbt_input: psbt::Input,
+ satisfaction_weight: usize,
+ ) -> <span class="prelude-ty">Result</span><<span class="kw-2">&mut </span><span class="self">Self</span>, Error> {
+ <span class="kw">if </span>psbt_input.witness_utxo.is_none() {
+ <span class="kw">match </span>psbt_input.non_witness_utxo.as_ref() {
+ <span class="prelude-val">Some</span>(tx) => {
+ <span class="kw">if </span>tx.txid() != outpoint.txid {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(
+ <span class="string">"Foreign utxo outpoint does not match PSBT input"</span>.into(),
));
}
- <span class="kw">if</span> <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">len</span>() <span class="op"><</span><span class="op">=</span> <span class="ident">outpoint</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::InvalidOutpoint</span>(<span class="ident">outpoint</span>));
+ <span class="kw">if </span>tx.output.len() <= outpoint.vout <span class="kw">as </span>usize {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidOutpoint(outpoint));
}
}
- <span class="prelude-val">None</span> => {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(
- <span class="string">"Foreign utxo missing witness_utxo or non_witness_utxo"</span>.<span class="ident">into</span>(),
+ <span class="prelude-val">None </span>=> {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Generic(
+ <span class="string">"Foreign utxo missing witness_utxo or non_witness_utxo"</span>.into(),
))
}
}
}
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">utxos</span>.<span class="ident">push</span>(<span class="ident">WeightedUtxo</span> {
- <span class="ident">satisfaction_weight</span>,
- <span class="ident">utxo</span>: <span class="ident">Utxo::Foreign</span> {
- <span class="ident">outpoint</span>,
- <span class="ident">psbt_input</span>: <span class="ident">Box::new</span>(<span class="ident">psbt_input</span>),
+ <span class="self">self</span>.params.utxos.push(WeightedUtxo {
+ satisfaction_weight,
+ utxo: Utxo::Foreign {
+ outpoint,
+ psbt_input: Box::new(psbt_input),
},
});
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
- <span class="doccomment">/// Only spend utxos added by [`add_utxo`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The wallet will **not** add additional utxos to the transaction even if they are needed to</span>
- <span class="doccomment">/// make the transaction valid.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`add_utxo`]: Self::add_utxo</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">manually_selected_only</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">manually_selected_only</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Replace the internal list of unspendable utxos with a new list</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]</span>
- <span class="doccomment">/// have priority over these. See the docs of the two linked methods for more details.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">unspendable</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">unspendable</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">OutPoint</span><span class="op">></span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">unspendable</span> <span class="op">=</span> <span class="ident">unspendable</span>.<span class="ident">into_iter</span>().<span class="ident">collect</span>();
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Add a utxo to the internal list of unspendable utxos</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]</span>
- <span class="doccomment">/// have priority over this. See the docs of the two linked methods for more details.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_unspendable</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">unspendable</span>: <span class="ident">OutPoint</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">unspendable</span>.<span class="ident">insert</span>(<span class="ident">unspendable</span>);
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Sign with a specific sig hash</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// **Use this option very carefully**</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">sighash</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">sighash</span>: <span class="ident">psbt::PsbtSighashType</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">sighash</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">sighash</span>);
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Choose the ordering for inputs and outputs of the transaction</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">ordering</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">ordering</span>: <span class="ident">TxOrdering</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">ordering</span> <span class="op">=</span> <span class="ident">ordering</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Use a specific nLockTime while creating the transaction</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This can cause conflicts if the wallet's descriptors contain an "after" (OP_CLTV) operator.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">nlocktime</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">locktime</span>: <span class="ident">LockTime</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">locktime</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">locktime</span>);
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Build a transaction with a specific version</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// The `version` should always be greater than `0` and greater than `1` if the wallet's</span>
- <span class="doccomment">/// descriptors contain an "older" (OP_CSV) operator.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">version</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">version</span>: <span class="ident">i32</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">version</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Version</span>(<span class="ident">version</span>));
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Do not spend change outputs</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This effectively adds all the change outputs to the "unspendable" list. See</span>
- <span class="doccomment">/// [`TxBuilder::unspendable`].</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">do_not_spend_change</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">change_policy</span> <span class="op">=</span> <span class="ident">ChangeSpendPolicy::ChangeForbidden</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Only spend change outputs</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This effectively adds all the non-change outputs to the "unspendable" list. See</span>
- <span class="doccomment">/// [`TxBuilder::unspendable`].</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">only_spend_change</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">change_policy</span> <span class="op">=</span> <span class="ident">ChangeSpendPolicy::OnlyChange</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Set a specific [`ChangeSpendPolicy`]. See [`TxBuilder::do_not_spend_change`] and</span>
- <span class="doccomment">/// [`TxBuilder::only_spend_change`] for some shortcuts.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">change_policy</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">change_policy</span>: <span class="ident">ChangeSpendPolicy</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">change_policy</span> <span class="op">=</span> <span class="ident">change_policy</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Only Fill-in the [`psbt::Input::witness_utxo`](bitcoin::util::psbt::Input::witness_utxo) field when spending from</span>
- <span class="doccomment">/// SegWit descriptors.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This reduces the size of the PSBT, but some signers might reject them due to the lack of</span>
- <span class="doccomment">/// the `non_witness_utxo`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">only_witness_utxo</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">only_witness_utxo</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Fill-in the [`psbt::Output::redeem_script`](bitcoin::util::psbt::Output::redeem_script) and</span>
- <span class="doccomment">/// [`psbt::Output::witness_script`](bitcoin::util::psbt::Output::witness_script) fields.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This is useful for signers which always require it, like ColdCard hardware wallets.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">include_output_redeem_witness_script</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">include_output_redeem_witness_script</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Fill-in the `PSBT_GLOBAL_XPUB` field with the extended keys contained in both the external</span>
- <span class="doccomment">/// and internal descriptors</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This is useful for offline signers that take part to a multisig. Some hardware wallets like</span>
- <span class="doccomment">/// BitBox and ColdCard are known to require this.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_global_xpubs</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">add_global_xpubs</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Spend all the available inputs. This respects filters like [`TxBuilder::unspendable`] and the change policy.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">drain_wallet</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">drain_wallet</span> <span class="op">=</span> <span class="bool-val">true</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Choose the coin selection algorithm</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Overrides the [`DefaultCoinSelectionAlgorithm`](super::coin_selection::DefaultCoinSelectionAlgorithm).</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Note that this function consumes the builder and returns it so it is usually best to put this as the first call on the builder.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">coin_selection</span><span class="op"><</span><span class="ident">P</span>: <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span><span class="op">></span>(
+ <span class="doccomment">/// Only spend utxos added by [`add_utxo`].
+ ///
+ /// The wallet will **not** add additional utxos to the transaction even if they are needed to
+ /// make the transaction valid.
+ ///
+ /// [`add_utxo`]: Self::add_utxo
+ </span><span class="kw">pub fn </span>manually_selected_only(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.manually_selected_only = <span class="bool-val">true</span>;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Replace the internal list of unspendable utxos with a new list
+ ///
+ /// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]
+ /// have priority over these. See the docs of the two linked methods for more details.
+ </span><span class="kw">pub fn </span>unspendable(<span class="kw-2">&mut </span><span class="self">self</span>, unspendable: Vec<OutPoint>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.unspendable = unspendable.into_iter().collect();
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Add a utxo to the internal list of unspendable utxos
+ ///
+ /// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]
+ /// have priority over this. See the docs of the two linked methods for more details.
+ </span><span class="kw">pub fn </span>add_unspendable(<span class="kw-2">&mut </span><span class="self">self</span>, unspendable: OutPoint) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.unspendable.insert(unspendable);
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Sign with a specific sig hash
+ ///
+ /// **Use this option very carefully**
+ </span><span class="kw">pub fn </span>sighash(<span class="kw-2">&mut </span><span class="self">self</span>, sighash: psbt::PsbtSighashType) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.sighash = <span class="prelude-val">Some</span>(sighash);
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Choose the ordering for inputs and outputs of the transaction
+ </span><span class="kw">pub fn </span>ordering(<span class="kw-2">&mut </span><span class="self">self</span>, ordering: TxOrdering) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.ordering = ordering;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Use a specific nLockTime while creating the transaction
+ ///
+ /// This can cause conflicts if the wallet's descriptors contain an "after" (OP_CLTV) operator.
+ </span><span class="kw">pub fn </span>nlocktime(<span class="kw-2">&mut </span><span class="self">self</span>, locktime: LockTime) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.locktime = <span class="prelude-val">Some</span>(locktime);
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Build a transaction with a specific version
+ ///
+ /// The `version` should always be greater than `0` and greater than `1` if the wallet's
+ /// descriptors contain an "older" (OP_CSV) operator.
+ </span><span class="kw">pub fn </span>version(<span class="kw-2">&mut </span><span class="self">self</span>, version: i32) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.version = <span class="prelude-val">Some</span>(Version(version));
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Do not spend change outputs
+ ///
+ /// This effectively adds all the change outputs to the "unspendable" list. See
+ /// [`TxBuilder::unspendable`].
+ </span><span class="kw">pub fn </span>do_not_spend_change(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.change_policy = ChangeSpendPolicy::ChangeForbidden;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Only spend change outputs
+ ///
+ /// This effectively adds all the non-change outputs to the "unspendable" list. See
+ /// [`TxBuilder::unspendable`].
+ </span><span class="kw">pub fn </span>only_spend_change(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.change_policy = ChangeSpendPolicy::OnlyChange;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set a specific [`ChangeSpendPolicy`]. See [`TxBuilder::do_not_spend_change`] and
+ /// [`TxBuilder::only_spend_change`] for some shortcuts.
+ </span><span class="kw">pub fn </span>change_policy(<span class="kw-2">&mut </span><span class="self">self</span>, change_policy: ChangeSpendPolicy) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.change_policy = change_policy;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Only Fill-in the [`psbt::Input::witness_utxo`](bitcoin::util::psbt::Input::witness_utxo) field when spending from
+ /// SegWit descriptors.
+ ///
+ /// This reduces the size of the PSBT, but some signers might reject them due to the lack of
+ /// the `non_witness_utxo`.
+ </span><span class="kw">pub fn </span>only_witness_utxo(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.only_witness_utxo = <span class="bool-val">true</span>;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Fill-in the [`psbt::Output::redeem_script`](bitcoin::util::psbt::Output::redeem_script) and
+ /// [`psbt::Output::witness_script`](bitcoin::util::psbt::Output::witness_script) fields.
+ ///
+ /// This is useful for signers which always require it, like ColdCard hardware wallets.
+ </span><span class="kw">pub fn </span>include_output_redeem_witness_script(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.include_output_redeem_witness_script = <span class="bool-val">true</span>;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Fill-in the `PSBT_GLOBAL_XPUB` field with the extended keys contained in both the external
+ /// and internal descriptors
+ ///
+ /// This is useful for offline signers that take part to a multisig. Some hardware wallets like
+ /// BitBox and ColdCard are known to require this.
+ </span><span class="kw">pub fn </span>add_global_xpubs(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.add_global_xpubs = <span class="bool-val">true</span>;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Spend all the available inputs. This respects filters like [`TxBuilder::unspendable`] and the change policy.
+ </span><span class="kw">pub fn </span>drain_wallet(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.drain_wallet = <span class="bool-val">true</span>;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Choose the coin selection algorithm
+ ///
+ /// Overrides the [`DefaultCoinSelectionAlgorithm`](super::coin_selection::DefaultCoinSelectionAlgorithm).
+ ///
+ /// Note that this function consumes the builder and returns it so it is usually best to put this as the first call on the builder.
+ </span><span class="kw">pub fn </span>coin_selection<P: CoinSelectionAlgorithm<D>>(
<span class="self">self</span>,
- <span class="ident">coin_selection</span>: <span class="ident">P</span>,
- ) -> <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>, <span class="ident">P</span>, <span class="ident">Ctx</span><span class="op">></span> {
- <span class="ident">TxBuilder</span> {
- <span class="ident">wallet</span>: <span class="self">self</span>.<span class="ident">wallet</span>,
- <span class="ident">params</span>: <span class="self">self</span>.<span class="ident">params</span>,
- <span class="ident">coin_selection</span>,
- <span class="ident">phantom</span>: <span class="ident">PhantomData</span>,
+ coin_selection: P,
+ ) -> TxBuilder<<span class="lifetime">'a</span>, D, P, Ctx> {
+ TxBuilder {
+ wallet: <span class="self">self</span>.wallet,
+ params: <span class="self">self</span>.params,
+ coin_selection,
+ phantom: PhantomData,
}
}
- <span class="doccomment">/// Finish building the transaction.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Returns the [`BIP174`] "PSBT" and summary details about the transaction.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`BIP174`]: https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">finish</span>(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span>(<span class="ident">Psbt</span>, <span class="ident">TransactionDetails</span>), <span class="ident">Error</span><span class="op">></span> {
- <span class="self">self</span>.<span class="ident">wallet</span>.<span class="ident">create_tx</span>(<span class="self">self</span>.<span class="ident">coin_selection</span>, <span class="self">self</span>.<span class="ident">params</span>)
- }
-
- <span class="doccomment">/// Enable signaling RBF</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This will use the default nSequence value of `0xFFFFFFFD`.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">enable_rbf</span>(<span class="kw-2">&mut</span> <span class="self">self</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">rbf</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">RbfValue::Default</span>);
- <span class="self">self</span>
+ <span class="doccomment">/// Finish building the transaction.
+ ///
+ /// Returns the [`BIP174`] "PSBT" and summary details about the transaction.
+ ///
+ /// [`BIP174`]: https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki
+ </span><span class="kw">pub fn </span>finish(<span class="self">self</span>) -> <span class="prelude-ty">Result</span><(Psbt, TransactionDetails), Error> {
+ <span class="self">self</span>.wallet.create_tx(<span class="self">self</span>.coin_selection, <span class="self">self</span>.params)
}
- <span class="doccomment">/// Enable signaling RBF with a specific nSequence value</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This can cause conflicts if the wallet's descriptors contain an "older" (OP_CSV) operator</span>
- <span class="doccomment">/// and the given `nsequence` is lower than the CSV value.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If the `nsequence` is higher than `0xFFFFFFFD` an error will be thrown, since it would not</span>
- <span class="doccomment">/// be a valid nSequence to signal RBF.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">enable_rbf_with_sequence</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">nsequence</span>: <span class="ident">Sequence</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">rbf</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">RbfValue::Value</span>(<span class="ident">nsequence</span>));
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Set the current blockchain height.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// This will be used to:</span>
- <span class="doccomment">/// 1. Set the nLockTime for preventing fee sniping.</span>
- <span class="doccomment">/// **Note**: This will be ignored if you manually specify a nlocktime using [`TxBuilder::nlocktime`].</span>
- <span class="doccomment">/// 2. Decide whether coinbase outputs are mature or not. If the coinbase outputs are not</span>
- <span class="doccomment">/// mature at `current_height`, we ignore them in the coin selection.</span>
- <span class="doccomment">/// If you want to create a transaction that spends immature coinbase inputs, manually</span>
- <span class="doccomment">/// add them using [`TxBuilder::add_utxos`].</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// In both cases, if you don't provide a current height, we use the last sync height.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">current_height</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">height</span>: <span class="ident">u32</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">current_height</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">LockTime::from_height</span>(<span class="ident">height</span>).<span class="ident">expect</span>(<span class="string">"Invalid height"</span>));
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Set whether or not the dust limit is checked.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// **Note**: by avoiding a dust limit check you may end up with a transaction that is non-standard.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">allow_dust</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">allow_dust</span>: <span class="ident">bool</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">allow_dust</span> <span class="op">=</span> <span class="ident">allow_dust</span>;
- <span class="self">self</span>
- }
+ <span class="doccomment">/// Enable signaling RBF
+ ///
+ /// This will use the default nSequence value of `0xFFFFFFFD`.
+ </span><span class="kw">pub fn </span>enable_rbf(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.rbf = <span class="prelude-val">Some</span>(RbfValue::Default);
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Enable signaling RBF with a specific nSequence value
+ ///
+ /// This can cause conflicts if the wallet's descriptors contain an "older" (OP_CSV) operator
+ /// and the given `nsequence` is lower than the CSV value.
+ ///
+ /// If the `nsequence` is higher than `0xFFFFFFFD` an error will be thrown, since it would not
+ /// be a valid nSequence to signal RBF.
+ </span><span class="kw">pub fn </span>enable_rbf_with_sequence(<span class="kw-2">&mut </span><span class="self">self</span>, nsequence: Sequence) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.rbf = <span class="prelude-val">Some</span>(RbfValue::Value(nsequence));
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set the current blockchain height.
+ ///
+ /// This will be used to:
+ /// 1. Set the nLockTime for preventing fee sniping.
+ /// **Note**: This will be ignored if you manually specify a nlocktime using [`TxBuilder::nlocktime`].
+ /// 2. Decide whether coinbase outputs are mature or not. If the coinbase outputs are not
+ /// mature at `current_height`, we ignore them in the coin selection.
+ /// If you want to create a transaction that spends immature coinbase inputs, manually
+ /// add them using [`TxBuilder::add_utxos`].
+ ///
+ /// In both cases, if you don't provide a current height, we use the last sync height.
+ </span><span class="kw">pub fn </span>current_height(<span class="kw-2">&mut </span><span class="self">self</span>, height: u32) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.current_height = <span class="prelude-val">Some</span>(LockTime::from_height(height).expect(<span class="string">"Invalid height"</span>));
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set whether or not the dust limit is checked.
+ ///
+ /// **Note**: by avoiding a dust limit check you may end up with a transaction that is non-standard.
+ </span><span class="kw">pub fn </span>allow_dust(<span class="kw-2">&mut </span><span class="self">self</span>, allow_dust: bool) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.allow_dust = allow_dust;
+ <span class="self">self
+ </span>}
}
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span>, <span class="ident">Cs</span>: <span class="ident">CoinSelectionAlgorithm</span><span class="op"><</span><span class="ident">D</span><span class="op">></span><span class="op">></span> <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>, <span class="ident">Cs</span>, <span class="ident">CreateTx</span><span class="op">></span> {
- <span class="doccomment">/// Replace the recipients already added with a new list</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">set_recipients</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">recipients</span>: <span class="ident">Vec</span><span class="op"><</span>(<span class="ident">Script</span>, <span class="ident">u64</span>)<span class="op">></span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">recipients</span> <span class="op">=</span> <span class="ident">recipients</span>;
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Add a recipient to the internal list</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_recipient</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">script_pubkey</span>: <span class="ident">Script</span>, <span class="ident">amount</span>: <span class="ident">u64</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">recipients</span>.<span class="ident">push</span>((<span class="ident">script_pubkey</span>, <span class="ident">amount</span>));
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Add data as an output, using OP_RETURN</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_data</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">data</span>: <span class="kw-2">&</span>[<span class="ident">u8</span>]) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="kw">let</span> <span class="ident">script</span> <span class="op">=</span> <span class="ident">Script::new_op_return</span>(<span class="ident">data</span>);
- <span class="self">self</span>.<span class="ident">add_recipient</span>(<span class="ident">script</span>, <span class="number">0u64</span>);
- <span class="self">self</span>
- }
-
- <span class="doccomment">/// Sets the address to *drain* excess coins to.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Usually, when there are excess coins they are sent to a change address generated by the</span>
- <span class="doccomment">/// wallet. This option replaces the usual change address with an arbitrary `script_pubkey` of</span>
- <span class="doccomment">/// your choosing. Just as with a change output, if the drain output is not needed (the excess</span>
- <span class="doccomment">/// coins are too small) it will not be included in the resulting transaction. The only</span>
- <span class="doccomment">/// difference is that it is valid to use `drain_to` without setting any ordinary recipients</span>
- <span class="doccomment">/// with [`add_recipient`] (but it is perfectly fine to add recipients as well).</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// If you choose not to set any recipients, you should either provide the utxos that the</span>
- <span class="doccomment">/// transaction should spend via [`add_utxos`], or set [`drain_wallet`] to spend all of them.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// When bumping the fees of a transaction made with this option, you probably want to</span>
- <span class="doccomment">/// use [`allow_shrinking`] to allow this output to be reduced to pay for the extra fees.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// # Example</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// `drain_to` is very useful for draining all the coins in a wallet with [`drain_wallet`] to a</span>
- <span class="doccomment">/// single address.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">/// # use std::str::FromStr;</span>
- <span class="doccomment">/// # use bitcoin::*;</span>
- <span class="doccomment">/// # use bdk::*;</span>
- <span class="doccomment">/// # use bdk::wallet::tx_builder::CreateTx;</span>
- <span class="doccomment">/// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();</span>
- <span class="doccomment">/// # let wallet = doctest_wallet!();</span>
- <span class="doccomment">/// let mut tx_builder = wallet.build_tx();</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// tx_builder</span>
- <span class="doccomment">/// // Spend all outputs in this wallet.</span>
- <span class="doccomment">/// .drain_wallet()</span>
- <span class="doccomment">/// // Send the excess (which is all the coins minus the fee) to this address.</span>
- <span class="doccomment">/// .drain_to(to_address.script_pubkey())</span>
- <span class="doccomment">/// .fee_rate(FeeRate::from_sat_per_vb(5.0))</span>
- <span class="doccomment">/// .enable_rbf();</span>
- <span class="doccomment">/// let (psbt, tx_details) = tx_builder.finish()?;</span>
- <span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
- <span class="doccomment">/// ```</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// [`allow_shrinking`]: Self::allow_shrinking</span>
- <span class="doccomment">/// [`add_recipient`]: Self::add_recipient</span>
- <span class="doccomment">/// [`add_utxos`]: Self::add_utxos</span>
- <span class="doccomment">/// [`drain_wallet`]: Self::drain_wallet</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">drain_to</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">script_pubkey</span>: <span class="ident">Script</span>) -> <span class="kw-2">&mut</span> <span class="self">Self</span> {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">drain_to</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">script_pubkey</span>);
- <span class="self">self</span>
- }
+<span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase, Cs: CoinSelectionAlgorithm<D>> TxBuilder<<span class="lifetime">'a</span>, D, Cs, CreateTx> {
+ <span class="doccomment">/// Replace the recipients already added with a new list
+ </span><span class="kw">pub fn </span>set_recipients(<span class="kw-2">&mut </span><span class="self">self</span>, recipients: Vec<(Script, u64)>) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.recipients = recipients;
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Add a recipient to the internal list
+ </span><span class="kw">pub fn </span>add_recipient(<span class="kw-2">&mut </span><span class="self">self</span>, script_pubkey: Script, amount: u64) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.recipients.push((script_pubkey, amount));
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Add data as an output, using OP_RETURN
+ </span><span class="kw">pub fn </span>add_data(<span class="kw-2">&mut </span><span class="self">self</span>, data: <span class="kw-2">&</span>[u8]) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">let </span>script = Script::new_op_return(data);
+ <span class="self">self</span>.add_recipient(script, <span class="number">0u64</span>);
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Sets the address to *drain* excess coins to.
+ ///
+ /// Usually, when there are excess coins they are sent to a change address generated by the
+ /// wallet. This option replaces the usual change address with an arbitrary `script_pubkey` of
+ /// your choosing. Just as with a change output, if the drain output is not needed (the excess
+ /// coins are too small) it will not be included in the resulting transaction. The only
+ /// difference is that it is valid to use `drain_to` without setting any ordinary recipients
+ /// with [`add_recipient`] (but it is perfectly fine to add recipients as well).
+ ///
+ /// If you choose not to set any recipients, you should either provide the utxos that the
+ /// transaction should spend via [`add_utxos`], or set [`drain_wallet`] to spend all of them.
+ ///
+ /// When bumping the fees of a transaction made with this option, you probably want to
+ /// use [`allow_shrinking`] to allow this output to be reduced to pay for the extra fees.
+ ///
+ /// # Example
+ ///
+ /// `drain_to` is very useful for draining all the coins in a wallet with [`drain_wallet`] to a
+ /// single address.
+ ///
+ /// ```
+ /// # use std::str::FromStr;
+ /// # use bitcoin::*;
+ /// # use bdk::*;
+ /// # use bdk::wallet::tx_builder::CreateTx;
+ /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap();
+ /// # let wallet = doctest_wallet!();
+ /// let mut tx_builder = wallet.build_tx();
+ ///
+ /// tx_builder
+ /// // Spend all outputs in this wallet.
+ /// .drain_wallet()
+ /// // Send the excess (which is all the coins minus the fee) to this address.
+ /// .drain_to(to_address.script_pubkey())
+ /// .fee_rate(FeeRate::from_sat_per_vb(5.0))
+ /// .enable_rbf();
+ /// let (psbt, tx_details) = tx_builder.finish()?;
+ /// # Ok::<(), bdk::Error>(())
+ /// ```
+ ///
+ /// [`allow_shrinking`]: Self::allow_shrinking
+ /// [`add_recipient`]: Self::add_recipient
+ /// [`add_utxos`]: Self::add_utxos
+ /// [`drain_wallet`]: Self::drain_wallet
+ </span><span class="kw">pub fn </span>drain_to(<span class="kw-2">&mut </span><span class="self">self</span>, script_pubkey: Script) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.params.drain_to = <span class="prelude-val">Some</span>(script_pubkey);
+ <span class="self">self
+ </span>}
}
-<span class="comment">// methods supported only by bump_fee</span>
-<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>: <span class="ident">BatchDatabase</span><span class="op">></span> <span class="ident">TxBuilder</span><span class="op"><</span><span class="lifetime">'a</span>, <span class="ident">D</span>, <span class="ident">DefaultCoinSelectionAlgorithm</span>, <span class="ident">BumpFee</span><span class="op">></span> {
- <span class="doccomment">/// Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this</span>
- <span class="doccomment">/// `script_pubkey` in order to bump the transaction fee. Without specifying this the wallet</span>
- <span class="doccomment">/// will attempt to find a change output to shrink instead.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// **Note** that the output may shrink to below the dust limit and therefore be removed. If it is</span>
- <span class="doccomment">/// preserved then it is currently not guaranteed to be in the same position as it was</span>
- <span class="doccomment">/// originally.</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// Returns an `Err` if `script_pubkey` can't be found among the recipients of the</span>
- <span class="doccomment">/// transaction we are bumping.</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">allow_shrinking</span>(<span class="kw-2">&mut</span> <span class="self">self</span>, <span class="ident">script_pubkey</span>: <span class="ident">Script</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="kw-2">&mut</span> <span class="self">Self</span>, <span class="ident">Error</span><span class="op">></span> {
- <span class="kw">match</span> <span class="self">self</span>
- .<span class="ident">params</span>
- .<span class="ident">recipients</span>
- .<span class="ident">iter</span>()
- .<span class="ident">position</span>(<span class="op">|</span>(<span class="ident">recipient_script</span>, <span class="kw">_</span>)<span class="op">|</span> <span class="kw-2">*</span><span class="ident">recipient_script</span> <span class="op">==</span> <span class="ident">script_pubkey</span>)
+<span class="comment">// methods supported only by bump_fee
+</span><span class="kw">impl</span><<span class="lifetime">'a</span>, D: BatchDatabase> TxBuilder<<span class="lifetime">'a</span>, D, DefaultCoinSelectionAlgorithm, BumpFee> {
+ <span class="doccomment">/// Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this
+ /// `script_pubkey` in order to bump the transaction fee. Without specifying this the wallet
+ /// will attempt to find a change output to shrink instead.
+ ///
+ /// **Note** that the output may shrink to below the dust limit and therefore be removed. If it is
+ /// preserved then it is currently not guaranteed to be in the same position as it was
+ /// originally.
+ ///
+ /// Returns an `Err` if `script_pubkey` can't be found among the recipients of the
+ /// transaction we are bumping.
+ </span><span class="kw">pub fn </span>allow_shrinking(<span class="kw-2">&mut </span><span class="self">self</span>, script_pubkey: Script) -> <span class="prelude-ty">Result</span><<span class="kw-2">&mut </span><span class="self">Self</span>, Error> {
+ <span class="kw">match </span><span class="self">self
+ </span>.params
+ .recipients
+ .iter()
+ .position(|(recipient_script, <span class="kw">_</span>)| <span class="kw-2">*</span>recipient_script == script_pubkey)
{
- <span class="prelude-val">Some</span>(<span class="ident">position</span>) => {
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">recipients</span>.<span class="ident">remove</span>(<span class="ident">position</span>);
- <span class="self">self</span>.<span class="ident">params</span>.<span class="ident">drain_to</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">script_pubkey</span>);
+ <span class="prelude-val">Some</span>(position) => {
+ <span class="self">self</span>.params.recipients.remove(position);
+ <span class="self">self</span>.params.drain_to = <span class="prelude-val">Some</span>(script_pubkey);
<span class="prelude-val">Ok</span>(<span class="self">self</span>)
}
- <span class="prelude-val">None</span> => <span class="prelude-val">Err</span>(<span class="ident">Error::Generic</span>(<span class="macro">format!</span>(
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Err</span>(Error::Generic(<span class="macro">format!</span>(
<span class="string">"{} was not in the original transaction"</span>,
- <span class="ident">script_pubkey</span>
+ script_pubkey
))),
}
}
}
-<span class="doccomment">/// Ordering of the transaction's inputs and outputs</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Ord</span>, <span class="ident">PartialOrd</span>, <span class="ident">Eq</span>, <span class="ident">PartialEq</span>, <span class="ident">Hash</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">TxOrdering</span> {
- <span class="doccomment">/// Randomized (default)</span>
- <span class="ident">Shuffle</span>,
- <span class="doccomment">/// Unchanged</span>
- <span class="ident">Untouched</span>,
- <span class="doccomment">/// BIP69 / Lexicographic</span>
- <span class="ident">Bip69Lexicographic</span>,
+<span class="doccomment">/// Ordering of the transaction's inputs and outputs
+</span><span class="attr">#[derive(Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Copy)]
+</span><span class="kw">pub enum </span>TxOrdering {
+ <span class="doccomment">/// Randomized (default)
+ </span>Shuffle,
+ <span class="doccomment">/// Unchanged
+ </span>Untouched,
+ <span class="doccomment">/// BIP69 / Lexicographic
+ </span>Bip69Lexicographic,
}
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">TxOrdering</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">TxOrdering::Shuffle</span>
+<span class="kw">impl </span>Default <span class="kw">for </span>TxOrdering {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ TxOrdering::Shuffle
}
}
-<span class="kw">impl</span> <span class="ident">TxOrdering</span> {
- <span class="doccomment">/// Sort transaction inputs and outputs by [`TxOrdering`] variant</span>
- <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">sort_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">tx</span>: <span class="kw-2">&mut</span> <span class="ident">Transaction</span>) {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">TxOrdering::Untouched</span> => {}
- <span class="ident">TxOrdering::Shuffle</span> => {
- <span class="kw">use</span> <span class="ident">rand::seq::SliceRandom</span>;
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
- <span class="kw">use</span> <span class="ident">rand::SeedableRng</span>;
-
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">test</span>))]</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span> <span class="op">=</span> <span class="ident">rand::thread_rng</span>();
- <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">rng</span> <span class="op">=</span> <span class="ident">rand::rngs::StdRng::seed_from_u64</span>(<span class="number">12345</span>);
-
- <span class="ident">tx</span>.<span class="ident">output</span>.<span class="ident">shuffle</span>(<span class="kw-2">&mut</span> <span class="ident">rng</span>);
+<span class="kw">impl </span>TxOrdering {
+ <span class="doccomment">/// Sort transaction inputs and outputs by [`TxOrdering`] variant
+ </span><span class="kw">pub fn </span>sort_tx(<span class="kw-2">&</span><span class="self">self</span>, tx: <span class="kw-2">&mut </span>Transaction) {
+ <span class="kw">match </span><span class="self">self </span>{
+ TxOrdering::Untouched => {}
+ TxOrdering::Shuffle => {
+ <span class="kw">use </span>rand::seq::SliceRandom;
+ <span class="attr">#[cfg(test)]
+ </span><span class="kw">use </span>rand::SeedableRng;
+
+ <span class="attr">#[cfg(not(test))]
+ </span><span class="kw">let </span><span class="kw-2">mut </span>rng = rand::thread_rng();
+ <span class="attr">#[cfg(test)]
+ </span><span class="kw">let </span><span class="kw-2">mut </span>rng = rand::rngs::StdRng::seed_from_u64(<span class="number">12345</span>);
+
+ tx.output.shuffle(<span class="kw-2">&mut </span>rng);
}
- <span class="ident">TxOrdering::Bip69Lexicographic</span> => {
- <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">sort_unstable_by_key</span>(<span class="op">|</span><span class="ident">txin</span><span class="op">|</span> {
- (<span class="ident">txin</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>, <span class="ident">txin</span>.<span class="ident">previous_output</span>.<span class="ident">vout</span>)
+ TxOrdering::Bip69Lexicographic => {
+ tx.input.sort_unstable_by_key(|txin| {
+ (txin.previous_output.txid, txin.previous_output.vout)
});
- <span class="ident">tx</span>.<span class="ident">output</span>
- .<span class="ident">sort_unstable_by_key</span>(<span class="op">|</span><span class="ident">txout</span><span class="op">|</span> (<span class="ident">txout</span>.<span class="ident">value</span>, <span class="ident">txout</span>.<span class="ident">script_pubkey</span>.<span class="ident">clone</span>()));
+ tx.output
+ .sort_unstable_by_key(|txout| (txout.value, txout.script_pubkey.clone()));
}
}
}
}
-<span class="doccomment">/// Transaction version</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Has a default value of `1`</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Ord</span>, <span class="ident">PartialOrd</span>, <span class="ident">Eq</span>, <span class="ident">PartialEq</span>, <span class="ident">Hash</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct</span> <span class="ident">Version</span>(<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="ident">i32</span>);
+<span class="doccomment">/// Transaction version
+///
+/// Has a default value of `1`
+</span><span class="attr">#[derive(Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Copy)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct </span>Version(<span class="kw">pub</span>(<span class="kw">crate</span>) i32);
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">Version</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">Version</span>(<span class="number">1</span>)
+<span class="kw">impl </span>Default <span class="kw">for </span>Version {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ Version(<span class="number">1</span>)
}
}
-<span class="doccomment">/// RBF nSequence value</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Has a default value of `0xFFFFFFFD`</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Ord</span>, <span class="ident">PartialOrd</span>, <span class="ident">Eq</span>, <span class="ident">PartialEq</span>, <span class="ident">Hash</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum</span> <span class="ident">RbfValue</span> {
- <span class="ident">Default</span>,
- <span class="ident">Value</span>(<span class="ident">Sequence</span>),
+<span class="doccomment">/// RBF nSequence value
+///
+/// Has a default value of `0xFFFFFFFD`
+</span><span class="attr">#[derive(Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Copy)]
+</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum </span>RbfValue {
+ Default,
+ Value(Sequence),
}
-<span class="kw">impl</span> <span class="ident">RbfValue</span> {
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">get_value</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">Sequence</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">RbfValue::Default</span> => <span class="ident">Sequence::ENABLE_RBF_NO_LOCKTIME</span>,
- <span class="ident">RbfValue::Value</span>(<span class="ident">v</span>) => <span class="kw-2">*</span><span class="ident">v</span>,
+<span class="kw">impl </span>RbfValue {
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_value(<span class="kw-2">&</span><span class="self">self</span>) -> Sequence {
+ <span class="kw">match </span><span class="self">self </span>{
+ RbfValue::Default => Sequence::ENABLE_RBF_NO_LOCKTIME,
+ RbfValue::Value(v) => <span class="kw-2">*</span>v,
}
}
}
-<span class="doccomment">/// Policy regarding the use of change outputs when creating a transaction</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Ord</span>, <span class="ident">PartialOrd</span>, <span class="ident">Eq</span>, <span class="ident">PartialEq</span>, <span class="ident">Hash</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">ChangeSpendPolicy</span> {
- <span class="doccomment">/// Use both change and non-change outputs (default)</span>
- <span class="ident">ChangeAllowed</span>,
- <span class="doccomment">/// Only use change outputs (see [`TxBuilder::only_spend_change`])</span>
- <span class="ident">OnlyChange</span>,
- <span class="doccomment">/// Only use non-change outputs (see [`TxBuilder::do_not_spend_change`])</span>
- <span class="ident">ChangeForbidden</span>,
+<span class="doccomment">/// Policy regarding the use of change outputs when creating a transaction
+</span><span class="attr">#[derive(Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Copy)]
+</span><span class="kw">pub enum </span>ChangeSpendPolicy {
+ <span class="doccomment">/// Use both change and non-change outputs (default)
+ </span>ChangeAllowed,
+ <span class="doccomment">/// Only use change outputs (see [`TxBuilder::only_spend_change`])
+ </span>OnlyChange,
+ <span class="doccomment">/// Only use non-change outputs (see [`TxBuilder::do_not_spend_change`])
+ </span>ChangeForbidden,
}
-<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">ChangeSpendPolicy</span> {
- <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> {
- <span class="ident">ChangeSpendPolicy::ChangeAllowed</span>
+<span class="kw">impl </span>Default <span class="kw">for </span>ChangeSpendPolicy {
+ <span class="kw">fn </span>default() -> <span class="self">Self </span>{
+ ChangeSpendPolicy::ChangeAllowed
}
}
-<span class="kw">impl</span> <span class="ident">ChangeSpendPolicy</span> {
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">is_satisfied_by</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">utxo</span>: <span class="kw-2">&</span><span class="ident">LocalUtxo</span>) -> <span class="ident">bool</span> {
- <span class="kw">match</span> <span class="self">self</span> {
- <span class="ident">ChangeSpendPolicy::ChangeAllowed</span> => <span class="bool-val">true</span>,
- <span class="ident">ChangeSpendPolicy::OnlyChange</span> => <span class="ident">utxo</span>.<span class="ident">keychain</span> <span class="op">==</span> <span class="ident">KeychainKind::Internal</span>,
- <span class="ident">ChangeSpendPolicy::ChangeForbidden</span> => <span class="ident">utxo</span>.<span class="ident">keychain</span> <span class="op">==</span> <span class="ident">KeychainKind::External</span>,
+<span class="kw">impl </span>ChangeSpendPolicy {
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>is_satisfied_by(<span class="kw-2">&</span><span class="self">self</span>, utxo: <span class="kw-2">&</span>LocalUtxo) -> bool {
+ <span class="kw">match </span><span class="self">self </span>{
+ ChangeSpendPolicy::ChangeAllowed => <span class="bool-val">true</span>,
+ ChangeSpendPolicy::OnlyChange => utxo.keychain == KeychainKind::Internal,
+ ChangeSpendPolicy::ChangeForbidden => utxo.keychain == KeychainKind::External,
}
}
}
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">const</span> <span class="ident">ORDERING_TEST_TX</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"0200000003c26f3eb7932f7acddc5ddd26602b77e7516079b03090a16e2c2f54\
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">const </span>ORDERING_TEST_TX: <span class="kw-2">&</span>str = <span class="string">"0200000003c26f3eb7932f7acddc5ddd26602b77e7516079b03090a16e2c2f54\
85d1fd600f0100000000ffffffffc26f3eb7932f7acddc5ddd26602b77e75160\
79b03090a16e2c2f5485d1fd600f0000000000ffffffff571fb3e02278217852\
dd5d299947e2b7354a639adc32ec1fa7b82cfb5dec530e0500000000ffffffff\
03e80300000000000002aaeee80300000000000001aa200300000000000001ff\
00000000"</span>;
- <span class="macro">macro_rules!</span> <span class="ident">ordering_test_tx</span> {
+ <span class="macro">macro_rules! </span>ordering_test_tx {
() => {
- <span class="ident">deserialize</span>::<span class="op"><</span><span class="ident">bitcoin::Transaction</span><span class="op">></span>(<span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="ident">ORDERING_TEST_TX</span>).<span class="ident">unwrap</span>())
- .<span class="ident">unwrap</span>()
+ deserialize::<bitcoin::Transaction>(<span class="kw-2">&</span>Vec::<u8>::from_hex(ORDERING_TEST_TX).unwrap())
+ .unwrap()
};
}
- <span class="kw">use</span> <span class="ident">bitcoin::consensus::deserialize</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
+ <span class="kw">use </span>bitcoin::consensus::deserialize;
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_output_ordering_default_shuffle</span>() {
- <span class="macro">assert_eq!</span>(<span class="ident">TxOrdering::default</span>(), <span class="ident">TxOrdering::Shuffle</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_output_ordering_default_shuffle() {
+ <span class="macro">assert_eq!</span>(TxOrdering::default(), TxOrdering::Shuffle);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_output_ordering_untouched</span>() {
- <span class="kw">let</span> <span class="ident">original_tx</span> <span class="op">=</span> <span class="macro">ordering_test_tx!</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">original_tx</span>.<span class="ident">clone</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_output_ordering_untouched() {
+ <span class="kw">let </span>original_tx = <span class="macro">ordering_test_tx!</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = original_tx.clone();
- <span class="ident">TxOrdering::Untouched</span>.<span class="ident">sort_tx</span>(<span class="kw-2">&mut</span> <span class="ident">tx</span>);
+ TxOrdering::Untouched.sort_tx(<span class="kw-2">&mut </span>tx);
- <span class="macro">assert_eq!</span>(<span class="ident">original_tx</span>, <span class="ident">tx</span>);
+ <span class="macro">assert_eq!</span>(original_tx, tx);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_output_ordering_shuffle</span>() {
- <span class="kw">let</span> <span class="ident">original_tx</span> <span class="op">=</span> <span class="macro">ordering_test_tx!</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">original_tx</span>.<span class="ident">clone</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_output_ordering_shuffle() {
+ <span class="kw">let </span>original_tx = <span class="macro">ordering_test_tx!</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = original_tx.clone();
- <span class="ident">TxOrdering::Shuffle</span>.<span class="ident">sort_tx</span>(<span class="kw-2">&mut</span> <span class="ident">tx</span>);
+ TxOrdering::Shuffle.sort_tx(<span class="kw-2">&mut </span>tx);
- <span class="macro">assert_eq!</span>(<span class="ident">original_tx</span>.<span class="ident">input</span>, <span class="ident">tx</span>.<span class="ident">input</span>);
- <span class="macro">assert_ne!</span>(<span class="ident">original_tx</span>.<span class="ident">output</span>, <span class="ident">tx</span>.<span class="ident">output</span>);
+ <span class="macro">assert_eq!</span>(original_tx.input, tx.input);
+ <span class="macro">assert_ne!</span>(original_tx.output, tx.output);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_output_ordering_bip69</span>() {
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_output_ordering_bip69() {
+ <span class="kw">use </span>std::str::FromStr;
- <span class="kw">let</span> <span class="ident">original_tx</span> <span class="op">=</span> <span class="macro">ordering_test_tx!</span>();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">original_tx</span>;
+ <span class="kw">let </span>original_tx = <span class="macro">ordering_test_tx!</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>tx = original_tx;
- <span class="ident">TxOrdering::Bip69Lexicographic</span>.<span class="ident">sort_tx</span>(<span class="kw-2">&mut</span> <span class="ident">tx</span>);
+ TxOrdering::Bip69Lexicographic.sort_tx(<span class="kw-2">&mut </span>tx);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">input</span>[<span class="number">0</span>].<span class="ident">previous_output</span>,
- <span class="ident">bitcoin::OutPoint::from_str</span>(
- <span class="string">"0e53ec5dfb2cb8a71fec32dc9a634a35b7e24799295ddd5278217822e0b31f57:5"</span>
- )
- .<span class="ident">unwrap</span>()
+ tx.input[<span class="number">0</span>].previous_output,
+ bitcoin::OutPoint::from_str(
+ <span class="string">"0e53ec5dfb2cb8a71fec32dc9a634a35b7e24799295ddd5278217822e0b31f57:5"
+ </span>)
+ .unwrap()
);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">input</span>[<span class="number">1</span>].<span class="ident">previous_output</span>,
- <span class="ident">bitcoin::OutPoint::from_str</span>(
- <span class="string">"0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:0"</span>
- )
- .<span class="ident">unwrap</span>()
+ tx.input[<span class="number">1</span>].previous_output,
+ bitcoin::OutPoint::from_str(
+ <span class="string">"0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:0"
+ </span>)
+ .unwrap()
);
<span class="macro">assert_eq!</span>(
- <span class="ident">tx</span>.<span class="ident">input</span>[<span class="number">2</span>].<span class="ident">previous_output</span>,
- <span class="ident">bitcoin::OutPoint::from_str</span>(
- <span class="string">"0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:1"</span>
- )
- .<span class="ident">unwrap</span>()
+ tx.input[<span class="number">2</span>].previous_output,
+ bitcoin::OutPoint::from_str(
+ <span class="string">"0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:1"
+ </span>)
+ .unwrap()
);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>[<span class="number">0</span>].<span class="ident">value</span>, <span class="number">800</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>[<span class="number">1</span>].<span class="ident">script_pubkey</span>, <span class="ident">From::from</span>(<span class="macro">vec!</span>[<span class="number">0xAA</span>]));
- <span class="macro">assert_eq!</span>(<span class="ident">tx</span>.<span class="ident">output</span>[<span class="number">2</span>].<span class="ident">script_pubkey</span>, <span class="ident">From::from</span>(<span class="macro">vec!</span>[<span class="number">0xAA</span>, <span class="number">0xEE</span>]));
+ <span class="macro">assert_eq!</span>(tx.output[<span class="number">0</span>].value, <span class="number">800</span>);
+ <span class="macro">assert_eq!</span>(tx.output[<span class="number">1</span>].script_pubkey, From::from(<span class="macro">vec!</span>[<span class="number">0xAA</span>]));
+ <span class="macro">assert_eq!</span>(tx.output[<span class="number">2</span>].script_pubkey, From::from(<span class="macro">vec!</span>[<span class="number">0xAA</span>, <span class="number">0xEE</span>]));
}
- <span class="kw">fn</span> <span class="ident">get_test_utxos</span>() -> <span class="ident">Vec</span><span class="op"><</span><span class="ident">LocalUtxo</span><span class="op">></span> {
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::Hash</span>;
+ <span class="kw">fn </span>get_test_utxos() -> Vec<LocalUtxo> {
+ <span class="kw">use </span>bitcoin::hashes::Hash;
<span class="macro">vec!</span>[
- <span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">bitcoin::Txid::from_inner</span>([<span class="number">0</span>; <span class="number">32</span>]),
- <span class="ident">vout</span>: <span class="number">0</span>,
+ LocalUtxo {
+ outpoint: OutPoint {
+ txid: bitcoin::Txid::from_inner([<span class="number">0</span>; <span class="number">32</span>]),
+ vout: <span class="number">0</span>,
},
- <span class="ident">txout</span>: <span class="ident">Default::default</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::External</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ txout: Default::default(),
+ keychain: KeychainKind::External,
+ is_spent: <span class="bool-val">false</span>,
},
- <span class="ident">LocalUtxo</span> {
- <span class="ident">outpoint</span>: <span class="ident">OutPoint</span> {
- <span class="ident">txid</span>: <span class="ident">bitcoin::Txid::from_inner</span>([<span class="number">0</span>; <span class="number">32</span>]),
- <span class="ident">vout</span>: <span class="number">1</span>,
+ LocalUtxo {
+ outpoint: OutPoint {
+ txid: bitcoin::Txid::from_inner([<span class="number">0</span>; <span class="number">32</span>]),
+ vout: <span class="number">1</span>,
},
- <span class="ident">txout</span>: <span class="ident">Default::default</span>(),
- <span class="ident">keychain</span>: <span class="ident">KeychainKind::Internal</span>,
- <span class="ident">is_spent</span>: <span class="bool-val">false</span>,
+ txout: Default::default(),
+ keychain: KeychainKind::Internal,
+ is_spent: <span class="bool-val">false</span>,
},
]
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_change_spend_policy_default</span>() {
- <span class="kw">let</span> <span class="ident">change_spend_policy</span> <span class="op">=</span> <span class="ident">ChangeSpendPolicy::default</span>();
- <span class="kw">let</span> <span class="ident">filtered</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">change_spend_policy</span>.<span class="ident">is_satisfied_by</span>(<span class="ident">u</span>))
- .<span class="ident">count</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_change_spend_policy_default() {
+ <span class="kw">let </span>change_spend_policy = ChangeSpendPolicy::default();
+ <span class="kw">let </span>filtered = get_test_utxos()
+ .into_iter()
+ .filter(|u| change_spend_policy.is_satisfied_by(u))
+ .count();
- <span class="macro">assert_eq!</span>(<span class="ident">filtered</span>, <span class="number">2</span>);
+ <span class="macro">assert_eq!</span>(filtered, <span class="number">2</span>);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_change_spend_policy_no_internal</span>() {
- <span class="kw">let</span> <span class="ident">change_spend_policy</span> <span class="op">=</span> <span class="ident">ChangeSpendPolicy::ChangeForbidden</span>;
- <span class="kw">let</span> <span class="ident">filtered</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">change_spend_policy</span>.<span class="ident">is_satisfied_by</span>(<span class="ident">u</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_change_spend_policy_no_internal() {
+ <span class="kw">let </span>change_spend_policy = ChangeSpendPolicy::ChangeForbidden;
+ <span class="kw">let </span>filtered = get_test_utxos()
+ .into_iter()
+ .filter(|u| change_spend_policy.is_satisfied_by(u))
+ .collect::<Vec<<span class="kw">_</span>>>();
- <span class="macro">assert_eq!</span>(<span class="ident">filtered</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">filtered</span>[<span class="number">0</span>].<span class="ident">keychain</span>, <span class="ident">KeychainKind::External</span>);
+ <span class="macro">assert_eq!</span>(filtered.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(filtered[<span class="number">0</span>].keychain, KeychainKind::External);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_change_spend_policy_only_internal</span>() {
- <span class="kw">let</span> <span class="ident">change_spend_policy</span> <span class="op">=</span> <span class="ident">ChangeSpendPolicy::OnlyChange</span>;
- <span class="kw">let</span> <span class="ident">filtered</span> <span class="op">=</span> <span class="ident">get_test_utxos</span>()
- .<span class="ident">into_iter</span>()
- .<span class="ident">filter</span>(<span class="op">|</span><span class="ident">u</span><span class="op">|</span> <span class="ident">change_spend_policy</span>.<span class="ident">is_satisfied_by</span>(<span class="ident">u</span>))
- .<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_change_spend_policy_only_internal() {
+ <span class="kw">let </span>change_spend_policy = ChangeSpendPolicy::OnlyChange;
+ <span class="kw">let </span>filtered = get_test_utxos()
+ .into_iter()
+ .filter(|u| change_spend_policy.is_satisfied_by(u))
+ .collect::<Vec<<span class="kw">_</span>>>();
- <span class="macro">assert_eq!</span>(<span class="ident">filtered</span>.<span class="ident">len</span>(), <span class="number">1</span>);
- <span class="macro">assert_eq!</span>(<span class="ident">filtered</span>[<span class="number">0</span>].<span class="ident">keychain</span>, <span class="ident">KeychainKind::Internal</span>);
+ <span class="macro">assert_eq!</span>(filtered.len(), <span class="number">1</span>);
+ <span class="macro">assert_eq!</span>(filtered[<span class="number">0</span>].keychain, KeychainKind::Internal);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_default_tx_version_1</span>() {
- <span class="kw">let</span> <span class="ident">version</span> <span class="op">=</span> <span class="ident">Version::default</span>();
- <span class="macro">assert_eq!</span>(<span class="ident">version</span>.<span class="number">0</span>, <span class="number">1</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_default_tx_version_1() {
+ <span class="kw">let </span>version = Version::default();
+ <span class="macro">assert_eq!</span>(version.<span class="number">0</span>, <span class="number">1</span>);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/utils.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>utils.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-<span id="163">163</span>
-<span id="164">164</span>
-<span id="165">165</span>
-<span id="166">166</span>
-<span id="167">167</span>
-<span id="168">168</span>
-<span id="169">169</span>
-<span id="170">170</span>
-<span id="171">171</span>
-<span id="172">172</span>
-<span id="173">173</span>
-<span id="174">174</span>
-<span id="175">175</span>
-<span id="176">176</span>
-<span id="177">177</span>
-<span id="178">178</span>
-<span id="179">179</span>
-<span id="180">180</span>
-<span id="181">181</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/utils.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>utils.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="kw">use</span> <span class="ident">bitcoin::secp256k1</span>::{<span class="ident">All</span>, <span class="ident">Secp256k1</span>};
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">LockTime</span>, <span class="ident">Script</span>, <span class="ident">Sequence</span>};
+</span><span class="kw">use </span>bitcoin::secp256k1::{All, Secp256k1};
+<span class="kw">use </span>bitcoin::{LockTime, Script, Sequence};
-<span class="kw">use</span> <span class="ident">miniscript</span>::{<span class="ident">MiniscriptKey</span>, <span class="ident">Satisfier</span>, <span class="ident">ToPublicKey</span>};
+<span class="kw">use </span>miniscript::{MiniscriptKey, Satisfier, ToPublicKey};
-<span class="doccomment">/// Trait to check if a value is below the dust limit.</span>
-<span class="doccomment">/// We are performing dust value calculation for a given script public key using rust-bitcoin to</span>
-<span class="doccomment">/// keep it compatible with network dust rate</span>
-<span class="comment">// we implement this trait to make sure we don't mess up the comparison with off-by-one like a <</span>
-<span class="comment">// instead of a <= etc.</span>
-<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">IsDust</span> {
- <span class="doccomment">/// Check whether or not a value is below dust limit</span>
- <span class="kw">fn</span> <span class="ident">is_dust</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="ident">bool</span>;
+<span class="doccomment">/// Trait to check if a value is below the dust limit.
+/// We are performing dust value calculation for a given script public key using rust-bitcoin to
+/// keep it compatible with network dust rate
+</span><span class="comment">// we implement this trait to make sure we don't mess up the comparison with off-by-one like a <
+// instead of a <= etc.
+</span><span class="kw">pub trait </span>IsDust {
+ <span class="doccomment">/// Check whether or not a value is below dust limit
+ </span><span class="kw">fn </span>is_dust(<span class="kw-2">&</span><span class="self">self</span>, script: <span class="kw-2">&</span>Script) -> bool;
}
-<span class="kw">impl</span> <span class="ident">IsDust</span> <span class="kw">for</span> <span class="ident">u64</span> {
- <span class="kw">fn</span> <span class="ident">is_dust</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">script</span>: <span class="kw-2">&</span><span class="ident">Script</span>) -> <span class="ident">bool</span> {
- <span class="kw-2">*</span><span class="self">self</span> <span class="op"><</span> <span class="ident">script</span>.<span class="ident">dust_value</span>().<span class="ident">to_sat</span>()
+<span class="kw">impl </span>IsDust <span class="kw">for </span>u64 {
+ <span class="kw">fn </span>is_dust(<span class="kw-2">&</span><span class="self">self</span>, script: <span class="kw-2">&</span>Script) -> bool {
+ <span class="kw-2">*</span><span class="self">self </span>< script.dust_value().to_sat()
}
}
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">After</span> {
- <span class="kw">pub</span> <span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">assume_height_reached</span>: <span class="ident">bool</span>,
+<span class="kw">pub struct </span>After {
+ <span class="kw">pub </span>current_height: <span class="prelude-ty">Option</span><u32>,
+ <span class="kw">pub </span>assume_height_reached: bool,
}
-<span class="kw">impl</span> <span class="ident">After</span> {
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, <span class="ident">assume_height_reached</span>: <span class="ident">bool</span>) -> <span class="ident">After</span> {
- <span class="ident">After</span> {
- <span class="ident">current_height</span>,
- <span class="ident">assume_height_reached</span>,
+<span class="kw">impl </span>After {
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>new(current_height: <span class="prelude-ty">Option</span><u32>, assume_height_reached: bool) -> After {
+ After {
+ current_height,
+ assume_height_reached,
}
}
}
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">check_nsequence_rbf</span>(<span class="ident">rbf</span>: <span class="ident">Sequence</span>, <span class="ident">csv</span>: <span class="ident">Sequence</span>) -> <span class="ident">bool</span> {
- <span class="comment">// The RBF value must enable relative timelocks</span>
- <span class="kw">if</span> <span class="op">!</span><span class="ident">rbf</span>.<span class="ident">is_relative_lock_time</span>() {
- <span class="kw">return</span> <span class="bool-val">false</span>;
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>check_nsequence_rbf(rbf: Sequence, csv: Sequence) -> bool {
+ <span class="comment">// The RBF value must enable relative timelocks
+ </span><span class="kw">if </span>!rbf.is_relative_lock_time() {
+ <span class="kw">return </span><span class="bool-val">false</span>;
}
- <span class="comment">// Both values should be represented in the same unit (either time-based or</span>
- <span class="comment">// block-height based)</span>
- <span class="kw">if</span> <span class="ident">rbf</span>.<span class="ident">is_time_locked</span>() <span class="op">!</span><span class="op">=</span> <span class="ident">csv</span>.<span class="ident">is_time_locked</span>() {
- <span class="kw">return</span> <span class="bool-val">false</span>;
+ <span class="comment">// Both values should be represented in the same unit (either time-based or
+ // block-height based)
+ </span><span class="kw">if </span>rbf.is_time_locked() != csv.is_time_locked() {
+ <span class="kw">return </span><span class="bool-val">false</span>;
}
- <span class="comment">// The value should be at least `csv`</span>
- <span class="kw">if</span> <span class="ident">rbf</span> <span class="op"><</span> <span class="ident">csv</span> {
- <span class="kw">return</span> <span class="bool-val">false</span>;
+ <span class="comment">// The value should be at least `csv`
+ </span><span class="kw">if </span>rbf < csv {
+ <span class="kw">return </span><span class="bool-val">false</span>;
}
- <span class="bool-val">true</span>
-}
+ <span class="bool-val">true
+</span>}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Pk</span>: <span class="ident">MiniscriptKey</span> <span class="op">+</span> <span class="ident">ToPublicKey</span><span class="op">></span> <span class="ident">Satisfier</span><span class="op"><</span><span class="ident">Pk</span><span class="op">></span> <span class="kw">for</span> <span class="ident">After</span> {
- <span class="kw">fn</span> <span class="ident">check_after</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">n</span>: <span class="ident">LockTime</span>) -> <span class="ident">bool</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">current_height</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">current_height</span> {
- <span class="ident">current_height</span> <span class="op">></span><span class="op">=</span> <span class="ident">n</span>.<span class="ident">to_consensus_u32</span>()
- } <span class="kw">else</span> {
- <span class="self">self</span>.<span class="ident">assume_height_reached</span>
+<span class="kw">impl</span><Pk: MiniscriptKey + ToPublicKey> Satisfier<Pk> <span class="kw">for </span>After {
+ <span class="kw">fn </span>check_after(<span class="kw-2">&</span><span class="self">self</span>, n: LockTime) -> bool {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(current_height) = <span class="self">self</span>.current_height {
+ current_height >= n.to_consensus_u32()
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.assume_height_reached
}
}
}
-<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Older</span> {
- <span class="kw">pub</span> <span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">create_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="kw">pub</span> <span class="ident">assume_height_reached</span>: <span class="ident">bool</span>,
+<span class="kw">pub struct </span>Older {
+ <span class="kw">pub </span>current_height: <span class="prelude-ty">Option</span><u32>,
+ <span class="kw">pub </span>create_height: <span class="prelude-ty">Option</span><u32>,
+ <span class="kw">pub </span>assume_height_reached: bool,
}
-<span class="kw">impl</span> <span class="ident">Older</span> {
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">new</span>(
- <span class="ident">current_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="ident">create_height</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>,
- <span class="ident">assume_height_reached</span>: <span class="ident">bool</span>,
- ) -> <span class="ident">Older</span> {
- <span class="ident">Older</span> {
- <span class="ident">current_height</span>,
- <span class="ident">create_height</span>,
- <span class="ident">assume_height_reached</span>,
+<span class="kw">impl </span>Older {
+ <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>new(
+ current_height: <span class="prelude-ty">Option</span><u32>,
+ create_height: <span class="prelude-ty">Option</span><u32>,
+ assume_height_reached: bool,
+ ) -> Older {
+ Older {
+ current_height,
+ create_height,
+ assume_height_reached,
}
}
}
-<span class="kw">impl</span><span class="op"><</span><span class="ident">Pk</span>: <span class="ident">MiniscriptKey</span> <span class="op">+</span> <span class="ident">ToPublicKey</span><span class="op">></span> <span class="ident">Satisfier</span><span class="op"><</span><span class="ident">Pk</span><span class="op">></span> <span class="kw">for</span> <span class="ident">Older</span> {
- <span class="kw">fn</span> <span class="ident">check_older</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">n</span>: <span class="ident">Sequence</span>) -> <span class="ident">bool</span> {
- <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">current_height</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">current_height</span> {
- <span class="comment">// TODO: test >= / ></span>
- <span class="ident">current_height</span>
- <span class="op">></span><span class="op">=</span> <span class="self">self</span>
- .<span class="ident">create_height</span>
- .<span class="ident">unwrap_or</span>(<span class="number">0</span>)
- .<span class="ident">checked_add</span>(<span class="ident">n</span>.<span class="ident">to_consensus_u32</span>())
- .<span class="ident">expect</span>(<span class="string">"Overflowing addition"</span>)
- } <span class="kw">else</span> {
- <span class="self">self</span>.<span class="ident">assume_height_reached</span>
+<span class="kw">impl</span><Pk: MiniscriptKey + ToPublicKey> Satisfier<Pk> <span class="kw">for </span>Older {
+ <span class="kw">fn </span>check_older(<span class="kw-2">&</span><span class="self">self</span>, n: Sequence) -> bool {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(current_height) = <span class="self">self</span>.current_height {
+ <span class="comment">// TODO: test >= / >
+ </span>current_height
+ >= <span class="self">self
+ </span>.create_height
+ .unwrap_or(<span class="number">0</span>)
+ .checked_add(n.to_consensus_u32())
+ .expect(<span class="string">"Overflowing addition"</span>)
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.assume_height_reached
}
}
}
-<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">type</span> <span class="ident">SecpCtx</span> <span class="op">=</span> <span class="ident">Secp256k1</span><span class="op"><</span><span class="ident">All</span><span class="op">></span>;
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">type </span>SecpCtx = Secp256k1<All>;
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="comment">// When nSequence is lower than this flag the timelock is interpreted as block-height-based,</span>
- <span class="comment">// otherwise it's time-based</span>
- <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const</span> <span class="ident">SEQUENCE_LOCKTIME_TYPE_FLAG</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="number">1</span> <span class="op"><</span><span class="op"><</span> <span class="number">22</span>;
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="comment">// When nSequence is lower than this flag the timelock is interpreted as block-height-based,
+ // otherwise it's time-based
+ </span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">const </span>SEQUENCE_LOCKTIME_TYPE_FLAG: u32 = <span class="number">1 </span><< <span class="number">22</span>;
- <span class="kw">use</span> <span class="kw">super</span>::{<span class="ident">check_nsequence_rbf</span>, <span class="ident">IsDust</span>};
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::bitcoin</span>::{<span class="ident">Address</span>, <span class="ident">Sequence</span>};
- <span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
+ <span class="kw">use super</span>::{check_nsequence_rbf, IsDust};
+ <span class="kw">use </span><span class="kw">crate</span>::bitcoin::{Address, Sequence};
+ <span class="kw">use </span>std::str::FromStr;
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_is_dust</span>() {
- <span class="kw">let</span> <span class="ident">script_p2pkh</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"1GNgwA8JfG7Kc8akJ8opdNWJUihqUztfPe"</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">script_pubkey</span>();
- <span class="macro">assert!</span>(<span class="ident">script_p2pkh</span>.<span class="ident">is_p2pkh</span>());
- <span class="macro">assert!</span>(<span class="number">545</span>.<span class="ident">is_dust</span>(<span class="kw-2">&</span><span class="ident">script_p2pkh</span>));
- <span class="macro">assert!</span>(<span class="op">!</span><span class="number">546</span>.<span class="ident">is_dust</span>(<span class="kw-2">&</span><span class="ident">script_p2pkh</span>));
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_is_dust() {
+ <span class="kw">let </span>script_p2pkh = Address::from_str(<span class="string">"1GNgwA8JfG7Kc8akJ8opdNWJUihqUztfPe"</span>)
+ .unwrap()
+ .script_pubkey();
+ <span class="macro">assert!</span>(script_p2pkh.is_p2pkh());
+ <span class="macro">assert!</span>(<span class="number">545</span>.is_dust(<span class="kw-2">&</span>script_p2pkh));
+ <span class="macro">assert!</span>(!<span class="number">546</span>.is_dust(<span class="kw-2">&</span>script_p2pkh));
- <span class="kw">let</span> <span class="ident">script_p2wpkh</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"bc1qxlh2mnc0yqwas76gqq665qkggee5m98t8yskd8"</span>)
- .<span class="ident">unwrap</span>()
- .<span class="ident">script_pubkey</span>();
- <span class="macro">assert!</span>(<span class="ident">script_p2wpkh</span>.<span class="ident">is_v0_p2wpkh</span>());
- <span class="macro">assert!</span>(<span class="number">293</span>.<span class="ident">is_dust</span>(<span class="kw-2">&</span><span class="ident">script_p2wpkh</span>));
- <span class="macro">assert!</span>(<span class="op">!</span><span class="number">294</span>.<span class="ident">is_dust</span>(<span class="kw-2">&</span><span class="ident">script_p2wpkh</span>));
+ <span class="kw">let </span>script_p2wpkh = Address::from_str(<span class="string">"bc1qxlh2mnc0yqwas76gqq665qkggee5m98t8yskd8"</span>)
+ .unwrap()
+ .script_pubkey();
+ <span class="macro">assert!</span>(script_p2wpkh.is_v0_p2wpkh());
+ <span class="macro">assert!</span>(<span class="number">293</span>.is_dust(<span class="kw-2">&</span>script_p2wpkh));
+ <span class="macro">assert!</span>(!<span class="number">294</span>.is_dust(<span class="kw-2">&</span>script_p2wpkh));
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_nsequence_rbf_msb_set</span>() {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">check_nsequence_rbf</span>(<span class="ident">Sequence</span>(<span class="number">0x80000000</span>), <span class="ident">Sequence</span>(<span class="number">5000</span>));
- <span class="macro">assert!</span>(<span class="op">!</span><span class="ident">result</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_nsequence_rbf_msb_set() {
+ <span class="kw">let </span>result = check_nsequence_rbf(Sequence(<span class="number">0x80000000</span>), Sequence(<span class="number">5000</span>));
+ <span class="macro">assert!</span>(!result);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_nsequence_rbf_lt_csv</span>() {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">check_nsequence_rbf</span>(<span class="ident">Sequence</span>(<span class="number">4000</span>), <span class="ident">Sequence</span>(<span class="number">5000</span>));
- <span class="macro">assert!</span>(<span class="op">!</span><span class="ident">result</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_nsequence_rbf_lt_csv() {
+ <span class="kw">let </span>result = check_nsequence_rbf(Sequence(<span class="number">4000</span>), Sequence(<span class="number">5000</span>));
+ <span class="macro">assert!</span>(!result);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_nsequence_rbf_different_unit</span>() {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span>
- <span class="ident">check_nsequence_rbf</span>(<span class="ident">Sequence</span>(<span class="ident">SEQUENCE_LOCKTIME_TYPE_FLAG</span> <span class="op">+</span> <span class="number">5000</span>), <span class="ident">Sequence</span>(<span class="number">5000</span>));
- <span class="macro">assert!</span>(<span class="op">!</span><span class="ident">result</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_nsequence_rbf_different_unit() {
+ <span class="kw">let </span>result =
+ check_nsequence_rbf(Sequence(SEQUENCE_LOCKTIME_TYPE_FLAG + <span class="number">5000</span>), Sequence(<span class="number">5000</span>));
+ <span class="macro">assert!</span>(!result);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_nsequence_rbf_mask</span>() {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">check_nsequence_rbf</span>(<span class="ident">Sequence</span>(<span class="number">0x3f</span> <span class="op">+</span> <span class="number">10_000</span>), <span class="ident">Sequence</span>(<span class="number">5000</span>));
- <span class="macro">assert!</span>(<span class="ident">result</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_nsequence_rbf_mask() {
+ <span class="kw">let </span>result = check_nsequence_rbf(Sequence(<span class="number">0x3f </span>+ <span class="number">10_000</span>), Sequence(<span class="number">5000</span>));
+ <span class="macro">assert!</span>(result);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_nsequence_rbf_same_unit_blocks</span>() {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">check_nsequence_rbf</span>(<span class="ident">Sequence</span>(<span class="number">10_000</span>), <span class="ident">Sequence</span>(<span class="number">5000</span>));
- <span class="macro">assert!</span>(<span class="ident">result</span>);
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_nsequence_rbf_same_unit_blocks() {
+ <span class="kw">let </span>result = check_nsequence_rbf(Sequence(<span class="number">10_000</span>), Sequence(<span class="number">5000</span>));
+ <span class="macro">assert!</span>(result);
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_check_nsequence_rbf_same_unit_time</span>() {
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">check_nsequence_rbf</span>(
- <span class="ident">Sequence</span>(<span class="ident">SEQUENCE_LOCKTIME_TYPE_FLAG</span> <span class="op">+</span> <span class="number">10_000</span>),
- <span class="ident">Sequence</span>(<span class="ident">SEQUENCE_LOCKTIME_TYPE_FLAG</span> <span class="op">+</span> <span class="number">5000</span>),
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_check_nsequence_rbf_same_unit_time() {
+ <span class="kw">let </span>result = check_nsequence_rbf(
+ Sequence(SEQUENCE_LOCKTIME_TYPE_FLAG + <span class="number">10_000</span>),
+ Sequence(SEQUENCE_LOCKTIME_TYPE_FLAG + <span class="number">5000</span>),
);
- <span class="macro">assert!</span>(<span class="ident">result</span>);
+ <span class="macro">assert!</span>(result);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/verify.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>verify.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><script defer src="../../../main.js"></script><script defer src="../../../source-script.js"></script><script defer src="../../../source-files.js"></script>
- <noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a><h2 class="location"></h2>
- </nav>
- <nav class="sidebar"><a class="sidebar-logo" href="../../../bdk/index.html"><div class="logo-container">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
- </a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
- <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1"> 1</span>
-<span id="2"> 2</span>
-<span id="3"> 3</span>
-<span id="4"> 4</span>
-<span id="5"> 5</span>
-<span id="6"> 6</span>
-<span id="7"> 7</span>
-<span id="8"> 8</span>
-<span id="9"> 9</span>
-<span id="10"> 10</span>
-<span id="11"> 11</span>
-<span id="12"> 12</span>
-<span id="13"> 13</span>
-<span id="14"> 14</span>
-<span id="15"> 15</span>
-<span id="16"> 16</span>
-<span id="17"> 17</span>
-<span id="18"> 18</span>
-<span id="19"> 19</span>
-<span id="20"> 20</span>
-<span id="21"> 21</span>
-<span id="22"> 22</span>
-<span id="23"> 23</span>
-<span id="24"> 24</span>
-<span id="25"> 25</span>
-<span id="26"> 26</span>
-<span id="27"> 27</span>
-<span id="28"> 28</span>
-<span id="29"> 29</span>
-<span id="30"> 30</span>
-<span id="31"> 31</span>
-<span id="32"> 32</span>
-<span id="33"> 33</span>
-<span id="34"> 34</span>
-<span id="35"> 35</span>
-<span id="36"> 36</span>
-<span id="37"> 37</span>
-<span id="38"> 38</span>
-<span id="39"> 39</span>
-<span id="40"> 40</span>
-<span id="41"> 41</span>
-<span id="42"> 42</span>
-<span id="43"> 43</span>
-<span id="44"> 44</span>
-<span id="45"> 45</span>
-<span id="46"> 46</span>
-<span id="47"> 47</span>
-<span id="48"> 48</span>
-<span id="49"> 49</span>
-<span id="50"> 50</span>
-<span id="51"> 51</span>
-<span id="52"> 52</span>
-<span id="53"> 53</span>
-<span id="54"> 54</span>
-<span id="55"> 55</span>
-<span id="56"> 56</span>
-<span id="57"> 57</span>
-<span id="58"> 58</span>
-<span id="59"> 59</span>
-<span id="60"> 60</span>
-<span id="61"> 61</span>
-<span id="62"> 62</span>
-<span id="63"> 63</span>
-<span id="64"> 64</span>
-<span id="65"> 65</span>
-<span id="66"> 66</span>
-<span id="67"> 67</span>
-<span id="68"> 68</span>
-<span id="69"> 69</span>
-<span id="70"> 70</span>
-<span id="71"> 71</span>
-<span id="72"> 72</span>
-<span id="73"> 73</span>
-<span id="74"> 74</span>
-<span id="75"> 75</span>
-<span id="76"> 76</span>
-<span id="77"> 77</span>
-<span id="78"> 78</span>
-<span id="79"> 79</span>
-<span id="80"> 80</span>
-<span id="81"> 81</span>
-<span id="82"> 82</span>
-<span id="83"> 83</span>
-<span id="84"> 84</span>
-<span id="85"> 85</span>
-<span id="86"> 86</span>
-<span id="87"> 87</span>
-<span id="88"> 88</span>
-<span id="89"> 89</span>
-<span id="90"> 90</span>
-<span id="91"> 91</span>
-<span id="92"> 92</span>
-<span id="93"> 93</span>
-<span id="94"> 94</span>
-<span id="95"> 95</span>
-<span id="96"> 96</span>
-<span id="97"> 97</span>
-<span id="98"> 98</span>
-<span id="99"> 99</span>
-<span id="100">100</span>
-<span id="101">101</span>
-<span id="102">102</span>
-<span id="103">103</span>
-<span id="104">104</span>
-<span id="105">105</span>
-<span id="106">106</span>
-<span id="107">107</span>
-<span id="108">108</span>
-<span id="109">109</span>
-<span id="110">110</span>
-<span id="111">111</span>
-<span id="112">112</span>
-<span id="113">113</span>
-<span id="114">114</span>
-<span id="115">115</span>
-<span id="116">116</span>
-<span id="117">117</span>
-<span id="118">118</span>
-<span id="119">119</span>
-<span id="120">120</span>
-<span id="121">121</span>
-<span id="122">122</span>
-<span id="123">123</span>
-<span id="124">124</span>
-<span id="125">125</span>
-<span id="126">126</span>
-<span id="127">127</span>
-<span id="128">128</span>
-<span id="129">129</span>
-<span id="130">130</span>
-<span id="131">131</span>
-<span id="132">132</span>
-<span id="133">133</span>
-<span id="134">134</span>
-<span id="135">135</span>
-<span id="136">136</span>
-<span id="137">137</span>
-<span id="138">138</span>
-<span id="139">139</span>
-<span id="140">140</span>
-<span id="141">141</span>
-<span id="142">142</span>
-<span id="143">143</span>
-<span id="144">144</span>
-<span id="145">145</span>
-<span id="146">146</span>
-<span id="147">147</span>
-<span id="148">148</span>
-<span id="149">149</span>
-<span id="150">150</span>
-<span id="151">151</span>
-<span id="152">152</span>
-<span id="153">153</span>
-<span id="154">154</span>
-<span id="155">155</span>
-<span id="156">156</span>
-<span id="157">157</span>
-<span id="158">158</span>
-<span id="159">159</span>
-<span id="160">160</span>
-<span id="161">161</span>
-<span id="162">162</span>
-</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
-<span class="comment">// Written in 2021 by Alekos Filini <alekos.filini@gmail.com></span>
-<span class="comment">//</span>
-<span class="comment">// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers</span>
-<span class="comment">//</span>
-<span class="comment">// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE</span>
-<span class="comment">// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license</span>
-<span class="comment">// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.</span>
-<span class="comment">// You may not use this file except in accordance with one or both of these</span>
-<span class="comment">// licenses.</span>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/wallet/verify.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>verify.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-64f7dca12162a801.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-94f39d4346842c1e.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-a211dbb005fb8161.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../bdk/index.html">
+ <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit
+// Written in 2021 by Alekos Filini <alekos.filini@gmail.com>
+//
+// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
-<span class="doccomment">//! Verify transactions against the consensus rules</span>
+</span><span class="doccomment">//! Verify transactions against the consensus rules
-<span class="kw">use</span> <span class="ident">std::collections::HashMap</span>;
-<span class="kw">use</span> <span class="ident">std::fmt</span>;
+</span><span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::fmt;
-<span class="kw">use</span> <span class="ident">bitcoin::consensus::serialize</span>;
-<span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">OutPoint</span>, <span class="ident">Transaction</span>, <span class="ident">Txid</span>};
+<span class="kw">use </span>bitcoin::consensus::serialize;
+<span class="kw">use </span>bitcoin::{OutPoint, Transaction, Txid};
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blockchain::GetTx</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database::Database</span>;
-<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::error::Error</span>;
+<span class="kw">use </span><span class="kw">crate</span>::blockchain::GetTx;
+<span class="kw">use </span><span class="kw">crate</span>::database::Database;
+<span class="kw">use </span><span class="kw">crate</span>::error::Error;
-<span class="doccomment">/// Verify a transaction against the consensus rules</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// This function uses [`bitcoinconsensus`] to verify transactions by fetching the required data</span>
-<span class="doccomment">/// either from the [`Database`] or using the [`Blockchain`].</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// Depending on the [capabilities](crate::blockchain::Blockchain::get_capabilities) of the</span>
-<span class="doccomment">/// [`Blockchain`] backend, the method could fail when called with old "historical" transactions or</span>
-<span class="doccomment">/// with unconfirmed transactions that have been evicted from the backend's memory.</span>
-<span class="doccomment">///</span>
-<span class="doccomment">/// [`Blockchain`]: crate::blockchain::Blockchain</span>
-<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">verify_tx</span><span class="op"><</span><span class="ident">D</span>: <span class="ident">Database</span>, <span class="ident">B</span>: <span class="ident">GetTx</span><span class="op">></span>(
- <span class="ident">tx</span>: <span class="kw-2">&</span><span class="ident">Transaction</span>,
- <span class="ident">database</span>: <span class="kw-2">&</span><span class="ident">D</span>,
- <span class="ident">blockchain</span>: <span class="kw-2">&</span><span class="ident">B</span>,
-) -> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">VerifyError</span><span class="op">></span> {
- <span class="macro">log::debug!</span>(<span class="string">"Verifying {}"</span>, <span class="ident">tx</span>.<span class="ident">txid</span>());
+<span class="doccomment">/// Verify a transaction against the consensus rules
+///
+/// This function uses [`bitcoinconsensus`] to verify transactions by fetching the required data
+/// either from the [`Database`] or using the [`Blockchain`].
+///
+/// Depending on the [capabilities](crate::blockchain::Blockchain::get_capabilities) of the
+/// [`Blockchain`] backend, the method could fail when called with old "historical" transactions or
+/// with unconfirmed transactions that have been evicted from the backend's memory.
+///
+/// [`Blockchain`]: crate::blockchain::Blockchain
+</span><span class="kw">pub fn </span>verify_tx<D: Database, B: GetTx>(
+ tx: <span class="kw-2">&</span>Transaction,
+ database: <span class="kw-2">&</span>D,
+ blockchain: <span class="kw-2">&</span>B,
+) -> <span class="prelude-ty">Result</span><(), VerifyError> {
+ <span class="macro">log::debug!</span>(<span class="string">"Verifying {}"</span>, tx.txid());
- <span class="kw">let</span> <span class="ident">serialized_tx</span> <span class="op">=</span> <span class="ident">serialize</span>(<span class="ident">tx</span>);
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx_cache</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="op"><</span><span class="kw">_</span>, <span class="ident">Transaction</span><span class="op">></span><span class="ident">::new</span>();
+ <span class="kw">let </span>serialized_tx = serialize(tx);
+ <span class="kw">let </span><span class="kw-2">mut </span>tx_cache = HashMap::<<span class="kw">_</span>, Transaction>::new();
- <span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">input</span>) <span class="kw">in</span> <span class="ident">tx</span>.<span class="ident">input</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
- <span class="kw">let</span> <span class="ident">prev_tx</span> <span class="op">=</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>) <span class="op">=</span> <span class="ident">tx_cache</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>) {
- <span class="ident">prev_tx</span>.<span class="ident">clone</span>()
- } <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>) <span class="op">=</span> <span class="ident">database</span>.<span class="ident">get_raw_tx</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="ident">prev_tx</span>
- } <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">prev_tx</span>) <span class="op">=</span> <span class="ident">blockchain</span>.<span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>)<span class="question-mark">?</span> {
- <span class="ident">prev_tx</span>
- } <span class="kw">else</span> {
- <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">VerifyError::MissingInputTx</span>(<span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">txid</span>));
+ <span class="kw">for </span>(index, input) <span class="kw">in </span>tx.input.iter().enumerate() {
+ <span class="kw">let </span>prev_tx = <span class="kw">if let </span><span class="prelude-val">Some</span>(prev_tx) = tx_cache.get(<span class="kw-2">&</span>input.previous_output.txid) {
+ prev_tx.clone()
+ } <span class="kw">else if let </span><span class="prelude-val">Some</span>(prev_tx) = database.get_raw_tx(<span class="kw-2">&</span>input.previous_output.txid)<span class="question-mark">? </span>{
+ prev_tx
+ } <span class="kw">else if let </span><span class="prelude-val">Some</span>(prev_tx) = blockchain.get_tx(<span class="kw-2">&</span>input.previous_output.txid)<span class="question-mark">? </span>{
+ prev_tx
+ } <span class="kw">else </span>{
+ <span class="kw">return </span><span class="prelude-val">Err</span>(VerifyError::MissingInputTx(input.previous_output.txid));
};
- <span class="kw">let</span> <span class="ident">spent_output</span> <span class="op">=</span> <span class="ident">prev_tx</span>
- .<span class="ident">output</span>
- .<span class="ident">get</span>(<span class="ident">input</span>.<span class="ident">previous_output</span>.<span class="ident">vout</span> <span class="kw">as</span> <span class="ident">usize</span>)
- .<span class="ident">ok_or</span>(<span class="ident">VerifyError::InvalidInput</span>(<span class="ident">input</span>.<span class="ident">previous_output</span>))<span class="question-mark">?</span>;
+ <span class="kw">let </span>spent_output = prev_tx
+ .output
+ .get(input.previous_output.vout <span class="kw">as </span>usize)
+ .ok_or(VerifyError::InvalidInput(input.previous_output))<span class="question-mark">?</span>;
- <span class="ident">bitcoinconsensus::verify</span>(
- <span class="kw-2">&</span><span class="ident">spent_output</span>.<span class="ident">script_pubkey</span>.<span class="ident">to_bytes</span>(),
- <span class="ident">spent_output</span>.<span class="ident">value</span>,
- <span class="kw-2">&</span><span class="ident">serialized_tx</span>,
- <span class="ident">index</span>,
+ bitcoinconsensus::verify(
+ <span class="kw-2">&</span>spent_output.script_pubkey.to_bytes(),
+ spent_output.value,
+ <span class="kw-2">&</span>serialized_tx,
+ index,
)<span class="question-mark">?</span>;
- <span class="comment">// Since we have a local cache we might as well cache stuff from the db, as it will very</span>
- <span class="comment">// likely decrease latency compared to reading from disk or performing an SQL query.</span>
- <span class="ident">tx_cache</span>.<span class="ident">insert</span>(<span class="ident">prev_tx</span>.<span class="ident">txid</span>(), <span class="ident">prev_tx</span>);
+ <span class="comment">// Since we have a local cache we might as well cache stuff from the db, as it will very
+ // likely decrease latency compared to reading from disk or performing an SQL query.
+ </span>tx_cache.insert(prev_tx.txid(), prev_tx);
}
<span class="prelude-val">Ok</span>(())
}
-<span class="doccomment">/// Error during validation of a tx agains the consensus rules</span>
-<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
-<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">VerifyError</span> {
- <span class="doccomment">/// The transaction being spent is not available in the database or the blockchain client</span>
- <span class="ident">MissingInputTx</span>(<span class="ident">Txid</span>),
- <span class="doccomment">/// The transaction being spent doesn't have the requested output</span>
- <span class="ident">InvalidInput</span>(<span class="ident">OutPoint</span>),
+<span class="doccomment">/// Error during validation of a tx agains the consensus rules
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>VerifyError {
+ <span class="doccomment">/// The transaction being spent is not available in the database or the blockchain client
+ </span>MissingInputTx(Txid),
+ <span class="doccomment">/// The transaction being spent doesn't have the requested output
+ </span>InvalidInput(OutPoint),
- <span class="doccomment">/// Consensus error</span>
- <span class="ident">Consensus</span>(<span class="ident">bitcoinconsensus::Error</span>),
+ <span class="doccomment">/// Consensus error
+ </span>Consensus(bitcoinconsensus::Error),
- <span class="doccomment">/// Generic error</span>
- <span class="doccomment">///</span>
- <span class="doccomment">/// It has to be wrapped in a `Box` since `Error` has a variant that contains this enum</span>
- <span class="ident">Global</span>(<span class="ident">Box</span><span class="op"><</span><span class="ident">Error</span><span class="op">></span>),
+ <span class="doccomment">/// Generic error
+ ///
+ /// It has to be wrapped in a `Box` since `Error` has a variant that contains this enum
+ </span>Global(Box<Error>),
}
-<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">VerifyError</span> {
- <span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&mut</span> <span class="ident">fmt::Formatter</span><span class="op"><</span><span class="lifetime">'_</span><span class="op">></span>) -> <span class="ident">fmt::Result</span> {
- <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"{:?}"</span>, <span class="self">self</span>)
+<span class="kw">impl </span>fmt::Display <span class="kw">for </span>VerifyError {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>fmt::Formatter<<span class="lifetime">'_</span>>) -> fmt::Result {
+ <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>)
}
}
-<span class="kw">impl</span> <span class="ident">std::error::Error</span> <span class="kw">for</span> <span class="ident">VerifyError</span> {}
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>VerifyError {}
-<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="ident">Error</span><span class="op">></span> <span class="kw">for</span> <span class="ident">VerifyError</span> {
- <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">other</span>: <span class="ident">Error</span>) -> <span class="self">Self</span> {
- <span class="ident">VerifyError::Global</span>(<span class="ident">Box::new</span>(<span class="ident">other</span>))
+<span class="kw">impl </span>From<Error> <span class="kw">for </span>VerifyError {
+ <span class="kw">fn </span>from(other: Error) -> <span class="self">Self </span>{
+ VerifyError::Global(Box::new(other))
}
}
-<span class="macro">impl_error!</span>(<span class="ident">bitcoinconsensus::Error</span>, <span class="ident">Consensus</span>, <span class="ident">VerifyError</span>);
+<span class="macro">impl_error!</span>(bitcoinconsensus::Error, Consensus, VerifyError);
-<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
-<span class="kw">mod</span> <span class="ident">test</span> {
- <span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
- <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::database</span>::{<span class="ident">BatchOperations</span>, <span class="ident">MemoryDatabase</span>};
- <span class="kw">use</span> <span class="ident">bitcoin::consensus::encode::deserialize</span>;
- <span class="kw">use</span> <span class="ident">bitcoin::hashes::hex::FromHex</span>;
- <span class="kw">use</span> <span class="ident">bitcoin</span>::{<span class="ident">Transaction</span>, <span class="ident">Txid</span>};
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>test {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::database::{BatchOperations, MemoryDatabase};
+ <span class="kw">use </span>bitcoin::consensus::encode::deserialize;
+ <span class="kw">use </span>bitcoin::hashes::hex::FromHex;
+ <span class="kw">use </span>bitcoin::{Transaction, Txid};
- <span class="kw">struct</span> <span class="ident">DummyBlockchain</span>;
+ <span class="kw">struct </span>DummyBlockchain;
- <span class="kw">impl</span> <span class="ident">GetTx</span> <span class="kw">for</span> <span class="ident">DummyBlockchain</span> {
- <span class="kw">fn</span> <span class="ident">get_tx</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">_txid</span>: <span class="kw-2">&</span><span class="ident">Txid</span>) -> <span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Transaction</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span> {
+ <span class="kw">impl </span>GetTx <span class="kw">for </span>DummyBlockchain {
+ <span class="kw">fn </span>get_tx(<span class="kw-2">&</span><span class="self">self</span>, _txid: <span class="kw-2">&</span>Txid) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Transaction>, Error> {
<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>)
}
}
- <span class="attribute">#[<span class="ident">test</span>]</span>
- <span class="kw">fn</span> <span class="ident">test_verify_fail_unsigned_tx</span>() {
- <span class="comment">// https://blockstream.info/tx/95da344585fcf2e5f7d6cbf2c3df2dcce84f9196f7a7bb901a43275cd6eb7c3f</span>
- <span class="kw">let</span> <span class="ident">prev_tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"020000000101192dea5e66d444380e106f8e53acb171703f00d43fb6b3ae88ca5644bdb7e1000000006b48304502210098328d026ce138411f957966c1cf7f7597ccbb170f5d5655ee3e9f47b18f6999022017c3526fc9147830e1340e04934476a3d1521af5b4de4e98baf49ec4c072079e01210276f847f77ec8dd66d78affd3c318a0ed26d89dab33fa143333c207402fcec352feffffff023d0ac203000000001976a9144bfbaf6afb76cc5771bc6404810d1cc041a6933988aca4b956050000000017a91494d5543c74a3ee98e0cf8e8caef5dc813a0f34b48768cb0700"</span>).<span class="ident">unwrap</span>()).<span class="ident">unwrap</span>();
- <span class="comment">// https://blockstream.info/tx/aca326a724eda9a461c10a876534ecd5ae7b27f10f26c3862fb996f80ea2d45d</span>
- <span class="kw">let</span> <span class="ident">signed_tx</span>: <span class="ident">Transaction</span> <span class="op">=</span> <span class="ident">deserialize</span>(<span class="kw-2">&</span><span class="ident">Vec</span>::<span class="op"><</span><span class="ident">u8</span><span class="op">></span><span class="ident">::from_hex</span>(<span class="string">"02000000013f7cebd65c27431a90bba7f796914fe8cc2ddfc3f2cbd6f7e5f2fc854534da95000000006b483045022100de1ac3bcdfb0332207c4a91f3832bd2c2915840165f876ab47c5f8996b971c3602201c6c053d750fadde599e6f5c4e1963df0f01fc0d97815e8157e3d59fe09ca30d012103699b464d1d8bc9e47d4fb1cdaa89a1c5783d68363c4dbc4b524ed3d857148617feffffff02836d3c01000000001976a914fc25d6d5c94003bf5b0c7b640a248e2c637fcfb088ac7ada8202000000001976a914fbed3d9b11183209a57999d54d59f67c019e756c88ac6acb0700"</span>).<span class="ident">unwrap</span>()).<span class="ident">unwrap</span>();
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_verify_fail_unsigned_tx() {
+ <span class="comment">// https://blockstream.info/tx/95da344585fcf2e5f7d6cbf2c3df2dcce84f9196f7a7bb901a43275cd6eb7c3f
+ </span><span class="kw">let </span>prev_tx: Transaction = deserialize(<span class="kw-2">&</span>Vec::<u8>::from_hex(<span class="string">"020000000101192dea5e66d444380e106f8e53acb171703f00d43fb6b3ae88ca5644bdb7e1000000006b48304502210098328d026ce138411f957966c1cf7f7597ccbb170f5d5655ee3e9f47b18f6999022017c3526fc9147830e1340e04934476a3d1521af5b4de4e98baf49ec4c072079e01210276f847f77ec8dd66d78affd3c318a0ed26d89dab33fa143333c207402fcec352feffffff023d0ac203000000001976a9144bfbaf6afb76cc5771bc6404810d1cc041a6933988aca4b956050000000017a91494d5543c74a3ee98e0cf8e8caef5dc813a0f34b48768cb0700"</span>).unwrap()).unwrap();
+ <span class="comment">// https://blockstream.info/tx/aca326a724eda9a461c10a876534ecd5ae7b27f10f26c3862fb996f80ea2d45d
+ </span><span class="kw">let </span>signed_tx: Transaction = deserialize(<span class="kw-2">&</span>Vec::<u8>::from_hex(<span class="string">"02000000013f7cebd65c27431a90bba7f796914fe8cc2ddfc3f2cbd6f7e5f2fc854534da95000000006b483045022100de1ac3bcdfb0332207c4a91f3832bd2c2915840165f876ab47c5f8996b971c3602201c6c053d750fadde599e6f5c4e1963df0f01fc0d97815e8157e3d59fe09ca30d012103699b464d1d8bc9e47d4fb1cdaa89a1c5783d68363c4dbc4b524ed3d857148617feffffff02836d3c01000000001976a914fc25d6d5c94003bf5b0c7b640a248e2c637fcfb088ac7ada8202000000001976a914fbed3d9b11183209a57999d54d59f67c019e756c88ac6acb0700"</span>).unwrap()).unwrap();
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">database</span> <span class="op">=</span> <span class="ident">MemoryDatabase::new</span>();
- <span class="kw">let</span> <span class="ident">blockchain</span> <span class="op">=</span> <span class="ident">DummyBlockchain</span>;
+ <span class="kw">let </span><span class="kw-2">mut </span>database = MemoryDatabase::new();
+ <span class="kw">let </span>blockchain = DummyBlockchain;
- <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">unsigned_tx</span> <span class="op">=</span> <span class="ident">signed_tx</span>.<span class="ident">clone</span>();
- <span class="kw">for</span> <span class="ident">input</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">unsigned_tx</span>.<span class="ident">input</span> {
- <span class="ident">input</span>.<span class="ident">script_sig</span> <span class="op">=</span> <span class="ident">Default::default</span>();
- <span class="ident">input</span>.<span class="ident">witness</span> <span class="op">=</span> <span class="ident">Default::default</span>();
+ <span class="kw">let </span><span class="kw-2">mut </span>unsigned_tx = signed_tx.clone();
+ <span class="kw">for </span>input <span class="kw">in </span><span class="kw-2">&mut </span>unsigned_tx.input {
+ input.script_sig = Default::default();
+ input.witness = Default::default();
}
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">verify_tx</span>(<span class="kw-2">&</span><span class="ident">signed_tx</span>, <span class="kw-2">&</span><span class="ident">database</span>, <span class="kw-2">&</span><span class="ident">blockchain</span>);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_err</span>(), <span class="string">"Should fail with missing input tx"</span>);
+ <span class="kw">let </span>result = verify_tx(<span class="kw-2">&</span>signed_tx, <span class="kw-2">&</span>database, <span class="kw-2">&</span>blockchain);
+ <span class="macro">assert!</span>(result.is_err(), <span class="string">"Should fail with missing input tx"</span>);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">result</span>, <span class="prelude-val">Err</span>(<span class="ident">VerifyError::MissingInputTx</span>(<span class="ident">txid</span>)) <span class="kw">if</span> <span class="ident">txid</span> <span class="op">==</span> <span class="ident">prev_tx</span>.<span class="ident">txid</span>()),
- <span class="string">"Error should be a `MissingInputTx` error"</span>
- );
+ <span class="macro">matches!</span>(result, <span class="prelude-val">Err</span>(VerifyError::MissingInputTx(txid)) <span class="kw">if </span>txid == prev_tx.txid()),
+ <span class="string">"Error should be a `MissingInputTx` error"
+ </span>);
- <span class="comment">// insert the prev_tx</span>
- <span class="ident">database</span>.<span class="ident">set_raw_tx</span>(<span class="kw-2">&</span><span class="ident">prev_tx</span>).<span class="ident">unwrap</span>();
+ <span class="comment">// insert the prev_tx
+ </span>database.set_raw_tx(<span class="kw-2">&</span>prev_tx).unwrap();
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">verify_tx</span>(<span class="kw-2">&</span><span class="ident">unsigned_tx</span>, <span class="kw-2">&</span><span class="ident">database</span>, <span class="kw-2">&</span><span class="ident">blockchain</span>);
- <span class="macro">assert!</span>(<span class="ident">result</span>.<span class="ident">is_err</span>(), <span class="string">"Should fail since the TX is unsigned"</span>);
+ <span class="kw">let </span>result = verify_tx(<span class="kw-2">&</span>unsigned_tx, <span class="kw-2">&</span>database, <span class="kw-2">&</span>blockchain);
+ <span class="macro">assert!</span>(result.is_err(), <span class="string">"Should fail since the TX is unsigned"</span>);
<span class="macro">assert!</span>(
- <span class="macro">matches!</span>(<span class="ident">result</span>, <span class="prelude-val">Err</span>(<span class="ident">VerifyError::Consensus</span>(<span class="kw">_</span>))),
- <span class="string">"Error should be a `Consensus` error"</span>
- );
+ <span class="macro">matches!</span>(result, <span class="prelude-val">Err</span>(VerifyError::Consensus(<span class="kw">_</span>))),
+ <span class="string">"Error should be a `Consensus` error"
+ </span>);
- <span class="kw">let</span> <span class="ident">result</span> <span class="op">=</span> <span class="ident">verify_tx</span>(<span class="kw-2">&</span><span class="ident">signed_tx</span>, <span class="kw-2">&</span><span class="ident">database</span>, <span class="kw-2">&</span><span class="ident">blockchain</span>);
+ <span class="kw">let </span>result = verify_tx(<span class="kw-2">&</span>signed_tx, <span class="kw-2">&</span>database, <span class="kw-2">&</span>blockchain);
<span class="macro">assert!</span>(
- <span class="ident">result</span>.<span class="ident">is_ok</span>(),
- <span class="string">"Should work since the TX is correctly signed"</span>
- );
+ result.is_ok(),
+ <span class="string">"Should work since the TX is correctly signed"
+ </span>);
}
}
</code></pre></div>
-</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
-</body></html>
\ No newline at end of file
+</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0-nightly (0f529f0f4 2022-12-13)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>
\ No newline at end of file
--- /dev/null
+These documentation pages include resources by third parties. This copyright
+file applies only to those resources. The following third party resources are
+included, and carry their own copyright notices and license terms:
+
+* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2):
+
+ Copyright (c) 2014, Mozilla Foundation https://mozilla.org/
+ with Reserved Font Name Fira Sans.
+
+ Copyright (c) 2014, Telefonica S.A.
+
+ Licensed under the SIL Open Font License, Version 1.1.
+ See FiraSans-LICENSE.txt.
+
+* rustdoc.css, main.js, and playpen.js:
+
+ Copyright 2015 The Rust Developers.
+ Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or
+ the MIT license (LICENSE-MIT.txt) at your option.
+
+* normalize.css:
+
+ Copyright (c) Nicolas Gallagher and Jonathan Neal.
+ Licensed under the MIT license (see LICENSE-MIT.txt).
+
+* Source Code Pro (SourceCodePro-Regular.ttf.woff2,
+ SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2):
+
+ Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/),
+ with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark
+ of Adobe Systems Incorporated in the United States and/or other countries.
+
+ Licensed under the SIL Open Font License, Version 1.1.
+ See SourceCodePro-LICENSE.txt.
+
+* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2,
+ SourceSerif4-It.ttf.woff2):
+
+ Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name
+ 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United
+ States and/or other countries.
+
+ Licensed under the SIL Open Font License, Version 1.1.
+ See SourceSerif4-LICENSE.md.
+
+This copyright file is intended to be distributed with rustdoc output.
--- /dev/null
+Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A.
+with Reserved Font Name < Fira >,
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
--- /dev/null
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
--- /dev/null
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
--- /dev/null
+Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/),
+
+with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic,
+NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen,
+Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco,
+NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic,
+Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
--- /dev/null
+Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
--- /dev/null
+Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
--- /dev/null
+ :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--example-line-numbers-border-color:none;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--tooltip-background-color:#314559;--tooltip-color:#c5c5c5;--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--source-sidebar-background-selected:#14191f;--source-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;}h1,h2,h3,h4{color:white;}h1 a{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}.item-info code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;}.sidebar .current,.sidebar a:hover{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:4px;border-right:1px solid #ffb44c;}.search-results a:hover{color:#fff !important;background-color:#3c3c3c;}.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.sidebar h2 a,.sidebar h3 a{color:white;}body.source .example-wrap pre.rust a{background:#333;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}pre.rust .lifetime{}pre.rust .kw{}#titles>button:hover,#titles>button.selected{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute{}pre.rust .kw-2,pre.rust .prelude-ty{}#settings-menu>a img{filter:invert(100);}#source-sidebar>.title{color:#fff;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus,#source-sidebar div.files>a.selected{color:#ffb44c;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;}
\ No newline at end of file
--- /dev/null
+<svg width="24" height="25" viewBox="0 0 24 25" xmlns="http://www.w3.org/2000/svg" aria-label="Copy to clipboard"><path d="M18 20h2v3c0 1-1 2-2 2H2c-.998 0-2-1-2-2V5c0-.911.755-1.667 1.667-1.667h5A3.323 3.323 0 0110 0a3.323 3.323 0 013.333 3.333h5C19.245 3.333 20 4.09 20 5v8.333h-2V9H2v14h16v-3zM3 7h14c0-.911-.793-1.667-1.75-1.667H13.5c-.957 0-1.75-.755-1.75-1.666C11.75 2.755 10.957 2 10 2s-1.75.755-1.75 1.667c0 .911-.793 1.666-1.75 1.666H4.75C3.793 5.333 3 6.09 3 7z"/><path d="M4 19h6v2H4zM12 11H4v2h8zM4 17h4v-2H4zM15 15v-3l-4.5 4.5L15 21v-3l8.027-.032L23 15z"/></svg>
--- /dev/null
+:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--example-line-numbers-border-color:#4a4949;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--tooltip-background-color:#000;--tooltip-color:#fff;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--source-sidebar-background-selected:#333;--source-sidebar-background-hover:#444;--table-alt-row-background-color:#2A2A2A;}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#333;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;}
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" width="128" height="128" enable-background="new 0 0 128 128" version="1.1" viewBox="-30 -20 176 176" xml:space="preserve"><g><line x1="111" x2="64" y1="40.5" y2="87.499" fill="none" stroke="#000000" stroke-linecap="square" stroke-miterlimit="10" stroke-width="12"/><line x1="64" x2="17" y1="87.499" y2="40.5" fill="none" stroke="#000000" stroke-linecap="square" stroke-miterlimit="10" stroke-width="12"/></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;">
+<defs>
+ <style type="text/css"><![CDATA[
+ #logo {
+ fill-rule: nonzero;
+ }
+ #logo-teeth {
+ stroke: #000000;
+ stroke-width: 0.92px;
+ }
+ @media (prefers-color-scheme: dark) {
+ #logo {
+ fill: #FFFFFF;
+ fill-rule: nonzero;
+ }
+ #logo-teeth {
+ fill: #FFFFFF;
+ stroke: #FFFFFF;
+ stroke-width: 0.92px;
+ }
+ }
+ ]]></style>
+</defs>
+<path id="logo" d="M15.993,1.54c-7.972,0 -14.461,6.492 -14.461,14.462c0,7.969 6.492,14.461 14.461,14.461c7.97,0 14.462,-6.492 14.462,-14.461c0,-7.97 -6.492,-14.462 -14.462,-14.462Zm-0.021,1.285c0.511,0.013 0.924,0.439 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.01,0 0.019,0.001 0.028,0.001Zm2.178,1.566c3.379,0.633 6.313,2.723 8.016,5.709l-1.123,2.533c-0.193,0.438 0.006,0.952 0.44,1.147l2.16,0.958c0.067,0.675 0.076,1.355 0.025,2.031l-1.202,0c-0.12,0 -0.169,0.08 -0.169,0.196l0,0.551c0,1.297 -0.731,1.582 -1.373,1.652c-0.612,0.07 -1.288,-0.257 -1.374,-0.63c-0.361,-2.029 -0.961,-2.46 -1.909,-3.21c1.178,-0.746 2.401,-1.85 2.401,-3.325c0,-1.594 -1.092,-2.597 -1.835,-3.09c-1.046,-0.688 -2.203,-0.826 -2.515,-0.826l-12.421,0c1.717,-1.918 4.02,-3.218 6.55,-3.696l1.466,1.536c0.33,0.346 0.878,0.361 1.223,0.028l1.64,-1.564Zm-13.522,7.043c0.511,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.951 0.951,-0.951c0.009,0 0.019,0 0.028,0Zm22.685,0.043c0.511,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.01,0 0.019,0 0.028,0.001Zm-20.892,0.153l1.658,0l0,7.477l-3.347,0c-0.414,-1.452 -0.542,-2.97 -0.38,-4.47l2.05,-0.912c0.438,-0.195 0.637,-0.706 0.441,-1.144l-0.422,-0.951Zm6.92,0.079l3.949,0c0.205,0 1.441,0.236 1.441,1.163c0,0.768 -0.948,1.043 -1.728,1.043l-3.665,0l0.003,-2.206Zm0,5.373l3.026,0c0.275,0 1.477,0.079 1.86,1.615c0.119,0.471 0.385,2.007 0.566,2.499c0.18,0.551 0.911,1.652 1.691,1.652l4.938,0c-0.331,0.444 -0.693,0.863 -1.083,1.255l-2.01,-0.432c-0.468,-0.101 -0.93,0.199 -1.031,0.667l-0.477,2.228c-3.104,1.406 -6.672,1.389 -9.762,-0.046l-0.478,-2.228c-0.101,-0.468 -0.56,-0.767 -1.028,-0.667l-1.967,0.423c-0.365,-0.377 -0.704,-0.778 -1.016,-1.2l9.567,0c0.107,0 0.181,-0.018 0.181,-0.119l0,-3.384c0,-0.097 -0.074,-0.119 -0.181,-0.119l-2.799,0l0.003,-2.144Zm-4.415,7.749c0.512,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.429,0.952 -0.951,0.952c-0.522,0 -0.952,-0.43 -0.952,-0.952c0,0 0,0 0,0c0,-0.522 0.43,-0.952 0.952,-0.952c0.009,0 0.018,0.001 0.027,0.001Zm14.089,0.043c0.511,0.015 0.924,0.439 0.923,0.951c0,0.522 -0.429,0.952 -0.951,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.009,0 0.018,0 0.028,0.001Z"/><path id="logo-teeth" d="M29.647,16.002c0,7.49 -6.163,13.653 -13.654,13.653c-7.49,0 -13.654,-6.163 -13.654,-13.653c0,-7.491 6.164,-13.654 13.654,-13.654c7.491,0 13.654,6.163 13.654,13.654Zm-0.257,-1.319l2.13,1.319l-2.13,1.318l1.83,1.71l-2.344,0.878l1.463,2.035l-2.475,0.404l1.04,2.282l-2.506,-0.089l0.575,2.442l-2.441,-0.576l0.089,2.506l-2.283,-1.04l-0.403,2.475l-2.035,-1.462l-0.878,2.343l-1.71,-1.829l-1.319,2.129l-1.318,-2.129l-1.71,1.829l-0.878,-2.343l-2.035,1.462l-0.404,-2.475l-2.282,1.04l0.089,-2.506l-2.442,0.576l0.575,-2.442l-2.505,0.089l1.04,-2.282l-2.475,-0.404l1.462,-2.035l-2.343,-0.878l1.829,-1.71l-2.129,-1.318l2.129,-1.319l-1.829,-1.71l2.343,-0.878l-1.462,-2.035l2.475,-0.404l-1.04,-2.282l2.505,0.089l-0.575,-2.441l2.442,0.575l-0.089,-2.506l2.282,1.04l0.404,-2.475l2.035,1.463l0.878,-2.344l1.71,1.83l1.318,-2.13l1.319,2.13l1.71,-1.83l0.878,2.344l2.035,-1.463l0.403,2.475l2.283,-1.04l-0.089,2.506l2.441,-0.575l-0.575,2.441l2.506,-0.089l-1.04,2.282l2.475,0.404l-1.463,2.035l2.344,0.878l-1.83,1.71Z"/></svg>
--- /dev/null
+:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#F5F5F5;--sidebar-background-color-hover:#E0E0E0;--code-block-background-color:#F5F5F5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-results-alias-color:#000;--search-results-grey-color:#999;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--example-line-numbers-border-color:#c7c7c7;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--tooltip-background-color:#000;--tooltip-color:#fff;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--source-sidebar-background-selected:#fff;--source-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#F5F5F5;}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#eee;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}.scraped-example-list .scrape-help{border-color:#555;color:#333;}.scraped-example-list .scrape-help:hover{border-color:black;color:black;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.toggle-line-inner{background:#ccc;}.toggle-line:hover .toggle-line-inner{background:#999;}
\ No newline at end of file
--- /dev/null
+"use strict";function getVar(name){const el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileLocationTitle=document.querySelector(".mobile-topbar h2");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function loadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadCss(getVar("static-root-path")+getVar("settings-css"));loadScript(getVar("static-root-path")+getVar("settings-js"))};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:()=>{switchDisplayedElement(null);document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="<h3 class=\"search-loading\">"+searchState.loadingText+"</h3>";searchState.showResults(search)},};function getPageId(){if(window.location.hash){const tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();switchDisplayedElement(null);if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`<a href="index.html#${id}">${longty}</a>`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const item of filtered){const name=item[0];const desc=item[1];let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;link.title=desc;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Definitions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector("h1.fqn > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=script?script.getAttribute("data-ignore-extern-crates"):"";for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.indexOf(lib)!==-1){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&href.indexOf("http")!==0){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}});const pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i<count;++i){elems.push(i+1)}const node=document.createElement("pre");addClass(node,"example-line-numbers");node.innerHTML=elems.join("\n");parent.insertBefore(node,x)})};window.rustdoc_remove_line_numbers_from_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}let oldSidebarScrollPosition=null;window.rustdocMobileScrollLock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(window.innerWidth<=window.RUSTDOC_MOBILE_BREAKPOINT){oldSidebarScrollPosition=window.scrollY;document.body.style.width=`${document.body.offsetWidth}px`;document.body.style.position="fixed";document.body.style.top=`-${oldSidebarScrollPosition}px`;if(mobile_topbar){mobile_topbar.style.top=`${oldSidebarScrollPosition}px`;mobile_topbar.style.position="relative"}}else{oldSidebarScrollPosition=null}};window.rustdocMobileScrollUnlock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(oldSidebarScrollPosition!==null){document.body.style.width="";document.body.style.position="";document.body.style.top="";if(mobile_topbar){mobile_topbar.style.top="";mobile_topbar.style.position=""}window.scrollTo(0,oldSidebarScrollPosition);oldSidebarScrollPosition=null}};function showSidebar(){window.hideAllModals(false);window.rustdocMobileScrollLock();const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){window.rustdocMobileScrollUnlock();const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.innerWidth>window.RUSTDOC_MOBILE_BREAKPOINT&&oldSidebarScrollPosition!==null){hideSidebar()}if(window.CURRENT_NOTABLE_ELEMENT){const base=window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE;const force_visible=base.NOTABLE_FORCE_VISIBLE;hideNotable(false);if(force_visible){showNotable(base);base.NOTABLE_FORCE_VISIBLE=true}}});function handleClick(id,f){const elem=document.getElementById(id);if(elem){elem.addEventListener("click",f)}}handleClick(MAIN_ID,()=>{hideSidebar()});onEachLazy(document.getElementsByTagName("a"),el=>{if(el.hash){el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})}});onEachLazy(document.querySelectorAll(".rustdoc-toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showNotable(e){if(!window.NOTABLE_TRAITS){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showNotable() called on page without any notable traits!")}}if(window.CURRENT_NOTABLE_ELEMENT&&window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE===e){return}window.hideAllModals(false);const ty=e.getAttribute("data-ty");const wrapper=document.createElement("div");wrapper.innerHTML="<div class=\"docblock\">"+window.NOTABLE_TRAITS[ty]+"</div>";wrapper.className="notable popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideNotable;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_NOTABLE_ELEMENT=wrapper;window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE=e;wrapper.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!e.NOTABLE_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,e)){hideNotable(true)}}}function notableBlurHandler(event){if(window.CURRENT_NOTABLE_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_NOTABLE_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE)){setTimeout(()=>hideNotable(false),0)}}function hideNotable(focus){if(window.CURRENT_NOTABLE_ELEMENT){if(window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE){if(focus){window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.focus()}window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_NOTABLE_ELEMENT);window.CURRENT_NOTABLE_ELEMENT=null}}onEachLazy(document.getElementsByClassName("notable-traits"),e=>{e.onclick=function(){this.NOTABLE_FORCE_VISIBLE=this.NOTABLE_FORCE_VISIBLE?false:true;if(window.CURRENT_NOTABLE_ELEMENT&&!this.NOTABLE_FORCE_VISIBLE){hideNotable(true)}else{showNotable(this);window.CURRENT_NOTABLE_ELEMENT.setAttribute("tabindex","0");window.CURRENT_NOTABLE_ELEMENT.focus();window.CURRENT_NOTABLE_ELEMENT.onblur=notableBlurHandler}return false};e.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}showNotable(this)};e.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!this.NOTABLE_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT)){hideNotable(true)}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \
+ <a href=\"https://doc.rust-lang.org/rustdoc/\">the rustdoc book</a>.";const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"<dt>"+x[0].split(" ").map((y,index)=>((index&1)===0?"<kbd>"+y+"</kbd>":" "+y+" ")).join("")+"</dt><dd>"+x[1]+"</dd>").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="<h2>Keyboard Shortcuts</h2><dl>"+shortcuts+"</dl></div>";const infos=["Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to \
+ restrict the search to a given item kind.","Accepted kinds are: <code>fn</code>, <code>mod</code>, <code>struct</code>, \
+ <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, \
+ and <code>const</code>.","Search functions by type signature (e.g., <code>vec -> usize</code> or \
+ <code>-> vec</code>)","Search multiple things at once by splitting your query with comma (e.g., \
+ <code>str,u8</code> or <code>String,struct:Vec,test</code>)","You can look for items with an exact name by putting double quotes around \
+ your request: <code>\"string\"</code>","Look for items inside another one by searching for a path: <code>vec::Vec</code>",].map(x=>"<p>"+x+"</p>").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="<h2>Search Tricks</h2>"+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;container.onclick=event=>{event.preventDefault()};help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=function(switchFocus){hideSidebar();window.hidePopoverMenus();hideNotable(switchFocus)};window.hidePopoverMenus=function(){onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;window.copy_path=but=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}())
\ No newline at end of file
--- /dev/null
+ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
\ No newline at end of file
--- /dev/null
+ #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.source .sidebar{display:none;}.notable-traits{display:none;}
\ No newline at end of file
--- /dev/null
+<svg version="1.1" height="106" width="106" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="logo" transform="translate(53, 53)">
+ <path id="r" transform="translate(0.5, 0.5)" stroke="black" stroke-width="1" stroke-linejoin="round" d="
+ M -9,-15 H 4 C 12,-15 12,-7 4,-7 H -9 Z
+ M -40,22 H 0 V 11 H -9 V 3 H 1 C 12,3 6,22 15,22 H 40
+ V 3 H 34 V 5 C 34,13 25,12 24,7 C 23,2 19,-2 18,-2 C 33,-10 24,-26 12,-26 H -35
+ V -15 H -25 V 11 H -40 Z" />
+ <g id="gear" mask="url(#holes)">
+ <circle r="43" fill="none" stroke="black" stroke-width="9" />
+ <g id="cogs">
+ <polygon id="cog" stroke="black" stroke-width="3" stroke-linejoin="round" points="46,3 51,0 46,-3" />
+ <use xlink:href="#cog" transform="rotate(11.25)" />
+ <use xlink:href="#cog" transform="rotate(22.50)" />
+ <use xlink:href="#cog" transform="rotate(33.75)" />
+ <use xlink:href="#cog" transform="rotate(45.00)" />
+ <use xlink:href="#cog" transform="rotate(56.25)" />
+ <use xlink:href="#cog" transform="rotate(67.50)" />
+ <use xlink:href="#cog" transform="rotate(78.75)" />
+ <use xlink:href="#cog" transform="rotate(90.00)" />
+ <use xlink:href="#cog" transform="rotate(101.25)" />
+ <use xlink:href="#cog" transform="rotate(112.50)" />
+ <use xlink:href="#cog" transform="rotate(123.75)" />
+ <use xlink:href="#cog" transform="rotate(135.00)" />
+ <use xlink:href="#cog" transform="rotate(146.25)" />
+ <use xlink:href="#cog" transform="rotate(157.50)" />
+ <use xlink:href="#cog" transform="rotate(168.75)" />
+ <use xlink:href="#cog" transform="rotate(180.00)" />
+ <use xlink:href="#cog" transform="rotate(191.25)" />
+ <use xlink:href="#cog" transform="rotate(202.50)" />
+ <use xlink:href="#cog" transform="rotate(213.75)" />
+ <use xlink:href="#cog" transform="rotate(225.00)" />
+ <use xlink:href="#cog" transform="rotate(236.25)" />
+ <use xlink:href="#cog" transform="rotate(247.50)" />
+ <use xlink:href="#cog" transform="rotate(258.75)" />
+ <use xlink:href="#cog" transform="rotate(270.00)" />
+ <use xlink:href="#cog" transform="rotate(281.25)" />
+ <use xlink:href="#cog" transform="rotate(292.50)" />
+ <use xlink:href="#cog" transform="rotate(303.75)" />
+ <use xlink:href="#cog" transform="rotate(315.00)" />
+ <use xlink:href="#cog" transform="rotate(326.25)" />
+ <use xlink:href="#cog" transform="rotate(337.50)" />
+ <use xlink:href="#cog" transform="rotate(348.75)" />
+ </g>
+ <g id="mounts">
+ <polygon id="mount" stroke="black" stroke-width="6" stroke-linejoin="round" points="-7,-42 0,-35 7,-42" />
+ <use xlink:href="#mount" transform="rotate(72)" />
+ <use xlink:href="#mount" transform="rotate(144)" />
+ <use xlink:href="#mount" transform="rotate(216)" />
+ <use xlink:href="#mount" transform="rotate(288)" />
+ </g>
+ </g>
+ <mask id="holes">
+ <rect x="-60" y="-60" width="120" height="120" fill="white"/>
+ <circle id="hole" cy="-40" r="3" />
+ <use xlink:href="#hole" transform="rotate(72)" />
+ <use xlink:href="#hole" transform="rotate(144)" />
+ <use xlink:href="#hole" transform="rotate(216)" />
+ <use xlink:href="#hole" transform="rotate(288)" />
+ </mask>
+</g>
+</svg>
--- /dev/null
+ @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}h1.fqn{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-left>a,.out-of-band,span.since,a.srclink,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name .primitive>i,.result-name .keyword>i{color:var(--main-color);}.content span.enum,.content a.enum,.content span.struct,.content a.struct,.content span.union,.content a.union,.content span.primitive,.content a.primitive,.content span.type,.content a.type,.content span.foreigntype,.content a.foreigntype{color:var(--type-link-color);}.content span.trait,.content a.trait,.content span.traitalias,.content a.traitalias{color:var(--trait-link-color);}.content span.associatedtype,.content a.associatedtype,.content span.constant,.content a.constant,.content span.static,.content a.static{color:var(--assoc-item-link-color);}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod{color:var(--function-link-color);}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:var(--macro-link-color);}.content span.mod,.content a.mod{color:var(--mod-link-color);}.content span.keyword,.content a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}p:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}.source .content{overflow:visible;}.sub-logo-container,.logo-container{line-height:0;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:var(--sidebar-background-color);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar,#sidebar-toggle,#source-sidebar{background-color:var(--sidebar-background-color);}#sidebar-toggle>button:hover,#sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.source .sidebar>*:not(#sidebar-toggle){visibility:hidden;}.source-sidebar-expanded .source .sidebar{overflow-y:auto;flex-basis:300px;}.source-sidebar-expanded .source .sidebar>*:not(#sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a,.sidebar .current{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover{background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.source .content pre.rust{padding-left:0;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap>pre{margin:0;flex-grow:1;overflow-x:auto;}.rustdoc .example-wrap>pre.example-line-numbers,.rustdoc .example-wrap>pre.src-line-numbers{flex-grow:0;overflow:initial;text-align:right;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.example-line-numbers{border:1px solid;padding:13px 8px;border-top-left-radius:5px;border-bottom-left-radius:5px;border-color:var(--example-line-numbers-border-color);}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);}.src-line-numbers :target{background-color:transparent;border-right:none;padding-right:0;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;overflow:hidden;text-overflow:ellipsis;}.docblock>:not(pre)>code,.docblock-short>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.source .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.source nav.sub{margin:0 0 15px 0;}.source .search-form{margin-left:32px;}a{text-decoration:none;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor{display:initial;}.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap>pre.rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}@-moz-document url-prefix(){#crate-search{padding-left:0px;padding-right:19px;}}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url("down-arrow-927217e04c7463ac.svg");filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div{flex:1;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name span.alias{color:var(--search-results-alias-color);}.search-results .result-name span.grey{color:var(--search-results-grey-color);}.popover{position:absolute;top:100%;right:0;z-index:2;display:block;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;padding:4px;transform:rotate(-45deg);top:-5px;}.popover,.popover::before{background-color:var(--main-background-color);color:var(--main-color);}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;}.item-left .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;align-items:center;white-space:pre-wrap;border-radius:3px;display:inline-flex;vertical-align:text-bottom;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;}.example-wrap .tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;border:1px solid var(--border-color);position:absolute;width:max-content;top:-2px;z-index:1;background-color:var(--tooltip-background-color);color:var(--tooltip-color);}.example-wrap .tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;display:none;z-index:1;border:5px solid transparent;border-right-color:var(--tooltip-background-color);}.example-wrap.ignore .tooltip::after{content:"This example is not tested";}.example-wrap.compile_fail .tooltip::after{content:"This example deliberately fails to compile";}.example-wrap.should_panic .tooltip::after{content:"This example panics";}.example-wrap.edition .tooltip::after{content:"This code runs with edition " attr(data-edition);}.example-wrap .tooltip:hover::before,.example-wrap .tooltip:hover::after{display:inline;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.notable-traits{color:inherit;margin-right:15px;position:relative;}.notable-traits:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.notable .docblock{margin:0.25em 0.5em;}.notable .docblock pre,.notable .docblock code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#titles>button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#titles>button>div.count{display:inline-block;font-size:1rem;}#sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#source-sidebar{width:100%;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--source-sidebar-background-hover);}#source-sidebar div.files>a.selected{background-color:var(--source-sidebar-background-selected);}#sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a,#copy-path{width:33px;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;cursor:default;color:var(--kbd--color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary::after{content:" ►";position:absolute;left:-15px;top:0px;font-size:80%;padding:2px 0px;width:25px;}details[open].dir-entry>summary::after{content:" ▼";}details.dir-entry>summary::-webkit-details-marker,details.dir-entry>summary::marker{display:none;}details.dir-entry>summary{margin:0 0 0 13px;list-style:none;cursor:pointer;position:relative;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.rustdoc-toggle{contain:layout;position:relative;}details.rustdoc-toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.rustdoc-toggle>summary{list-style:none;outline:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{background:url("toggle-plus-1092eb4930d581b0.svg") no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.rustdoc-toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before{background:url("toggle-minus-31bbd6e4c77f5c96.svg") no-repeat top left;}details.rustdoc-toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .sidebar-logo,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.source main,.rustdoc.source .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.source-sidebar-expanded .source .sidebar,.sidebar:focus-within{left:0;}.rustdoc.source>.sidebar{width:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.content{margin-left:0px;}.anchor{display:none !important;}#titles>button>div.count{display:block;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}#sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.source-sidebar-expanded #sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-left,.item-right,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-right{padding-left:2em;}.source-sidebar-expanded .source .sidebar{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.source nav.sub{margin:0;padding:8px;}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.srclink,#copy-path,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle>summary::before,details.rustdoc-toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;}#sidebar-toggle{top:10px;}.source-sidebar-expanded #sidebar-toggle{top:unset;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.rustdoc-toggle>summary,.methods>section,.methods>.rustdoc-toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.impl-items>.rustdoc-toggle[open]:not(:last-child),.methods>.rustdoc-toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.rustdoc-toggle:not(:last-child),#synthetic-implementations-list .impl-items>.rustdoc-toggle:not(:last-child),#blanket-implementations-list .impl-items>.rustdoc-toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border-width:1px;border-style:solid;border-radius:50px;}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper:before,.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper:before{top:0;}.scraped-example:not(.expanded) .code-wrapper:after{bottom:0;}.scraped-example .code-wrapper .src-line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .src-line-numbers a,.scraped-example .code-wrapper .src-line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{display:grid;grid-template-columns:max-content auto;width:100%;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;margin-bottom:5px;cursor:pointer;}.more-scraped-examples{margin-left:5px;display:flex;flex-direction:row;}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;}.example-links ul{margin-bottom:0;}
\ No newline at end of file
--- /dev/null
+"use strict";(function(){const DEFAULT_MAX_LINES=5;const HIDDEN_MAX_LINES=10;function scrollToLoc(elt,loc,isHidden){const lines=elt.querySelector(".src-line-numbers");let scrollOffset;const maxLines=isHidden?HIDDEN_MAX_LINES:DEFAULT_MAX_LINES;if(loc[1]-loc[0]>maxLines){const line=Math.max(0,loc[0]-1);scrollOffset=lines.children[line].offsetTop}else{const wrapper=elt.querySelector(".code-wrapper");const halfHeight=wrapper.offsetHeight/2;const offsetTop=lines.children[loc[0]].offsetTop;const lastLine=lines.children[loc[1]];const offsetBot=lastLine.offsetTop+lastLine.offsetHeight;const offsetMid=(offsetTop+offsetBot)/2;scrollOffset=offsetMid-halfHeight}lines.scrollTo(0,scrollOffset);elt.querySelector(".rust").scrollTo(0,scrollOffset)}function updateScrapedExample(example,isHidden){const locs=JSON.parse(example.attributes.getNamedItem("data-locs").textContent);let locIndex=0;const highlights=Array.prototype.slice.call(example.querySelectorAll(".highlight"));const link=example.querySelector(".scraped-example-title a");if(locs.length>1){const onChangeLoc=changeIndex=>{removeClass(highlights[locIndex],"focus");changeIndex();scrollToLoc(example,locs[locIndex][0],isHidden);addClass(highlights[locIndex],"focus");const url=locs[locIndex][1];const title=locs[locIndex][2];link.href=url;link.innerHTML=title};example.querySelector(".prev").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex-1+locs.length)%locs.length})});example.querySelector(".next").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex+1)%locs.length})})}const expandButton=example.querySelector(".expand");if(expandButton){expandButton.addEventListener("click",()=>{if(hasClass(example,"expanded")){removeClass(example,"expanded");scrollToLoc(example,locs[0][0],isHidden)}else{addClass(example,"expanded")}})}scrollToLoc(example,locs[0][0],isHidden)}const firstExamples=document.querySelectorAll(".scraped-example-list > .scraped-example");onEachLazy(firstExamples,el=>updateScrapedExample(el,false));onEachLazy(document.querySelectorAll(".more-examples-toggle"),toggle=>{onEachLazy(toggle.querySelectorAll(".toggle-line, .hide-more"),button=>{button.addEventListener("click",()=>{toggle.open=false})});const moreExamples=toggle.querySelectorAll(".scraped-example");toggle.querySelector("summary").addEventListener("click",()=>{setTimeout(()=>{onEachLazy(moreExamples,el=>updateScrapedExample(el,true))})},{once:true})})})()
\ No newline at end of file
--- /dev/null
+"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("titles").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb}else if(nb!==0){printTab(0)}}const levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}const s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){let i1=0,i2=0,a,b,c,c2;const row=levenshtein_row2;while(i1<s1_len){row[i1]=++i1}while(i2<s2_len){c2=s2.charCodeAt(i2);a=i2;++i2;b=i2;for(i1=0;i1<s1_len;++i1){c=a+(s1.charCodeAt(i1)!==c2?1:0);a=row[i1];b=b<a?(b<c?b+1:c):(a<c?a+1:c);row[i1]=b}}return b}return s1_len+s2_len}function initSearch(rawSearchIndex){const MAX_LEV_DISTANCE=3;const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let currentResults;const ALIASES=Object.create(null);function isWhitespace(c){return" \t\n\r".indexOf(c)!==-1}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return",>-".indexOf(c)!==-1}function isStopCharacter(c){return isWhitespace(c)||isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){for(let i=0,len=itemTypes.length;i<len;++i){if(itemTypes[i]===typename){return i}}throw new Error("Unknown type filter `"+typename+"`")}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw new Error("`\"` cannot be used in generics")}else if(query.literalSearch){throw new Error("Cannot have more than one literal search element")}else if(parserState.totalElems-parserState.genericsElems>0){throw new Error("Cannot use literal search when there is more than one element")}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw new Error("Unclosed `\"`")}else if(parserState.userQuery[end]!=="\""){throw new Error(`Unexpected \`${parserState.userQuery[end]}\` in a string element`)}else if(start===end){throw new Error("Cannot have empty string element")}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||isWhitespaceCharacter(c)}function isWhitespaceCharacter(c){return c===" "||c==="\t"}function createQueryElement(query,parserState,name,generics,isInGenerics){if(name==="*"||(name.length===0&&generics.length===0)){return}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw new Error("You cannot have more than one element if you use quotes")}const pathSegments=name.split("::");if(pathSegments.length>1){for(let i=0,len=pathSegments.length;i<len;++i){const pathSegment=pathSegments[i];if(pathSegment.length===0){if(i===0){throw new Error("Paths cannot start with `::`")}else if(i+1===len){throw new Error("Paths cannot end with `::`")}throw new Error("Unexpected `::::`")}}}if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){throw new Error("Found generics without a path")}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}return{name:name,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast:pathSegments[pathSegments.length-1],generics:generics,}}function getIdentEndPosition(parserState){let end=parserState.pos;let foundExclamation=false;while(parserState.pos<parserState.length){const c=parserState.userQuery[parserState.pos];if(!isIdentCharacter(c)){if(c==="!"){if(foundExclamation){throw new Error("Cannot have more than one `!` in an ident")}else if(parserState.pos+1<parserState.length&&isIdentCharacter(parserState.userQuery[parserState.pos+1])){throw new Error("`!` can only be at the end of an ident")}foundExclamation=true}else if(isErrorCharacter(c)){throw new Error(`Unexpected \`${c}\``)}else if(isStopCharacter(c)||isSpecialStartCharacter(c)||isSeparatorCharacter(c)){break}else if(c===":"){if(!isPathStart(parserState)){break}parserState.pos+=1;foundExclamation=false}else{throw new Error(`Unexpected \`${c}\``)}}parserState.pos+=1;end=parserState.pos}return end}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];let start=parserState.pos;let end;if(parserState.userQuery[parserState.pos]==="\""){start+=1;getStringElem(query,parserState,isInGenerics);end=parserState.pos-1}else{end=getIdentEndPosition(parserState)}if(parserState.pos<parserState.length&&parserState.userQuery[parserState.pos]==="<"){if(isInGenerics){throw new Error("Unexpected `<` after `<`")}else if(start>=end){throw new Error("Found generics without a path")}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;while(parserState.pos<parserState.length){const c=parserState.userQuery[parserState.pos];if(c===endChar){break}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;continue}else if(c===":"&&isPathStart(parserState)){throw new Error("Unexpected `::`: paths cannot start with `::`")}else if(c===":"||isEndCharacter(c)){let extra="";if(endChar===">"){extra="`<`"}else if(endChar===""){extra="`->`"}throw new Error("Unexpected `"+c+"` after "+extra)}if(!foundStopChar){if(endChar!==""){throw new Error(`Expected \`,\`, \` \` or \`${endChar}\`, found \`${c}\``)}throw new Error(`Expected \`,\` or \` \`, found \`${c}\``)}const posBefore=parserState.pos;getNextElem(query,parserState,elems,endChar===">");if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}parserState.pos+=1}function checkExtraTypeFilterCharacters(parserState){const query=parserState.userQuery;for(let pos=0;pos<parserState.pos;++pos){if(!isIdentCharacter(query[pos])&&!isWhitespaceCharacter(query[pos])){throw new Error(`Unexpected \`${query[pos]}\` in type filter`)}}}function parseInput(query,parserState){let c,before;let foundStopChar=true;while(parserState.pos<parserState.length){c=parserState.userQuery[parserState.pos];if(isStopCharacter(c)){foundStopChar=true;if(isSeparatorCharacter(c)){parserState.pos+=1;continue}else if(c==="-"||c===">"){if(isReturnArrow(parserState)){break}throw new Error(`Unexpected \`${c}\` (did you mean \`->\`?)`)}throw new Error(`Unexpected \`${c}\``)}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw new Error("Unexpected `:`")}if(query.elems.length===0){throw new Error("Expected type filter before `:`")}else if(query.elems.length!==1||parserState.totalElems!==1){throw new Error("Unexpected `:`")}else if(query.literalSearch){throw new Error("You cannot use quotes on type filter")}checkExtraTypeFilterCharacters(parserState);parserState.typeFilter=query.elems.pop().name;parserState.pos+=1;parserState.totalElems=0;query.literalSearch=false;foundStopChar=true;continue}if(!foundStopChar){if(parserState.typeFilter!==null){throw new Error(`Expected \`,\`, \` \` or \`->\`, found \`${c}\``)}throw new Error(`Expected \`,\`, \` \`, \`:\` or \`->\`, found \`${c}\``)}before=query.elems.length;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}while(parserState.pos<parserState.length){c=parserState.userQuery[parserState.pos];if(isReturnArrow(parserState)){parserState.pos+=2;getItemsBefore(query,parserState,query.returned,"");if(query.returned.length===0){throw new Error("Expected at least one item after `->`")}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),typeFilter:NO_TYPE_FILTER,elems:[],returned:[],foundElems:0,literalSearch:false,error:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);if(parserState.typeFilter!==null){let typeFilter=parserState.typeFilter;if(typeFilter==="const"){typeFilter="constant"}query.typeFilter=itemTypeFromName(typeFilter)}}catch(err){query=newParsedQuery(userQuery);query.error=err.message;query.typeFilter=-1;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others={},results_in_args={},results_returned={};function transformResults(results){const duplicates={};const out=[];for(const result of results){if(result.id>-1){const obj=searchIndex[result.id];obj.lev=result.lev;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const ar=[];for(const entry in results){if(hasOwnPropertyRustdoc(results,entry)){const result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of results){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(results)}function checkGenerics(row,elem,defaultLev){if(row.generics.length===0){return elem.generics.length===0?defaultLev:MAX_LEV_DISTANCE+1}else if(row.generics.length>0&&row.generics[0].name===null){return checkGenerics(row.generics[0],elem,defaultLev)}let elem_name;if(elem.generics.length>0&&row.generics.length>=elem.generics.length){const elems=Object.create(null);for(const entry of row.generics){elem_name=entry.name;if(elem_name===""){if(checkGenerics(entry,elem,MAX_LEV_DISTANCE+1)!==0){return MAX_LEV_DISTANCE+1}continue}if(elems[elem_name]===undefined){elems[elem_name]=0}elems[elem_name]+=1}for(const generic of elem.generics){let match=null;if(elems[generic.name]){match=generic.name}else{for(elem_name in elems){if(!hasOwnPropertyRustdoc(elems,elem_name)){continue}if(elem_name===generic){match=elem_name;break}}}if(match===null){return MAX_LEV_DISTANCE+1}elems[match]-=1;if(elems[match]===0){delete elems[match]}}return 0}return MAX_LEV_DISTANCE+1}function checkIfInGenerics(row,elem){let lev=MAX_LEV_DISTANCE+1;for(const entry of row.generics){lev=Math.min(checkType(entry,elem,true),lev);if(lev===0){break}}return lev}function checkType(row,elem,literalSearch){if(row.name===null){if(row.generics.length>0){return checkIfInGenerics(row,elem)}return MAX_LEV_DISTANCE+1}let lev=levenshtein(row.name,elem.name);if(literalSearch){if(lev!==0){if(elem.generics.length===0){const checkGeneric=row.generics.length>0;if(checkGeneric&&row.generics.findIndex(tmp_elem=>tmp_elem.name===elem.name)!==-1){return 0}}return MAX_LEV_DISTANCE+1}else if(elem.generics.length>0){return checkGenerics(row,elem,MAX_LEV_DISTANCE+1)}return 0}else if(row.generics.length>0){if(elem.generics.length===0){if(lev===0){return 0}lev=checkIfInGenerics(row,elem);return lev+0.5}else if(lev>MAX_LEV_DISTANCE){return checkIfInGenerics(row,elem)}else{const tmp_lev=checkGenerics(row,elem,lev);if(tmp_lev>MAX_LEV_DISTANCE){return MAX_LEV_DISTANCE+1}return(tmp_lev+lev)/2}}else if(elem.generics.length>0){return MAX_LEV_DISTANCE+1}return lev}function findArg(row,elem,typeFilter){let lev=MAX_LEV_DISTANCE+1;if(row&&row.type&&row.type.inputs&&row.type.inputs.length>0){for(const input of row.type.inputs){if(!typePassesFilter(typeFilter,input.ty)){continue}lev=Math.min(lev,checkType(input,elem,parsedQuery.literalSearch));if(lev===0){return 0}}}return parsedQuery.literalSearch?MAX_LEV_DISTANCE+1:lev}function checkReturned(row,elem,typeFilter){let lev=MAX_LEV_DISTANCE+1;if(row&&row.type&&row.type.output.length>0){const ret=row.type.output;for(const ret_ty of ret){if(!typePassesFilter(typeFilter,ret_ty.ty)){continue}lev=Math.min(lev,checkType(ret_ty,elem,parsedQuery.literalSearch));if(lev===0){return 0}}}return parsedQuery.literalSearch?MAX_LEV_DISTANCE+1:lev}function checkPath(contains,ty){if(contains.length===0){return 0}let ret_lev=MAX_LEV_DISTANCE+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return MAX_LEV_DISTANCE+1}for(let i=0;i<length;++i){if(i+clength>length){break}let lev_total=0;let aborted=false;for(let x=0;x<clength;++x){const lev=levenshtein(path[i+x],contains[x]);if(lev>MAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES[filterCrates]&&ALIASES[filterCrates][lowerQuery]){const query_aliases=ALIASES[filterCrates][lowerQuery];for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{Object.keys(ALIASES).forEach(crate=>{if(ALIASES[crate][lowerQuery]){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=ALIASES[crate][lowerQuery];for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}})}const sortFunc=(aaa,bbb)=>{if(aaa.path<bbb.path){return 1}else if(aaa.path===bbb.path){return 0}return-1};crateAliases.sort(sortFunc);aliases.sort(sortFunc);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,lev){if(lev===0||(!parsedQuery.literalSearch&&lev<=MAX_LEV_DISTANCE)){if(results[fullId]!==undefined){const result=results[fullId];if(result.dontValidate||result.lev<=lev){return}}results[fullId]={id:id,index:index,dontValidate:parsedQuery.literalSearch,lev:lev,}}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let lev,lev_add=0,index=-1;const fullId=row.id;const in_args=findArg(row,elem,parsedQuery.typeFilter);const returned=checkReturned(row,elem,parsedQuery.typeFilter);addIntoResults(results_in_args,fullId,pos,index,in_args);addIntoResults(results_returned,fullId,pos,index,returned);if(!typePassesFilter(parsedQuery.typeFilter,row.ty)){return}const searchWord=searchWords[pos];if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,-1,0)}return}if(elem.name.length===0){if(row.type!==null){lev=checkGenerics(row.type,elem,MAX_LEV_DISTANCE+1);addIntoResults(results_others,fullId,pos,index,lev)}return}if(elem.fullPath.length>1){lev=checkPath(elem.pathWithoutLast,row);if(lev>MAX_LEV_DISTANCE||(parsedQuery.literalSearch&&lev!==0)){return}else if(lev>0){lev_add=lev/10}}if(searchWord.indexOf(elem.pathLast)>-1||row.normalizedName.indexOf(elem.pathLast)>-1){index=row.normalizedName.indexOf(elem.pathLast)}lev=levenshtein(searchWord,elem.pathLast);if(lev>0&&elem.pathLast.length>2&&searchWord.indexOf(elem.pathLast)>-1){if(elem.pathLast.length<6){lev=1}else{lev=0}}lev+=lev_add;if(lev>MAX_LEV_DISTANCE){return}else if(index!==-1&&elem.fullPath.length<2){lev-=1}if(lev<0){lev=0}addIntoResults(results_others,fullId,pos,index,lev)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let totalLev=0;let nbLev=0;function checkArgs(elems,callback){for(const elem of elems){const lev=callback(row,elem,NO_TYPE_FILTER);if(lev<=1){nbLev+=1;totalLev+=lev}else{return false}}return true}if(!checkArgs(parsedQuery.elems,findArg)){return}if(!checkArgs(parsedQuery.returned,checkReturned)){return}if(nbLev===0){return}const lev=Math.round(totalLev/nbLev);addIntoResults(results,row.id,pos,0,lev)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i<nSearchWords;++i){handleSingleArg(searchIndex[i],i,elem,results_others,results_in_args,results_returned)}}else if(parsedQuery.returned.length===1){elem=parsedQuery.returned[0];for(i=0,nSearchWords=searchWords.length;i<nSearchWords;++i){row=searchIndex[i];in_returned=checkReturned(row,elem,parsedQuery.typeFilter);addIntoResults(results_others,row.id,i,-1,in_returned)}}}else if(parsedQuery.foundElems>0){for(i=0,nSearchWords=searchWords.length;i<nSearchWords;++i){handleArgs(searchIndex[i],i,results_others)}}}if(parsedQuery.error===null){innerRunQuery()}const ret=createQueryResults(sortResults(results_in_args,true,currentCrate),sortResults(results_returned,true,currentCrate),sortResults(results_others,false,currentCrate),parsedQuery);handleAliases(ret,parsedQuery.original.replace(/"/g,""),filterCrates,currentCrate);if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}function validateResult(name,path,keys,parent){if(!keys||!keys.length){return true}for(const key of keys){if(!(name.indexOf(key)>-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||levenshtein(name,key)<=MAX_LEV_DISTANCE)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp="<span>"+path.replace(/::/g,"::</span><span>");if(tmp.endsWith("<span>")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];length+=1;let extra="";if(type==="primitive"){extra=" <i>(primitive type)</i>"}else if(type==="keyword"){extra=" <i>(keyword)</i>"}const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){const alias=document.createElement("span");alias.className="alias";const bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend","<span class=\"grey\"><i> - see </i></span>");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+"<span class=\""+type+"\">"+name+extra+"</span>");link.appendChild(resultName);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(<br/>"+"Try on <a href=\"https://duckduckgo.com/?q="+encodeURIComponent("rust "+query.userQuery)+"\">DuckDuckGo</a>?<br/><br/>"+"Or try looking in one of these:<ul><li>The <a "+"href=\"https://doc.rust-lang.org/reference/index.html\">Rust Reference</a> "+" for technical details about the language.</li><li><a "+"href=\"https://doc.rust-lang.org/rust-by-example/index.html\">Rust By "+"Example</a> for expository code examples.</a></li><li>The <a "+"href=\"https://doc.rust-lang.org/book/index.html\">Rust Book</a> for "+"introductions to language features and the language itself.</li><li><a "+"href=\"https://docs.rs\">Docs.rs</a> for documentation of crates released on"+" <a href=\"https://crates.io/\">crates.io</a>.</li></ul>"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return"<button class=\"selected\">"+text+" <div class=\"count\">("+nbElems+")</div></button>"}return"<button>"+text+" <div class=\"count\">("+nbElems+")</div></button>"}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in <div id=\"crate-search-div\"><select id=\"crate-search\">"+"<option value=\"all crates\">all crates</option>";for(const c of crates_list){crates+=`<option value="${c}" ${c === filterCrates && "selected"}>${c}</option>`}crates+="</select></div>"}let output=`<h1 class="search-results-title">Results${crates}</h1>`;if(results.query.error!==null){output+=`<h3>Query parser error: "${results.query.error}".</h3>`;output+="<div id=\"titles\">"+makeTabHeader(0,"In Names",ret_others[1])+"</div>";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="<div id=\"titles\">"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"</div>"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="<div id=\"titles\">"+makeTabHeader(0,signatureTabTitle,ret_others[1])+"</div>";currentTab=0}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("titles").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";if(browserSupportsHistoryApi()){const newURL=buildUrl(query.original,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;return types.map(type=>{let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}return{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:generics,}})}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){const pathIndex=functionSearchType[INPUTS_DATA];inputs=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){const pathIndex=functionSearchType[OUTPUT_DATA];output=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}return{inputs,output,}}function buildIndex(rawSearchIndex){searchIndex=[];const searchWords=[];let i,word;let currentIndex=0;let id=0;for(const crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}let crateSize=0;const crateCorpus=rawSearchIndex[crate];searchWords.push(crate);const crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=crateCorpus.q;const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;for(i=0;i<len;++i){lowercasePaths.push({ty:paths[i][0],name:paths[i][1].toLowerCase()});paths[i]={ty:paths[i][0],name:paths[i][1]}}len=itemTypes.length;let lastPath="";for(i=0;i<len;++i){if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase();searchWords.push(word)}else{word="";searchWords.push("")}const row={crate:crate,ty:itemTypes[i],name:itemNames[i],path:itemPaths[i]?itemPaths[i]:lastPath,desc:itemDescs[i],parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]=Object.create(null);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}for(const local_alias of aliases[alias_name]){ALIASES[crate][alias_name].push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom<rect.height){window.scrollBy(0,rect.height)}e.preventDefault()}else if(e.which===37){nextTab(-1);e.preventDefault()}else if(e.which===39){nextTab(1);e.preventDefault()}});searchState.input.addEventListener("keydown",e=>{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const params=searchState.getQueryStringParams();const query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})()
\ No newline at end of file
--- /dev/null
+.setting-line{margin:0.6em 0 0.6em 0.3em;position:relative;}.setting-line .choices{display:flex;flex-wrap:wrap;}.setting-line .radio-line input,.setting-line .toggle input{margin-right:0.3em;height:1.2rem;width:1.2rem;color:inherit;border:1px solid currentColor;outline:none;-webkit-appearance:none;cursor:pointer;}.setting-line .radio-line input{border-radius:50%;}.setting-line .toggle input:checked{content:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">\
+ <path d="M7,25L17,32L33,12" fill="none" stroke="black" stroke-width="5"/>\
+ <path d="M7,23L17,30L33,10" fill="none" stroke="white" stroke-width="5"/></svg>');}.setting-line .radio-line input+span,.setting-line .toggle span{padding-bottom:1px;}.radio-line .setting-name{width:100%;}.radio-line .choice{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:flex;align-items:center;cursor:pointer;}.radio-line .choice+.choice{margin-left:0.5em;}.toggle{position:relative;width:100%;margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;}#settings .setting-line{margin:1.2em 0.6em;}.setting-line .radio-line input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-line .toggle input:checked{background-color:var(--settings-input-color);}.setting-line .radio-line input:focus,.setting-line .toggle input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-line .radio-line input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-line .radio-line input:hover,.setting-line .toggle input:hover{border-color:var(--settings-input-color) !important;}
\ No newline at end of file
--- /dev/null
+"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateSystemTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme").parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(settingsElement.getElementsByClassName("select-wrapper"),elem=>{const select=elem.getElementsByTagName("select")[0];const settingId=select.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){if(useSystem!=="false"){settingValue="system preference"}else{settingValue="light"}}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){output+="<div class=\"setting-line\">";const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\
+<div class="radio-line" id="${js_data_name}">
+ <span class="setting-name">${setting_name}</span>
+<div class="choices">`;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\
+<label for="${full}" class="choice">
+ <input type="radio" name="${js_data_name}"
+ id="${full}" value="${option}"${checked}>
+ <span>${option}</span>
+</label>`});output+="</div></div>"}else{const checked=setting["default"]===true?" checked":"";output+=`\
+<label class="toggle">\
+ <input type="checkbox" id="${js_data_name}"${checked}>\
+ <span class="label">${setting_name}</span>\
+</label>`}output+="</div>"}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`<div class="settings">${buildSettingsPageSections(settings)}</div>`;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display=""}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=function(event){event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=function(event){if(elemIsInParent(event.target,settingsMenu)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})()
\ No newline at end of file
--- /dev/null
+"use strict";(function(){const rootPath=document.getElementById("rustdoc-vars").attributes["data-root-path"].value;const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;function closeSidebarIfMobile(){if(window.innerWidth<window.RUSTDOC_MOBILE_BREAKPOINT){updateLocalStorage("source-sidebar-show","false")}}function createDirEntry(elem,parent,fullPath,hasFoundFile){const dirEntry=document.createElement("details");const summary=document.createElement("summary");dirEntry.className="dir-entry";fullPath+=elem[NAME_OFFSET]+"/";summary.innerText=elem[NAME_OFFSET];dirEntry.appendChild(summary);const folders=document.createElement("div");folders.className="folders";if(elem[DIRS_OFFSET]){for(const dir of elem[DIRS_OFFSET]){if(createDirEntry(dir,folders,fullPath,false)){dirEntry.open=true;hasFoundFile=true}}}dirEntry.appendChild(folders);const files=document.createElement("div");files.className="files";if(elem[FILES_OFFSET]){for(const file_text of elem[FILES_OFFSET]){const file=document.createElement("a");file.innerText=file_text;file.href=rootPath+"src/"+fullPath+file_text+".html";file.addEventListener("click",closeSidebarIfMobile);const w=window.location.href.split("#")[0];if(!hasFoundFile&&w===file.href){file.className="selected";dirEntry.open=true;hasFoundFile=true}files.appendChild(file)}}dirEntry.appendChild(files);parent.appendChild(dirEntry);return hasFoundFile}function toggleSidebar(){const child=this.parentNode.children[0];if(child.innerText===">"){window.rustdocMobileScrollLock();addClass(document.documentElement,"source-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{window.rustdocMobileScrollUnlock();removeClass(document.documentElement,"source-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="source-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(key=>{sourcesIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to<from){const tmp=to;to=from;from=tmp}let elem=document.getElementById(from);if(!elem){return}const x=document.getElementById(from);if(x){x.scrollIntoView()}onEachLazy(document.getElementsByClassName("src-line-numbers"),e=>{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSourceHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSourceHighlight)});highlightSourceLines();window.createSourceSidebar=createSourceSidebar})()
\ No newline at end of file
--- /dev/null
+"use strict";const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");window.RUSTDOC_MOBILE_BREAKPOINT=700;const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}const dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current!==null){return current}if(settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return null}const localStoredTheme=getSettingValue("theme");const savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){if(reversed){const length=arr.length;for(let i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}function switchTheme(styleElem,mainStyleElem,newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),el=>{savedHref.push(el.href)})}const newHref=savedHref.find(url=>{const m=url.match(/static\.files\/(.*)-[a-f0-9]{16}\.css$/);if(m&&m[1]===newThemeName){return true}const m2=url.match(/\/([^/]*)\.css$/);if(m2&&m2[1].startsWith(newThemeName)){return true}});if(newHref&&newHref!==styleElem.href){styleElem.href=newHref}}function useSystemTheme(value){if(value===undefined){value=true}updateLocalStorage("use-system-theme",value);const toggle=document.getElementById("use-system-theme");if(toggle&&toggle instanceof HTMLInputElement){toggle.checked=value}}const updateSystemTheme=(function(){if(!window.matchMedia){return()=>{const cssTheme=getComputedStyle(document.documentElement).getPropertyValue("content");switchTheme(window.currentTheme,window.mainTheme,JSON.parse(cssTheme)||"light",true)}}const mql=window.matchMedia("(prefers-color-scheme: dark)");function handlePreferenceChange(mql){const use=theme=>{switchTheme(window.currentTheme,window.mainTheme,theme,true)};if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";if(mql.matches){use(darkTheme)}else{use(lightTheme)}}else{use(getSettingValue("theme"))}}mql.addListener(handlePreferenceChange);return()=>{handlePreferenceChange(mql)}})();function switchToSavedTheme(){switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)}if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchToSavedTheme()}if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"source-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(switchToSavedTheme,0)}})
\ No newline at end of file
--- /dev/null
+<svg width="17" height="17" shape-rendering="crispEdges" stroke="#000" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 2.5H2.5v12H5m7-12h2.5v12H12M5 8.5h7"/></svg>
\ No newline at end of file
--- /dev/null
+<svg width="17" height="17" shape-rendering="crispEdges" stroke="#000" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 2.5H2.5v12H5m7-12h2.5v12H12M5 8.5h7M8.5 12V8.625v0V5"/></svg>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Capa_1" width="27.434" height="29.5" enable-background="new 0 0 27.434 29.5" version="1.1" viewBox="0 0 27.434 29.5" xml:space="preserve"><g><path d="M27.315,18.389c-0.165-0.604-0.509-1.113-0.981-1.459c-0.042-0.144-0.083-0.429-0.015-0.761l0.037-0.177v-0.182V14.8 c0-1.247-0.006-1.277-0.048-1.472c-0.076-0.354-0.035-0.653,0.007-0.803c0.477-0.346,0.828-0.861,0.996-1.476 c0.261-0.956,0.076-2.091-0.508-3.114l-0.591-1.032c-0.746-1.307-1.965-2.119-3.182-2.119c-0.378,0-0.75,0.081-1.085,0.235 c-0.198-0.025-0.554-0.15-0.855-0.389l-0.103-0.082l-0.114-0.065l-1.857-1.067L18.92,3.36l-0.105-0.044 c-0.376-0.154-0.658-0.41-0.768-0.556C17.918,1.172,16.349,0,14.296,0H13.14c-2.043,0-3.608,1.154-3.749,2.721 C9.277,2.862,8.999,3.104,8.633,3.25l-0.1,0.039L8.439,3.341L6.495,4.406L6.363,4.479L6.245,4.573 C5.936,4.82,5.596,4.944,5.416,4.977c-0.314-0.139-0.66-0.21-1.011-0.21c-1.198,0-2.411,0.819-3.165,2.139L0.65,7.938 c-0.412,0.72-0.642,1.521-0.644,2.258c-0.003,0.952,0.362,1.756,1.013,2.256c0.034,0.155,0.061,0.448-0.016,0.786 c-0.038,0.168-0.062,0.28-0.062,1.563c0,1.148,0,1.148,0.015,1.262l0.009,0.073l0.017,0.073c0.073,0.346,0.045,0.643,0.011,0.802 C0.348,17.512-0.01,18.314,0,19.268c0.008,0.729,0.238,1.523,0.648,2.242l0.589,1.031c0.761,1.331,1.967,2.159,3.15,2.159 c0.324,0,0.645-0.064,0.938-0.187c0.167,0.038,0.492,0.156,0.813,0.416l0.11,0.088l0.124,0.07l2.045,1.156l0.102,0.057l0.107,0.043 c0.364,0.147,0.646,0.381,0.766,0.521c0.164,1.52,1.719,2.634,3.745,2.634h1.155c2.037,0,3.598-1.134,3.747-2.675 c0.117-0.145,0.401-0.393,0.774-0.549l0.111-0.047l0.105-0.062l1.96-1.159l0.105-0.062l0.097-0.075 c0.309-0.246,0.651-0.371,0.832-0.402c0.313,0.138,0.662,0.212,1.016,0.212c1.199,0,2.412-0.82,3.166-2.139l0.59-1.032 C27.387,20.48,27.575,19.342,27.315,18.389z M25.274,20.635l-0.59,1.032c-0.438,0.765-1.104,1.251-1.639,1.251 c-0.133,0-0.258-0.029-0.369-0.094c-0.15-0.086-0.346-0.127-0.566-0.127c-0.596,0-1.383,0.295-2.01,0.796l-1.96,1.157 c-1.016,0.425-1.846,1.291-1.846,1.929s-0.898,1.159-1.998,1.159H13.14c-1.1,0-1.998-0.514-1.998-1.141s-0.834-1.477-1.854-1.888 l-2.046-1.157c-0.636-0.511-1.425-0.814-2.006-0.814c-0.202,0-0.379,0.037-0.516,0.115c-0.101,0.057-0.214,0.084-0.333,0.084 c-0.518,0-1.179-0.498-1.62-1.271l-0.591-1.032c-0.545-0.954-0.556-1.983-0.024-2.286c0.532-0.305,0.78-1.432,0.551-2.506 c0,0,0-0.003,0-1.042c0-1.088,0.021-1.18,0.021-1.18c0.238-1.072-0.01-2.203-0.552-2.513C1.631,10.8,1.634,9.765,2.18,8.812 L2.769,7.78c0.438-0.766,1.103-1.251,1.636-1.251c0.131,0,0.255,0.029,0.365,0.092C4.92,6.707,5.114,6.747,5.334,6.747 c0.596,0,1.38-0.296,2.007-0.795l1.944-1.065c1.021-0.407,1.856-1.277,1.856-1.933c0-0.656,0.898-1.192,1.998-1.192h1.156V1.761 c1.1,0,1.998,0.545,1.998,1.211c0,0.667,0.832,1.554,1.849,1.973L20,6.013c0.618,0.489,1.401,0.775,2.012,0.775 c0.24,0,0.454-0.045,0.62-0.139c0.122-0.069,0.259-0.102,0.403-0.102c0.551,0,1.221,0.476,1.653,1.231l0.59,1.032 c0.544,0.953,0.518,2.004-0.062,2.334c-0.577,0.331-0.859,1.48-0.627,2.554c0,0,0.01,0.042,0.01,1.103c0,1.012,0,1.012,0,1.012 c-0.218,1.049,0.068,2.174,0.636,2.498C25.802,18.635,25.819,19.68,25.274,20.635z"/><path d="M13.61,7.611c-3.913,0-7.084,3.173-7.084,7.085c0,3.914,3.171,7.085,7.084,7.085s7.085-3.172,7.085-7.085 C20.695,10.784,17.523,7.611,13.61,7.611z M13.61,20.02c-2.936,0-5.323-2.388-5.323-5.323c0-2.935,2.388-5.323,5.323-5.323 s5.324,2.388,5.324,5.323C18.934,17.632,16.546,20.02,13.61,20.02z"/><path d="M13.682,9.908c-2.602,0-4.718,2.116-4.718,4.718c0,2.601,2.116,4.716,4.718,4.716c2.601,0,4.717-2.115,4.717-4.716 C18.399,12.024,16.283,9.908,13.682,9.908z M13.682,17.581c-1.633,0-2.956-1.323-2.956-2.955s1.323-2.956,2.956-2.956 c1.632,0,2.956,1.324,2.956,2.956S15.314,17.581,13.682,17.581z"/></g></svg>
\ No newline at end of file
+++ /dev/null
-var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue('rustdoc-'+settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i<length;++i){if(func(arr[i])){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function updateLocalStorage(name,value){try{window.localStorage.setItem(name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem(name)}catch(e){return null}}function switchTheme(styleElem,mainStyleElem,newTheme,saveTheme){var newHref=mainStyleElem.href.replace(/\/rustdoc([^/]*)\.css/,"/"+newTheme+"$1"+".css");if(saveTheme){updateLocalStorage("rustdoc-theme",newTheme)}if(styleElem.href===newHref){return}var found=false;if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),function(el){savedHref.push(el.href)})}onEach(savedHref,function(el){if(el===newHref){found=true;return true}});if(found){styleElem.href=newHref}}function useSystemTheme(value){if(value===undefined){value=true}updateLocalStorage("rustdoc-use-system-theme",value);var toggle=document.getElementById("use-system-theme");if(toggle&&toggle instanceof HTMLInputElement){toggle.checked=value}}var updateSystemTheme=(function(){if(!window.matchMedia){return function(){var cssTheme=getComputedStyle(document.documentElement).getPropertyValue('content');switchTheme(window.currentTheme,window.mainTheme,JSON.parse(cssTheme)||"light",true)}}var mql=window.matchMedia("(prefers-color-scheme: dark)");function handlePreferenceChange(mql){let use=function(theme){switchTheme(window.currentTheme,window.mainTheme,theme,true)};if(getSettingValue("use-system-theme")!=="false"){var lightTheme=getSettingValue("preferred-light-theme")||"light";var darkTheme=getSettingValue("preferred-dark-theme")||"dark";if(mql.matches){use(darkTheme)}else{use(lightTheme)}}else{use(getSettingValue("theme"))}}mql.addListener(handlePreferenceChange);return function(){handlePreferenceChange(mql)}})();function switchToSavedTheme(){switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)}if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchToSavedTheme()}window.addEventListener("pageshow",function(ev){if(ev.persisted){setTimeout(switchToSavedTheme,0)}})
\ No newline at end of file
+++ /dev/null
-<svg width="17" height="17" shape-rendering="crispEdges" stroke="#000" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 2.5H2.5v12H5m7-12h2.5v12H12M5 8.5h7"/></svg>
\ No newline at end of file
+++ /dev/null
-<svg width="17" height="17" shape-rendering="crispEdges" stroke="#000" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 2.5H2.5v12H5m7-12h2.5v12H12M5 8.5h7M8.5 12V8.625v0V5"/></svg>
\ No newline at end of file
+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Capa_1" width="27.434" height="29.5" enable-background="new 0 0 27.434 29.5" version="1.1" viewBox="0 0 27.434 29.5" xml:space="preserve"><g><path d="M27.315,18.389c-0.165-0.604-0.509-1.113-0.981-1.459c-0.042-0.144-0.083-0.429-0.015-0.761l0.037-0.177v-0.182V14.8 c0-1.247-0.006-1.277-0.048-1.472c-0.076-0.354-0.035-0.653,0.007-0.803c0.477-0.346,0.828-0.861,0.996-1.476 c0.261-0.956,0.076-2.091-0.508-3.114l-0.591-1.032c-0.746-1.307-1.965-2.119-3.182-2.119c-0.378,0-0.75,0.081-1.085,0.235 c-0.198-0.025-0.554-0.15-0.855-0.389l-0.103-0.082l-0.114-0.065l-1.857-1.067L18.92,3.36l-0.105-0.044 c-0.376-0.154-0.658-0.41-0.768-0.556C17.918,1.172,16.349,0,14.296,0H13.14c-2.043,0-3.608,1.154-3.749,2.721 C9.277,2.862,8.999,3.104,8.633,3.25l-0.1,0.039L8.439,3.341L6.495,4.406L6.363,4.479L6.245,4.573 C5.936,4.82,5.596,4.944,5.416,4.977c-0.314-0.139-0.66-0.21-1.011-0.21c-1.198,0-2.411,0.819-3.165,2.139L0.65,7.938 c-0.412,0.72-0.642,1.521-0.644,2.258c-0.003,0.952,0.362,1.756,1.013,2.256c0.034,0.155,0.061,0.448-0.016,0.786 c-0.038,0.168-0.062,0.28-0.062,1.563c0,1.148,0,1.148,0.015,1.262l0.009,0.073l0.017,0.073c0.073,0.346,0.045,0.643,0.011,0.802 C0.348,17.512-0.01,18.314,0,19.268c0.008,0.729,0.238,1.523,0.648,2.242l0.589,1.031c0.761,1.331,1.967,2.159,3.15,2.159 c0.324,0,0.645-0.064,0.938-0.187c0.167,0.038,0.492,0.156,0.813,0.416l0.11,0.088l0.124,0.07l2.045,1.156l0.102,0.057l0.107,0.043 c0.364,0.147,0.646,0.381,0.766,0.521c0.164,1.52,1.719,2.634,3.745,2.634h1.155c2.037,0,3.598-1.134,3.747-2.675 c0.117-0.145,0.401-0.393,0.774-0.549l0.111-0.047l0.105-0.062l1.96-1.159l0.105-0.062l0.097-0.075 c0.309-0.246,0.651-0.371,0.832-0.402c0.313,0.138,0.662,0.212,1.016,0.212c1.199,0,2.412-0.82,3.166-2.139l0.59-1.032 C27.387,20.48,27.575,19.342,27.315,18.389z M25.274,20.635l-0.59,1.032c-0.438,0.765-1.104,1.251-1.639,1.251 c-0.133,0-0.258-0.029-0.369-0.094c-0.15-0.086-0.346-0.127-0.566-0.127c-0.596,0-1.383,0.295-2.01,0.796l-1.96,1.157 c-1.016,0.425-1.846,1.291-1.846,1.929s-0.898,1.159-1.998,1.159H13.14c-1.1,0-1.998-0.514-1.998-1.141s-0.834-1.477-1.854-1.888 l-2.046-1.157c-0.636-0.511-1.425-0.814-2.006-0.814c-0.202,0-0.379,0.037-0.516,0.115c-0.101,0.057-0.214,0.084-0.333,0.084 c-0.518,0-1.179-0.498-1.62-1.271l-0.591-1.032c-0.545-0.954-0.556-1.983-0.024-2.286c0.532-0.305,0.78-1.432,0.551-2.506 c0,0,0-0.003,0-1.042c0-1.088,0.021-1.18,0.021-1.18c0.238-1.072-0.01-2.203-0.552-2.513C1.631,10.8,1.634,9.765,2.18,8.812 L2.769,7.78c0.438-0.766,1.103-1.251,1.636-1.251c0.131,0,0.255,0.029,0.365,0.092C4.92,6.707,5.114,6.747,5.334,6.747 c0.596,0,1.38-0.296,2.007-0.795l1.944-1.065c1.021-0.407,1.856-1.277,1.856-1.933c0-0.656,0.898-1.192,1.998-1.192h1.156V1.761 c1.1,0,1.998,0.545,1.998,1.211c0,0.667,0.832,1.554,1.849,1.973L20,6.013c0.618,0.489,1.401,0.775,2.012,0.775 c0.24,0,0.454-0.045,0.62-0.139c0.122-0.069,0.259-0.102,0.403-0.102c0.551,0,1.221,0.476,1.653,1.231l0.59,1.032 c0.544,0.953,0.518,2.004-0.062,2.334c-0.577,0.331-0.859,1.48-0.627,2.554c0,0,0.01,0.042,0.01,1.103c0,1.012,0,1.012,0,1.012 c-0.218,1.049,0.068,2.174,0.636,2.498C25.802,18.635,25.819,19.68,25.274,20.635z"/><path d="M13.61,7.611c-3.913,0-7.084,3.173-7.084,7.085c0,3.914,3.171,7.085,7.084,7.085s7.085-3.172,7.085-7.085 C20.695,10.784,17.523,7.611,13.61,7.611z M13.61,20.02c-2.936,0-5.323-2.388-5.323-5.323c0-2.935,2.388-5.323,5.323-5.323 s5.324,2.388,5.324,5.323C18.934,17.632,16.546,20.02,13.61,20.02z"/><path d="M13.682,9.908c-2.602,0-4.718,2.116-4.718,4.718c0,2.601,2.116,4.716,4.718,4.716c2.601,0,4.717-2.115,4.717-4.716 C18.399,12.024,16.283,9.908,13.682,9.908z M13.682,17.581c-1.633,0-2.956-1.323-2.956-2.955s1.323-2.956,2.956-2.956 c1.632,0,2.956,1.324,2.956,2.956S15.314,17.581,13.682,17.581z"/></g></svg>
\ No newline at end of file